zabbix自定義key監控redis


一、啟動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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM