DEV Community

Cover image for Know Your Redis Server Information/Status Simply via HTTP API
XD-DENG
XD-DENG

Posted on

Know Your Redis Server Information/Status Simply via HTTP API

Redis CLI provides a nice command "INFO" to allow users to understand the information and statistics about the server. The information it provides include

  • general information about the Redis server
  • client connections
  • memory consumption
  • CPU consumption
  • etc.

Now with Rediseen (as from version 2.1.0), you can expose & read these information much more conveniently, simply via HTTP API.

Rediseen (https://github.com/XD-DENG/rediseen) is a small software written with Golang. The main feature of it is to help start a REST-like API so that clients can query records in your Redis database in a simple and secure way. As from version 2.1.0, it also allows you to expose and query the Redis database information and statistics so that you can use it as a "connector" between Redis database and any monitoring mechanism.

Install & Start the Service

brew install XD-DENG/rediseen/rediseen

export REDISEEN_REDIS_URI="redis://:@localhost:6379"
export REDISEEN_DB_EXPOSED=0
export REDISEEN_KEY_PATTERN_EXPOSED="key pattern you would like to expose"

rediseen start
Enter fullscreen mode Exit fullscreen mode

(REDISEEN_KEY_PATTERN_EXPOSED is intended to help you specify the Redis keys you expose to clients (that's what Rediseen is mainly designed for). If you prefer to run Rediseen ONLY for exposing results of INFO command, simply put a value which doesn't match with any of your keys in Redis.)

Get the Redis Server Information/Statistics

Now you're ready to go!

curl -s http://localhost:8000/info

{
  "CPU": {
    "used_cpu_sys": "0.434104",
    ... ...
  },
  "Clients": {
    ... ...
  },
  "Cluster": {
    ... ...
  },
  "Commandstats": {
    ... ...
  },
  "Keyspace": {
    ... ...
  },
  "Memory": {
    ... ...
  },
  "Persistence": {
    ... ...
  },
  "Replication": {
    ... ...
  },
  "Server": {
    "arch_bits": "64",
    "executable": "/Users/XD/Downloads/redis-stable/src/./redis-server",
    "gcc_version": "4.2.1",
    ... ...
  },
  "Stats": {
    ... ...
  }
}

Enter fullscreen mode Exit fullscreen mode

You can also specify which exact section you want, so the network I/O will be much smaller. For example, if you are only interested in CPU consumption, you can specify "cpu" in the URL.

curl -s http://localhost:8000/info/cpu

{
  "CPU": {
    "used_cpu_sys": "0.422091",
    "used_cpu_sys_children": "0.000000",
    "used_cpu_user": "0.255020",
    "used_cpu_user_children": "0.000000"
  }
}

Enter fullscreen mode Exit fullscreen mode

Authentication

Rediseen also supports API Key authentication. Simply run the line below before your start Rediseen service.

export REDISEEN_API_KEY="demo_key"
Enter fullscreen mode Exit fullscreen mode

Once it is set, client will have to add the API key as X-API-KEY in their HTTP header in order to access the service, otherwise 401 error (Unauthorized) will be returned.

# REJECTED: No X-API-KEY is given in HTTP header
curl -s http://localhost:8000/info
{
  "error": "unauthorized"
}

# REJECTED: Wrong X-API-KEY is given in HTTP header
curl -s -H "X-API-KEY: wrong_key" http://localhost:8000/info
{
  "error": "unauthorized"
}

# ACCEPTED: Correct X-API-KEY is given in HTTP header
curl -s -H "X-API-KEY: demo_key" http://localhost:8000/info/server

{
  "Server": {
    "arch_bits": "64",
    "atomicvar_api": "atomic-builtin",
    "configured_hz": "10",
    "gcc_version": "4.2.1",
    ... ...
  }
}
Enter fullscreen mode Exit fullscreen mode

Top comments (0)