zabbix監控redis多實例

如果主機有多個redis實例可以使用lld(low level discovery)方式監控redis,只需要在正則表達式裏把需要監控的端口標上,就可以監控redis多實例。


1,agent端

在ageng端創建可以識別redis多實例的腳本(通過端口判斷)

cd /server/scripts
cat redis_low_discovery.sh
#!/bin/bash
#Fucation:mysql low-level discovery
#Script_name redis_low_discovery.sh
redis() {
    #port=($(netstat -tpln | awk -F "[ :]+" '/redis/ && /0.0.0.0/ {print $5}'))
    port=($(ps aux|grep redis-server|grep -v grep|awk -F ":" '{print $3}'|awk '{print $1}'))
    printf '{\n'
    printf '\t"data":[\n'
       for key in ${!port[@]}
       do
           if [[ "${#port[@]}" -gt 1 && "${key}" -ne "$((${#port[@]}-1))" ]];then
               socket=`ps aux|grep ${port[${key}]}|grep -v grep|awk -F '=' '{print $10}'|cut -d ' ' -f 1`
               printf '\t {\n'
               printf "\t\t\t\"{#REDISPORT}\":\"${port[${key}]}\"},\n"
           else [[ "${key}" -eq "((${#port[@]}-1))" ]]
               socket=`ps aux|grep ${port[${key}]}|grep -v grep|awk -F '=' '{print $10}'|cut -d ' ' -f 1`
               printf '\t {\n'
               printf "\t\t\t\"{#REDISPORT}\":\"${port[${key}]}\"}\n"
           fi
       done
               printf '\t ]\n'
               printf '}\n'
}
$1


修改屬主

chown -R zabbix.zabbix /server/scripts/

給權限

chmod 755 redis_low_discovery.sh

添加UserParameter

vim /usr/local/zabbix/etc/zabbix_agentd.conf
UserParameter=zabbix_low_discovery[*],/bin/bash /server/scripts/redis_low_discovery.sh $1
#UserParameter=redis_stats[*],(echo info; sleep 1) | telnet 10.96.170.30 $1 2>&1 |grep $2|cut -d : -f2
UserParameter=redis_stats[*],/usr/local/bin/redis-cli -h 10.96.170.31 -p $1 info|grep $2|cut -d : -f2

如果不讓用telnet協議,還可以使用/usr/local/bin/redis-cli,本次我的配置中telnet沒有成功,因此把telnet注掉了。

關閉requiretty

sed -i 's/^Defaults.*.requiretty/#Defaults    requiretty/' /etc/sudoers

或者 vim /etc/sudoers  #注掉第56行

重啓zabbix服務

/etc/init.d/zabbix_agentd start

2,server端

使用zabbix_get獲取redis鍵值

/usr/local/zabbix/bin/zabbix_get -s 10.96.170.31 -k zabbix_low_discovery[redis]
{
    "data":[
     {
            "{#REDISPORT}":"6379"},
     {
            "{#REDISPORT}":"6380"}
     ]
}

檢測是否取到redis數據的值:

/usr/local/zabbix/bin/zabbix_get -s 10.96.170.31 -k "redis_stats[6379,uptime_in_seconds]"
33168128

3,模板配置

模板導入

把Template Redis Auto Discovery導入到zabbix裏

設置正則

在 "管理" —> "一般" —> "正則表達式" ,選擇"新的正則表達式"

在 "Administration" —> "General" —> "Regular expressions" ,選擇"New regular expression"

設置如下:

NAME:Redis regex
Expression type:Result is TRUE
Expression:^(6380|17761|17762|18005|23581)$

在表達式(Expression)這裏把redis實例的端口寫出來,你用到哪些,或是後面可能要用到哪些都在這裏寫出來

主機關聯模板

給需要監控redis實例的主機添加模板即可監控,默認是3600秒後自動更新,可以自行修改更新間隔


模板下載:https://down.51cto.com/data/2466469

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章