README ¶
Redis Input Plugin
The Redis input plugin gathers metrics from one or many Redis servers.
Global configuration options
In addition to the plugin-specific configuration settings, plugins support additional global and plugin configuration settings. These settings are used to modify metrics, tags, and field or create aliases and configure ordering, etc. See the CONFIGURATION.md for more details.
Configuration
# Read metrics from one or many redis servers
[[inputs.redis]]
## specify servers via a url matching:
## [protocol://][:password]@address[:port]
## e.g.
## tcp://localhost:6379
## tcp://: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 server password
# password = "s#cr@t%"
## specify username for ACL auth (Redis 6.0+)
# username = "default"
## Optional TLS Config
# 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 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 will have 3 new fields:
- calls(int, number)
- usec(int, mircoseconds)
- usec_per_call(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)
-
Tags
-
All measurements have the following tags:
- port
- server
- replication_role
-
The redis_keyspace measurement has an additional database tag:
- database
-
The redis_cmdstat measurement has an additional tag:
- command
Example Output
Using this configuration:
[[inputs.redis]]
## specify servers via a url matching:
## [protocol://][:password]@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"]
When run with:
./telegraf --config telegraf.conf --input-filter redis --test
It produces:
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:
redis_keyspace,database=db1,host=host,server=localhost,port=6379,replication_role=master keys=1i,expires=0i,avg_ttl=0i 1493101350000000000
redis_command:
redis_cmdstat,command=publish,host=host,port=6379,replication_role=master,server=localhost calls=68113i,usec=325146i,usec_per_call=4.77 1559227136000000000
Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
var Tracking = map[string]string{
"uptime_in_seconds": "uptime",
"connected_clients": "clients",
"role": "replication_role",
}
Functions ¶
This section is empty.
Types ¶
type Redis ¶
type Redis struct { Commands []*RedisCommand Servers []string Username string Password string tls.ClientConfig Log telegraf.Logger `toml:"-"` // contains filtered or unexported fields }
func (*Redis) Gather ¶
func (r *Redis) Gather(acc telegraf.Accumulator) error
Reads stats from all configured servers accumulates stats. Returns one of the errors encountered while gather stats (if any).
func (*Redis) SampleConfig ¶
type RedisClient ¶ added in v1.14.0
type RedisClient struct {
// contains filtered or unexported fields
}
func (*RedisClient) BaseTags ¶ added in v1.14.0
func (r *RedisClient) BaseTags() map[string]string
func (*RedisClient) Close ¶ added in v1.23.0
func (r *RedisClient) Close() error
func (*RedisClient) Do ¶ added in v1.16.0
func (r *RedisClient) Do(returnType string, args ...interface{}) (interface{}, error)
func (*RedisClient) Info ¶ added in v1.14.0
func (r *RedisClient) Info() *redis.StringCmd
type RedisCommand ¶ added in v1.16.0
type RedisFieldTypes ¶ added in v1.18.0
type RedisFieldTypes struct { ActiveDefragHits int64 `json:"active_defrag_hits"` ActiveDefragKeyHits int64 `json:"active_defrag_key_hits"` ActiveDefragKeyMisses int64 `json:"active_defrag_key_misses"` ActiveDefragMisses int64 `json:"active_defrag_misses"` ActiveDefragRunning int64 `json:"active_defrag_running"` AllocatorActive int64 `json:"allocator_active"` AllocatorAllocated int64 `json:"allocator_allocated"` AllocatorFragBytes float64 `json:"allocator_frag_bytes"` // for historical reasons this was left as float although redis reports it as an int AllocatorFragRatio float64 `json:"allocator_frag_ratio"` AllocatorResident int64 `json:"allocator_resident"` AllocatorRssBytes int64 `json:"allocator_rss_bytes"` AllocatorRssRatio float64 `json:"allocator_rss_ratio"` AofCurrentRewriteTimeSec int64 `json:"aof_current_rewrite_time_sec"` AofEnabled int64 `json:"aof_enabled"` AofLastBgrewriteStatus string `json:"aof_last_bgrewrite_status"` AofLastCowSize int64 `json:"aof_last_cow_size"` AofLastRewriteTimeSec int64 `json:"aof_last_rewrite_time_sec"` AofLastWriteStatus string `json:"aof_last_write_status"` AofRewriteInProgress int64 `json:"aof_rewrite_in_progress"` AofRewriteScheduled int64 `json:"aof_rewrite_scheduled"` BlockedClients int64 `json:"blocked_clients"` ClientRecentMaxInputBuffer int64 `json:"client_recent_max_input_buffer"` ClientRecentMaxOutputBuffer int64 `json:"client_recent_max_output_buffer"` Clients int64 `json:"clients"` ClientsInTimeoutTable int64 `json:"clients_in_timeout_table"` ClusterEnabled int64 `json:"cluster_enabled"` ConnectedSlaves int64 `json:"connected_slaves"` EvictedKeys int64 `json:"evicted_keys"` ExpireCycleCPUMilliseconds int64 `json:"expire_cycle_cpu_milliseconds"` ExpiredKeys int64 `json:"expired_keys"` ExpiredStalePerc float64 `json:"expired_stale_perc"` ExpiredTimeCapReachedCount int64 `json:"expired_time_cap_reached_count"` InstantaneousInputKbps float64 `json:"instantaneous_input_kbps"` InstantaneousOpsPerSec int64 `json:"instantaneous_ops_per_sec"` InstantaneousOutputKbps float64 `json:"instantaneous_output_kbps"` IoThreadedReadsProcessed int64 `json:"io_threaded_reads_processed"` IoThreadedWritesProcessed int64 `json:"io_threaded_writes_processed"` KeyspaceHits int64 `json:"keyspace_hits"` KeyspaceMisses int64 `json:"keyspace_misses"` LatestForkUsec int64 `json:"latest_fork_usec"` LazyfreePendingObjects int64 `json:"lazyfree_pending_objects"` Loading int64 `json:"loading"` LruClock int64 `json:"lru_clock"` MasterReplOffset int64 `json:"master_repl_offset"` MaxMemory int64 `json:"maxmemory"` MaxMemoryPolicy string `json:"maxmemory_policy"` MemAofBuffer int64 `json:"mem_aof_buffer"` MemClientsNormal int64 `json:"mem_clients_normal"` MemClientsSlaves int64 `json:"mem_clients_slaves"` MemFragmentationBytes int64 `json:"mem_fragmentation_bytes"` MemFragmentationRatio float64 `json:"mem_fragmentation_ratio"` MemNotCountedForEvict int64 `json:"mem_not_counted_for_evict"` MemReplicationBacklog int64 `json:"mem_replication_backlog"` MigrateCachedSockets int64 `json:"migrate_cached_sockets"` ModuleForkInProgress int64 `json:"module_fork_in_progress"` ModuleForkLastCowSize int64 `json:"module_fork_last_cow_size"` NumberOfCachedScripts int64 `json:"number_of_cached_scripts"` PubsubChannels int64 `json:"pubsub_channels"` PubsubPatterns int64 `json:"pubsub_patterns"` RdbBgsaveInProgress int64 `json:"rdb_bgsave_in_progress"` RdbChangesSinceLastSave int64 `json:"rdb_changes_since_last_save"` RdbCurrentBgsaveTimeSec int64 `json:"rdb_current_bgsave_time_sec"` RdbLastBgsaveStatus string `json:"rdb_last_bgsave_status"` RdbLastBgsaveTimeSec int64 `json:"rdb_last_bgsave_time_sec"` RdbLastCowSize int64 `json:"rdb_last_cow_size"` RdbLastSaveTime int64 `json:"rdb_last_save_time"` RdbLastSaveTimeElapsed int64 `json:"rdb_last_save_time_elapsed"` RedisVersion string `json:"redis_version"` RejectedConnections int64 `json:"rejected_connections"` ReplBacklogActive int64 `json:"repl_backlog_active"` ReplBacklogFirstByteOffset int64 `json:"repl_backlog_first_byte_offset"` ReplBacklogHistlen int64 `json:"repl_backlog_histlen"` ReplBacklogSize int64 `json:"repl_backlog_size"` RssOverheadBytes int64 `json:"rss_overhead_bytes"` RssOverheadRatio float64 `json:"rss_overhead_ratio"` SecondReplOffset int64 `json:"second_repl_offset"` SlaveExpiresTrackedKeys int64 `json:"slave_expires_tracked_keys"` SyncFull int64 `json:"sync_full"` SyncPartialErr int64 `json:"sync_partial_err"` SyncPartialOk int64 `json:"sync_partial_ok"` TotalCommandsProcessed int64 `json:"total_commands_processed"` TotalConnectionsReceived int64 `json:"total_connections_received"` TotalNetInputBytes int64 `json:"total_net_input_bytes"` TotalNetOutputBytes int64 `json:"total_net_output_bytes"` TotalReadsProcessed int64 `json:"total_reads_processed"` TotalSystemMemory int64 `json:"total_system_memory"` TotalWritesProcessed int64 `json:"total_writes_processed"` TrackingClients int64 `json:"tracking_clients"` TrackingTotalItems int64 `json:"tracking_total_items"` TrackingTotalKeys int64 `json:"tracking_total_keys"` TrackingTotalPrefixes int64 `json:"tracking_total_prefixes"` UnexpectedErrorReplies int64 `json:"unexpected_error_replies"` Uptime int64 `json:"uptime"` UsedCPUSys float64 `json:"used_cpu_sys"` UsedCPUSysChildren float64 `json:"used_cpu_sys_children"` UsedCPUUser float64 `json:"used_cpu_user"` UsedCPUUserChildren float64 `json:"used_cpu_user_children"` UsedMemory int64 `json:"used_memory"` UsedMemoryDataset int64 `json:"used_memory_dataset"` UsedMemoryDatasetPerc float64 `json:"used_memory_dataset_perc"` UsedMemoryLua int64 `json:"used_memory_lua"` UsedMemoryOverhead int64 `json:"used_memory_overhead"` UsedMemoryPeak int64 `json:"used_memory_peak"` UsedMemoryPeakPerc float64 `json:"used_memory_peak_perc"` UsedMemoryRss int64 `json:"used_memory_rss"` UsedMemoryScripts int64 `json:"used_memory_scripts"` UsedMemoryStartup int64 `json:"used_memory_startup"` }
RedisFieldTypes defines the types expected for each of the fields redis reports on