乐趣区

zabbix监控redis相关指标,支持info下面所有参数

最近在处理 zabbix 监控,监控 redis 时发现官方并没有提供相关的模板,自己参照之前 mysql 的监控改写了一个。主要支持 info 命令下所有参数,自动发现有 key 的数据库,并提供 info 中的参数数据特点:较为通用,代码简洁需要设置 zabbix agent 自定义脚本,具体设置方式不做说明,请百度具体脚本如下:check_redis.sh
#!/bin/bash
# ——————————————————————————-
# FileName: check_redis.sh
# Revision: 1.0
# Date: 2019-3-21
# Author: xsj
# Email: soft_xiang@qq.com
# Description:
# Notes: ~
# ——————————————————————————-
# Copyright: 2019 (c) xsj
# License: GPL

REDISPATH=’/usr/local/bin/redis-cli’
HOST=’127.0.0.1′
PORT=’6379′
PASSWD=’111111′
REDIS_CMD=”$REDISPATH -h $HOST -p $PORT -a $PASSWD ”

# 参数是否正确
if [[$# -gt 2 || $# -lt 1]];then
echo “arg error!”;
exit 1;
fi

if [[$# == 1]];then
case $1 in
Discovery)
array=(`$REDIS_CMD info 2>/dev/null|grep “:keys=”|awk -F: ‘{ print $1}’`)
length=${#array[@]}
printf “{\n”
printf ‘\t'”\”data\”:[”
for ((i=0;i<$length;i++))
do
printf ‘\n\t\t{‘
printf “\”{#DB}\”:\”${array[$i]}\”}”
if [$i -lt $[$length-1] ];then
printf ‘,’
fi
done
printf “\n\t]\n”
printf “}\n”
;;
Ping)
$REDIS_CMD ping|grep -c PONG ;;
Status_*)
$REDIS_CMD info 2>/dev/null| grep “${1#*Status_}”|awk ‘NR==1’|awk -F: ‘{print $NF}’ ;;
*)
echo “Usage:$0 (Ping|Status_key); 其中 Status_ key 为 info 中的 key,注意大小写 ” ;;
esac
elif [[$# == 2]];then
param1=”${1#*Status_}”;
case $2 in
keys)
$REDIS_CMD info 2>/dev/null |grep -w “$param1″|grep -w “$2″| awk -F’=|,’ ‘{print $2}’ ;;
expires)
$REDIS_CMD info 2>/dev/null |grep -w “$param1″|grep -w “$2″| awk -F’=|,’ ‘{print $4}’ ;;
avg_ttl)
$REDIS_CMD info 2>/dev/null |grep -w “$param1″|grep -w “$2″| awk -F’=|,’ ‘{print $6}’ ;;
*)
echo “Usage:$0{db0 keys|db0 expires|db0 avg_ttl}” ;;
esac
fi

status_redis.conf
#redis db 自动发现
UserParameter=redis.discovery,/etc/zabbix/scripts/check_redis.sh Discovery
#监控 redis 状态,我们可以根据这个参数对应的监控项创建 redis 状态触发器。
UserParameter=redis.ping,/etc/zabbix/scripts/check_redis.sh Ping
#状态信息
UserParameter=redis.status[*],/etc/zabbix/scripts/check_redis.sh Status_$1 $2
web 管理端配置模板

只设置了部分,所有 info 下的参数都支持

退出移动版