---
title: Telegraf Documentation
description: Telegraf plugin for collecting metrics from Redis
url: https://docs.influxdata.com/telegraf/v1/input-plugins/redis/
estimated_tokens: 3569
product: Telegraf
version: v1
---

-   Telegraf v0.1.1+

# Redis Input Plugin

This plugin gathers metrics from [Redis](https://redis.io/) servers.

**Introduced in:** Telegraf v0.1.1 **Tags:** server **OS support:** all

## Global configuration options

Plugins support additional global and plugin configuration settings for tasks such as modifying metrics, tags, and fields, creating aliases, and configuring plugin ordering. See [CONFIGURATION.md](/telegraf/v1/configuration/#plugins) for more details.

## Configuration

```toml
# Read metrics from one or many redis servers
[[inputs.redis]]
  ## specify servers via a url matching:
  ##  [protocol://]()@address[:port]
  ##  e.g.
  ##    tcp://localhost:6379
  ##    tcp://username:password@192.168.99.100
  ##    unix:///var/run/redis.sock
  ##
  ## If no servers are specified, then localhost is used as the host.
  ## If no port is specified, 6379 is used
  servers = ["tcp://localhost:6379"]

  ## Optional. Specify redis commands to retrieve values
  # [[inputs.redis.commands]]
  #   # The command to run where each argument is a separate element
  #   command = ["get", "sample-key"]
  #   # The field to store the result in
  #   field = "sample-key-value"
  #   # The type of the result
  #   # Can be "string", "integer", or "float"
  #   type = "string"

  ## Specify username and password for ACL auth (Redis 6.0+). You can add this
  ## to the server URI above or specify it here. The values here take
  ## precedence.
  # username = ""
  # password = ""

  ## Optional TLS Config
  ## Check tls/config.go ClientConfig for more options
  # tls_enable = true
  # tls_ca = "/etc/telegraf/ca.pem"
  # tls_cert = "/etc/telegraf/cert.pem"
  # tls_key = "/etc/telegraf/key.pem"
  ## Use TLS but skip chain & host verification
  # insecure_skip_verify = true
```

## Metrics

The plugin gathers the results of the [INFO](https://redis.io/commands/info) redis command. There are two separate measurements: *redis* and *redis\_keyspace*, the latter is used for gathering database related statistics.

Additionally the plugin also calculates the hit/miss ratio (keyspace\_hitrate) and the elapsed time since the last rdb save (rdb\_last\_save\_time\_elapsed).

-   redis
    
    -   keyspace\_hitrate(float, number)
        
    -   rdb\_last\_save\_time\_elapsed(int, seconds)
        
        **Server**
        
    -   uptime(int, seconds)
        
    -   lru\_clock(int, number)
        
    -   redis\_version(string)
        
        **Clients**
        
    -   clients(int, number)
        
    -   client\_longest\_output\_list(int, number)
        
    -   client\_biggest\_input\_buf(int, number)
        
    -   blocked\_clients(int, number)
        
        **Memory**
        
    -   used\_memory(int, bytes)
        
    -   used\_memory\_rss(int, bytes)
        
    -   used\_memory\_peak(int, bytes)
        
    -   total\_system\_memory(int, bytes)
        
    -   used\_memory\_lua(int, bytes)
        
    -   maxmemory(int, bytes)
        
    -   maxmemory\_policy(string)
        
    -   mem\_fragmentation\_ratio(float, number)
        
        **Persistence**
        
    -   loading(int,flag)
        
    -   rdb\_changes\_since\_last\_save(int, number)
        
    -   rdb\_bgsave\_in\_progress(int, flag)
        
    -   rdb\_last\_save\_time(int, seconds)
        
    -   rdb\_last\_bgsave\_status(string)
        
    -   rdb\_last\_bgsave\_time\_sec(int, seconds)
        
    -   rdb\_current\_bgsave\_time\_sec(int, seconds)
        
    -   aof\_enabled(int, flag)
        
    -   aof\_rewrite\_in\_progress(int, flag)
        
    -   aof\_rewrite\_scheduled(int, flag)
        
    -   aof\_last\_rewrite\_time\_sec(int, seconds)
        
    -   aof\_current\_rewrite\_time\_sec(int, seconds)
        
    -   aof\_last\_bgrewrite\_status(string)
        
    -   aof\_last\_write\_status(string)
        
        **Stats**
        
    -   total\_connections\_received(int, number)
        
    -   total\_commands\_processed(int, number)
        
    -   instantaneous\_ops\_per\_sec(int, number)
        
    -   total\_net\_input\_bytes(int, bytes)
        
    -   total\_net\_output\_bytes(int, bytes)
        
    -   instantaneous\_input\_kbps(float, KB/sec)
        
    -   instantaneous\_output\_kbps(float, KB/sec)
        
    -   rejected\_connections(int, number)
        
    -   sync\_full(int, number)
        
    -   sync\_partial\_ok(int, number)
        
    -   sync\_partial\_err(int, number)
        
    -   expired\_keys(int, number)
        
    -   evicted\_keys(int, number)
        
    -   keyspace\_hits(int, number)
        
    -   keyspace\_misses(int, number)
        
    -   pubsub\_channels(int, number)
        
    -   pubsub\_patterns(int, number)
        
    -   latest\_fork\_usec(int, microseconds)
        
    -   migrate\_cached\_sockets(int, number)
        
        **Replication**
        
    -   connected\_slaves(int, number)
        
    -   master\_link\_down\_since\_seconds(int, number)
        
    -   master\_link\_status(string)
        
    -   master\_repl\_offset(int, number)
        
    -   second\_repl\_offset(int, number)
        
    -   repl\_backlog\_active(int, number)
        
    -   repl\_backlog\_size(int, bytes)
        
    -   repl\_backlog\_first\_byte\_offset(int, number)
        
    -   repl\_backlog\_histlen(int, bytes)
        
        **CPU**
        
    -   used\_cpu\_sys(float, number)
        
    -   used\_cpu\_user(float, number)
        
    -   used\_cpu\_sys\_children(float, number)
        
    -   used\_cpu\_user\_children(float, number)
        
        **Cluster**
        
    -   cluster\_enabled(int, flag)
        
-   redis\_keyspace
    
    -   keys(int, number)
    -   expires(int, number)
    -   avg\_ttl(int, number)
-   redis\_cmdstat Every Redis used command could have the following fields:
    
    -   calls(int, number)
    -   failed\_calls(int, number)
    -   rejected\_calls(int, number)
    -   usec(int, mircoseconds)
    -   usec\_per\_call(float, microseconds)
-   redis\_latency\_percentiles\_usec
    
    -   fields:
        -   p50(float, microseconds)
        -   p99(float, microseconds)
        -   p99.9(float, microseconds)
-   redis\_replication
    
    -   tags:
        
        -   replication\_role
        -   replica\_ip
        -   replica\_port
        -   state (either “online”, “wait\_bgsave”, or “send\_bulk”)
    -   fields:
        
        -   lag(int, number)
        -   offset(int, number)
-   redis\_errorstat
    
    -   tags:
        -   err
    -   fields:
        -   total (int, number)

All measurements have the following tags:

-   port
-   server
-   replication\_role

The `redis_keyspace` measurement has an additional `database` tag.

The `redis_cmdstat` and `redis_latency_percentiles_usec` measurements have an additional `command` tag.

## Example Output

The following configuration

```toml
[[inputs.redis]]
  ## specify servers via a url matching:
  ##  [protocol://]()@address[:port]
  ##  e.g.
  ##    tcp://localhost:6379
  ##    tcp://:password@192.168.99.100
  ##
  ## If no servers are specified, then localhost is used as the host.
  ## If no port is specified, 6379 is used
  servers = ["tcp://localhost:6379"]
```

produces these metrics:

```text
redis,server=localhost,port=6379,replication_role=master,host=host keyspace_hitrate=1,clients=2i,blocked_clients=0i,instantaneous_input_kbps=0,sync_full=0i,pubsub_channels=0i,pubsub_patterns=0i,total_net_output_bytes=6659253i,used_memory=842448i,total_system_memory=8351916032i,aof_current_rewrite_time_sec=-1i,rdb_changes_since_last_save=0i,sync_partial_err=0i,latest_fork_usec=508i,instantaneous_output_kbps=0,expired_keys=0i,used_memory_peak=843416i,aof_rewrite_in_progress=0i,aof_last_bgrewrite_status="ok",migrate_cached_sockets=0i,connected_slaves=0i,maxmemory_policy="noeviction",aof_rewrite_scheduled=0i,total_net_input_bytes=3125i,used_memory_rss=9564160i,repl_backlog_histlen=0i,rdb_last_bgsave_status="ok",aof_last_rewrite_time_sec=-1i,keyspace_misses=0i,client_biggest_input_buf=5i,used_cpu_user=1.33,maxmemory=0i,rdb_current_bgsave_time_sec=-1i,total_commands_processed=271i,repl_backlog_size=1048576i,used_cpu_sys=3,uptime=2822i,lru_clock=16706281i,used_memory_lua=37888i,rejected_connections=0i,sync_partial_ok=0i,evicted_keys=0i,rdb_last_save_time_elapsed=1922i,rdb_last_save_time=1493099368i,instantaneous_ops_per_sec=0i,used_cpu_user_children=0,client_longest_output_list=0i,master_repl_offset=0i,repl_backlog_active=0i,keyspace_hits=2i,used_cpu_sys_children=0,cluster_enabled=0i,rdb_last_bgsave_time_sec=0i,aof_last_write_status="ok",total_connections_received=263i,aof_enabled=0i,repl_backlog_first_byte_offset=0i,mem_fragmentation_ratio=11.35,loading=0i,rdb_bgsave_in_progress=0i 1493101290000000000
redis_keyspace,database=db1,host=host,server=localhost,port=6379,replication_role=master keys=1i,expires=0i,avg_ttl=0i 1493101350000000000
redis_cmdstat,command=publish,host=host,port=6379,replication_role=master,server=localhost calls=569514i,failed_calls=0i,rejected_calls=0i,usec=9916334i,usec_per_call=17.41 1559227136000000000
redis_latency_percentiles_usec,command=zadd,host=host,port=6379,replication_role=master,server=localhost p50=9.023,p99=28.031,p99.9=43.007 1559227136000000000
redis_errorstat,err=MOVED,host=host,port=6379,replication_role=master,server=localhost total=4284 1691119309000000000
```

#### Related

-   [Configure plugins](/telegraf/v1/configure_plugins/)
-   [Redis Plugin Source](https://github.com/influxdata/telegraf/tree/v1.38.4/plugins/inputs/redis/README.md)
