通过监控 Redis info 命令,采集相关信息上报给 open-falcon
version 信息上报给 smartAPI
以 agent 形式运行,提供简单的 http 信息维护接口
视版本和配置不同,采集到的 Metric 可能有所差别。
| Counters | Type | Notes |
|---|---|---|
| aof_current_rewrite_time_sec | GAUGE | 当前AOF重写持续的耗时 |
| aof_enabled | GAUGE | appenonly是否开启,appendonly为yes则为1,no则为0 |
| aof_last_bgrewrite_status | GAUGE | 最近一次AOF重写操作是否成功 |
| aof_last_rewrite_time_sec | GAUGE | 最近一次AOF重写操作耗时 |
| aof_last_write_status | GAUGE | 最近一次AOF写入操作是否成功 |
| aof_rewrite_in_progress | GAUGE | AOF重写是否正在进行 |
| aof_rewrite_scheduled | GAUGE | AOF重写是否被RDB save操作阻塞等待 |
| blocked_clients | GAUGE | 正在等待阻塞命令(BLPOP、BRPOP、BRPOPLPUSH)的客户端的数量 |
| client_biggest_input_buf | GAUGE | 当前客户端连接中,最大输入缓存 |
| client_longest_output_list | GAUGE | 当前客户端连接中,最长的输出列表 |
| cluster_enabled | GAUGE | 是否启用Redis集群模式,cluster_enabled |
| connected_clients | GAUGE | 当前已连接的客户端个数 |
| connected_clients_pct | GAUGE | 已使用的连接数百分比,connected_clients/maxclients |
| connected_slaves | GAUGE | 已连接的Redis从库个数 |
| evicted_keys | COUNTER | 因内存used_memory达到maxmemory后,每秒被驱逐的key个数 |
| expired_keys | COUNTER | 因键过期后,被惰性和主动删除清理key的每秒个数 |
| hz | GAUGE | serverCron执行的频率,默认10,表示100ms执行一次,建议不要大于120 |
| instantaneous_input_kbps | GAUGE | 瞬间的Redis输入网络流量(kbps) |
| instantaneous_ops_per_sec | GAUGE | 瞬间的Redis操作QPS |
| instantaneous_output_kbps | GAUGE | 瞬间的Redis输出网络流量(kbps) |
| keyspace_hit_ratio | GAUGE | 查找键的命中率 |
| keyspace_hits | COUNTER | 查找键命中的次数 |
| keyspace_misses | COUNTER | 查找键未命中的次数 |
| latest_fork_usec | GAUGE | 最近一次fork操作的耗时的微秒数(BGREWRITEAOF,BGSAVE,SYNC等都会触发fork),当并发场景fork耗时过长对服务影响较大 |
| loading | GAUGE | 标志位,是否在载入数据文件 |
| master_repl_offset | GAUGE | master复制的偏移量,除了写入aof外,Redis定期为自动增加 |
| mem_fragmentation_ratio | GAUGE | 内存碎片率,used_memory_rss/used_memory |
| pubsub_channels | GAUGE | 目前被订阅的频道数量 |
| pubsub_patterns | GAUGE | 目前被订阅的模式数量 |
| rdb_bgsave_in_progress | GAUGE | 标志位,记录当前是否在创建RDB快照 |
| rdb_current_bgsave_time_sec | GAUGE | 当前bgsave执行耗时秒数 |
| rdb_last_bgsave_status | GAUGE | 标志位,记录最近一次bgsave操作是否创建成功 |
| rdb_last_bgsave_time_sec | GAUGE | 最近一次bgsave操作耗时秒数 |
| rdb_last_save_time | GAUGE | 最近一次创建RDB快照文件的Unix时间戳 |
| rdb_changes_since_last_save | GAUGE | 从最近一次dump快照后,未被dump的变更次数(和save里变更计数器类似) |
| rejected_connections | COUNTER | 因连接数达到maxclients上限后,被拒绝的连接个数 |
| repl_backlog_active | GAUGE | 标志位,master是否开启了repl_backlog,有效地psync(2.8+) |
| repl_backlog_first_byte_offset | GAUGE | repl_backlog中首字节的复制偏移位 |
| repl_backlog_histlen | GAUGE | repl_backlog当前使用的字节数 |
| repl_backlog_size | GAUGE | repl_backlog的长度(repl-backlog-size),网络环境不稳定的,建议调整大些 |
| sync_full | GAUGE | 累计Master full sync的次数;如果值比较大,说明常常出现全量复制,就得分析原因,或调整repl-backlog-size |
| sync_partial_err | GAUGE | 累计Master pysync 出错失败的次数 |
| sync_partial_ok | GAUGE | 累计Master psync成功的次数 |
| total_commands_processed | COUNTER | 每秒执行的命令数,比较准确的QPS |
| total_connections_received | COUNTER | 每秒新创建的客户端连接数 |
| total_net_input_bytes | COUNTER | Redis每秒网络输入的字节数 |
| total_net_output_bytes | COUNTER | Redis每秒网络输出的字节数 |
| uptime | GAUGE | Redis运行时长的秒数 |
| used_cpu_sys | COUNTER | Redis进程消耗的sys cpu |
| used_cpu_user | COUNTER | Redis进程消耗的user cpu |
| used_memory | GAUGE | 由Redis分配的内存的总量,字节数 |
| used_memory_lua | GAUGE | lua引擎使用的内存总量,字节数;有使用lua脚本的注意监控 |
| used_memory_pct | GAUGE | 最大内存已使用百分比,used_memory/maxmemory; 存储场景无淘汰key注意监控.(如果maxmemory=0表示未设置限制,pct永远为0) |
| used_memory_peak | GAUGE | Redis使用内存的峰值,字节数 |
| used_memory_rss | GAUGE | Redis进程从OS角度分配的物理内存,如key被删除后,malloc不一定把内存归还给OS,但可以Redis进程复用 |
配置文件请参照cfg.example.json,修改该文件名为cfg.json
{
"debug": true,
"hostname": "",
"redis":{
"enabled": true,
"addr": "127.0.0.1:6379",
"password": "",
"db": 0,
"ignore": {
"Redis.loading": true,
"Redis.aof_enabled": true
}
},
"smartAPI": {
"enabled": true,
"url": "http://127.0.0.1/api/sevice/version"
},
"transfer": {
"enabled": true,
"addr": "127.0.0.1:8433",
"interval": 60,
"timeout": 1000
},
"http": {
"enabled": true,
"listen": ":1990"
}
}
curl http://127.0.0.1:1990/health
正常则返回 ok
curl http://127.0.0.1:1990/version
返回版本
curl http://127.0.0.1:1990/workdir
返回工作目录
curl http://127.0.0.1:1990/config
返回配置
cd $GOPATH/src/github.com/anchnet/service-monitor/redis-monitor/
go get ./...
chmod +x control
./control build
./control pack
最后一步会pack出一个tar.gz的安装包,拿着这个包去部署服务即可
./control start 启动进程
./control stop 停止进程
./control restart 重启进程
./control status 查看进程状态
./control tail 用tail -f的方式查看var/app.log
./falcon-redis-monitor --check