共计 2529 个字符,预计需要花费 7 分钟才能阅读完成。
公司的 Redis 业务很多,Redis 监控自然也是 DB 监控的一大模块,包括采集、展示、监控告警。本文主要介绍 Redis 监控的主要指标和采集方法。
一、Redis 监控系统逻辑
1、DBA 通过前台页面添加 redis 监控,填写 ip 和端口,配置阈值、负责人等信息
2、前台调用自动调度平台接口将 redis 监控采集 Agent 发送到目标机器上的固定文件夹,并添加 crond,每分钟运行(采集 Agent 包含采集程序和 ip 端口信息文件)
3、redis 监控 Agent 采集相关指标通过 http 接口上报到 MySQL 服务器(目标机器无法直接连接 mysql)
4、前台读取 mysql 数据进行展示
5、解析程序每分钟通过读取配置信息和 Agent 上报的数据进行解析并发送告警(Rtx/Wechat/Sms)给指定负责人
二、采集指标和命令
1、redis 服务进程 ip-port
约定所有 redis 服务都必须以 ip1(内网 ip)来绑定,每个机器只有一个 ip1,可以有多个端口,即多个 redis 实例。采集程序读取 ip 端口信息文件来判断有多少个实例
ps aux | grep -E "redis-server.*$port"
约定所有 redis 客户端安装标准路径是
REDISPATH_CLI="/usr/local/redis/bin/redis-cli"
如果发现不是标准路径会有 No such file or directory 的提示,则采集程序会在每天早上 10 点发送 Rtx 弹窗给 DBA(DBA 也可以根据前台页面图表展示来判断该采集器有无上报数据,无上报数据则可以上机查看采集器日志)
采集器使用下面的命令来采集 redis 实例的所有信息,然后根据信息筛选出需要的指标上报到 mysql
$REDISPATH_CLI -h ${agentIp} -p ${port} info > ${tmpFile} 2>&1
如果 redis 实例没有绑定在 ip1 或者 127.0.0.1 上面则会提示 Connection refused
2、连接客户数
grep "connected_clients:" ${tmpFile} | awk -F ":" '{print $2}'
3、阻塞连接数
grep "blocked_clients:" ${tmpFile} | awk -F ":" '{print $2}'
4、redis 占用内存,单位 Byte 转成 MB
grep "used_memory:" ${tmpFile} | awk -F ":" '{print $2}' | awk '{printf"%.2f",$1/1024/1024}'
5、内存峰值,单位 Byte 转成 MB
grep "used_memory_peak:" ${tmpFile} | awk -F ":" '{print $2}' | awk '{printf"%.2f",$1/1024/1024}'
6、主从角色
grep "role:" ${tmpFile} | awk -F ":" '{print $2}' # master(主),slave(从)
7、master_link_status
grep "master_link_status:" ${tmpFile} | awk -F ":" '{print $2}' # up down
down:Master已经不可访问了,Slave 依然运行良好,并且保留有 AOF 与 RDB 文件
8、执行命令总数和 qps
grep "total_commands_processed:" ${tmpFile} | awk -F ":" '{print $2}'
计算 qps 需要计算两次 total_commands_processed,然后除以时间差。逻辑是第一分钟将 total_commands_processed 的值和当时采集该值的时间保存到 last.cache 中,第二分钟采集的时候获取值和时间,和上次相减得到两个差值相除即可。
9、上报时间
reportTime=`date +'%Y-%m-%d %H:%M:00'`
时间的秒数是 0,方便前台画图展示
三、解析告警
分析上报的指标是否异常,根据 reportTime 判断 Agent 心跳情况,将状态和异常信息存入 mysql,发送告警给相关负责人。数据库分表如下:
redisMonitor 库:配置表 redisConf、当前状态 redisCurrentStatus、异常信息表 redisDisplay
历史库按月分库,按照 ip 分表,保存 redis 采集器上报数据,Ex: redisStatus167872716
四、前台展示
1、异常页面
2、状态页面
下面关于 Redis 的文章您也可能喜欢,不妨参考下:
Ubuntu 14.04 下 Redis 安装及简单测试 http://www.linuxidc.com/Linux/2014-05/101544.htm
Redis 主从复制基本配置 http://www.linuxidc.com/Linux/2015-03/115610.htm
Redis 集群明细文档 http://www.linuxidc.com/Linux/2013-09/90118.htm
Ubuntu 16.04 环境中安装 PHP7.0 Redis 扩展 http://www.linuxidc.com/Linux/2016-09/135631.htm
CentOS 7.0 安装 Redis 3.2.1 详细过程和使用常见问题 http://www.linuxidc.com/Linux/2016-09/135071.htm
Ubuntu 16.04 环境中安装 PHP7.0 Redis 扩展 http://www.linuxidc.com/Linux/2016-09/135631.htm
Ubuntu 15.10 下 Redis 集群部署文档 http://www.linuxidc.com/Linux/2016-06/132340.htm
Redis 实战 中文 PDF http://www.linuxidc.com/Linux/2016-04/129932.htm
Redis 的详细介绍:请点这里
Redis 的下载地址:请点这里
本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-11/136783.htm