一、啟動redis-server
cd /data/redis redis-server redis.conf (根據自己的環境啟動redis) 測試腳本(寫入1000個數據): seq 1000|while read line; do redis-cli set key_${line} value_${line}; done
二、redis-cli info查看redis的運行信息
used_memory_rss #占用系統的內存 used_memory #key所占用的內存 mem_fragmentation_ratio #內存碎片化率used_memory_rss/used_memory connected_clients #已連接的客戶端 total_commands_processed #從啟動開始運行了多少命令 total_connections_received #從啟動開始接收了多個連接 role #redis主從狀態 redis-cli info|grep total_commands_processed
三、監控redis腳本(vim /usr/local/zabbix/check_redis.sh)
#!/bin/sh while getopts "p:k:P:" opt do case $opt in p ) redis_port=$OPTARG;; k ) info_key=$OPTARG;; P ) redis_passwd=$OPTARG;; ? ) echo 'parameter is wrong!' exit 1;; esac done if [ ! "${redis_port}" ] || [ ! "${info_key}" ];then echo "parameter is null" exit 1 fi if [ "${redis_passwd}" ];then result=`/usr/local/bin/redis-cli -a ${redis_passwd} -p ${redis_port} info|grep "${info_key}:"|cut -d: -f2` else result=`/usr/local/bin/redis-cli -p ${redis_port} info|grep "${info_key}:"|cut -d: -f2` fi echo $result
四、測試腳本
無密碼測試
sh /usr/local/zabbix/check_redis.sh -k mem_fragmentation_ratio -p 6379 sh /usr/local/zabbix/check_redis.sh -k total_commands_processed -p 6379
有密碼測試
config set requirepass "test" auth test sh /usr/local/zabbix/check_redis.sh -k total_commands_processed -p 6379 -P test
去除密碼
auth test config set requirepass ""
五、zabbix agent的配置(vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/redis.conf)
UserParameter=redis.status[*],sh /usr/local/zabbix/check_redis.sh -k $1 -p $2 4.1 如果有密碼的話(test替換自己的密碼) UserParameter=redis.status[*],sh /usr/local/zabbix/check_redis.sh -k $1 -p $2 -P test 重啟zabbix agentd。
六、測試zabbix_agent是否正常
/usr/local/zabbix/sbin/zabbix_agentd -t redis.status[mem_fragmentation_ratio,6379] /usr/local/zabbix/sbin/zabbix_agentd -t redis.status[total_commands_processed,6379] zabbix_get -s 192.168.1.106 -k redis.status[mem_fragmentation_ratio,6379]
七、在zabbix server網頁上配置監控
6.1 添加主機 6.2 添加監控項目 簡單檢查 net.tcp.service.perf[tcp,,6379] #浮點數 觸發器為0時告警 圖形 redis.status[used_memory_rss,6379] #整數 redis.status[used_memory,6379] #整數 redis.status[mem_fragmentation_ratio,6379] #浮點數 redis內存碎片化率 redis.status[connected_clients,6379] #整數 redis.status[total_commands_processed,6379] #每秒速率 整數 redis每秒鍾執行的命令(qps) redis.status[total_connections_received,6379] #每秒速率 整數
6.3 模板說明
自動發現redis端口(discover_redis.py)
#coding:utf-8 import json import commands (status, output) = commands.getstatusoutput("""sudo netstat -tlnp|grep 'redis'|awk '{print $4}'|awk -F':' '{print $(NF)}'|sort -u|grep -v '^1'""") outputs = output.split('\n') ports = [] for port in outputs: ports += [{'{#REDISPORT}': port}] print json.dumps({'data':ports},sort_keys=True,indent=4) 自動發現zabbix配置: UserParameter=redis.discover,python /usr/local/zabbix/discover_redis.py