文章目录
1.1 监控redis什么内容
1、监控redis端口状态
2、监控redis活跃连接数、最大连接数
3、监控redis已用内存,系统最大支持内存
1.2 如何监控redis
1、通过命令redis-cli info获取连接数、内存、CPU等状态;
- connected_clients: 当前连接数
- used_memory: 已用内存(字节)
- total_system_memory: 系统总内存
2.通过动态命令获取redis最大连接数redis-cli CONFIG GET maxclients
[root@web01 yum.repos.d]# wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-archive-6.repo
[root@web01 yum.repos.d]# yum install redis -y
[root@web01 yum.repos.d]# /etc/init.d/redis start
[root@web01 yum.repos.d]# redis-cli CONFIG GET maxclients
1) "maxclients"
2) "10000"
1.3 编写监控脚本
[root@web01 ~]# cat /etc/zabbix/zabbix_agent2.d/redis_status.sh
#!/bin/bash
key=$1
redis-cli -p6379 info | grep "\<${key}\>" | awk -F ":" '{print $NF}'
[root@web01 ~]#chmod +x /etc/zabbix/zabbix_agent2.d/redis_status.sh
1.4 添加自定义监控项
[root@web01 ~]# cat /etc/zabbix/zabbix_agent2.d/redis_status.conf
UserParameter=redis.status[*],/etc/zabbix/zabbix_agent2.d/redis_status.sh "$1"
#h获取最大连接数(通过命令获取,info中无法提取)
UserParameter=redis.config.maxclients,redis-cli -p 6379 config get maxclients | awk "NR==2"
1.5 服务端测试取值
[root@zabbix-server ~]# zabbix_get -s 192.168.20.47 -k redis.status[connected_clients]
1
[root@zabbix-server ~]# zabbix_get -s 192.168.20.47 -k redis.status[used_memory]
813512
1.6 配置zabbi-web
1、创建模版
2、创建监控项
3、创建触发器
4、关联主机
1.7 创建触发器
触发器1: 当redis活跃连接数打到“最大连接数”的70%则触发警告
#公式: 活跃连接数/最大连接数*100 > 70
#故障表达式
{Template Redis Status panpancar:redis.status[connected_clients].avg(1m)}/{Template Redis Status panpancar:redis.config.maxclients.last()}*100>={$REDIS.CLIENTS.ALERT}
#恢复表达式
{Template Redis Status panpancar:redis.status[connected_clients].avg(1m)}/{Template Redis Status panpancar:redis.config.maxclients.last()}*100<{$REDIS.CLIENTS.ALERT}
触发器2:当前的redis已用内存,达到系统的总内存的70%触发告警
#公式:已用内存/最大内存*100 > 70
#故障表达式
{Template Redis Status panpancar:redis.status[used_memory].last()}/{Template Redis Status panpancar:redis.status[total_system_memory].last()}*100>={$REDIS.MEM.ALERT}
#恢复表达式
{Template Redis Status panpancar:redis.status[used_memory].last()}/{Template Redis Status panpancar:redis.status[total_system_memory].last()}*100<{$REDIS.MEM.ALERT}
1.8 测试告警效果
#模拟产生500w条数据
127.0.0.1:6379> debug populate 5000000
127.0.0.1:6379> DBSIZE