Zabbix 自带监控模板中,只有一个模板: Redis by Zabbix agent 2
包含了:
主机 |
监控项 64 |
触发器 13 |
图形 12 |
仪表盘 2 |
自动发现 7 |
Web监测 |
本文采取了 Zabbix 5.4.10 Redis by Zabbix agent 2 对 Redis Server 3.2.12 进行监控演示。
1、 操作前的准备
安装了 Zabbix https://www.sevenfal.com/2022/02/10/1853.html
Redis 服务器 安装了 Redis 服务。
Redis 服务器 安装了 zabbix-agent2。
以下为 zabbix-agent 的使用方法,如使用 zabbix-agent2 跳过下方的步骤。
添加自定义命令 UserParameter 到 zabbix-agent 配置文件目录,以及获取 info config 等生成 json 格式的脚本:
# 自定义 UserParameter
cat > /etc/zabbix/zabbix_agentd.d/userparameter_redis.conf<<'EOF'
UserParameter=redis.config[*],bash /etc/zabbix/zabbix_agentd.d/redis_get_info.sh config
UserParameter=redis.info[*],bash /etc/zabbix/zabbix_agentd.d/redis_get_info.sh info
UserParameter=redis.ping[*],bash /etc/zabbix/zabbix_agentd.d/redis_get_info.sh ping
UserParameter=redis.slowlog.count[*],bash /etc/zabbix/zabbix_agentd.d/redis_get_info.sh slowlog_count
EOF
# 获取上方内容的脚本
cat > /etc/zabbix/zabbix_agent.d/redis_get_info.sh<<'EOF'
#!/bin/bash
which redis-cli >/dev/null 2>&1 || (echo 'no redis-cli'; exit 1)
BIN="redis-cli"
redisConf="/etc/redis.conf"
if grep -qw port "$redisConf";then
port=$(awk '$1=="port" {print $2}' "$redisConf")
else
port=6379
fi
BIN="$BIN -p $port"
if grep -qw requirepass "$redisConf";then
pass=$(awk '$1=="requirepass" {print $2}' "$redisConf")
BIN="$BIN -a $pass"
fi
case "$1" in
"ping")
$BIN ping | grep -cw 'PONG'
;;
"info")
echo '{'
BEGIN1=0
while read -r line;do
if echo "$line" | grep -q '^#';then
outline="$(echo "$line" | awk '{print " },\""$2"\":{"}')"
if [ "$BEGIN1" == "0" ];then
outline=" ${outline#*,}"
fi
BEGIN1=1
echo "$outline"
BEGIN2=0
else
if echo $line | grep -q ',expires=';then
echo "$line" | awk -F':' '{print " \""$1"\":{"}'
BEGIN3=0
for keys in $(echo "$line" | awk -F':' '{print $2}' | sed 's#,# #g');do
outline="$(echo "$keys" | awk -F'=' '{print " ,\""$1"\":\""$2"\""}')"
if [ "$BEGIN3" == "0" ];then
outline=" ${outline#*,}"
fi
BEGIN3=1
echo "$outline"
done
echo ' }'
else
outline="$(echo "$line" | awk -F':' '{print " ,\""$1"\":\""$2"\""}')"
if [ "$BEGIN2" == "0" ];then
outline=" ${outline#*,}"
fi
echo "$outline"
fi
BEGIN2=1
fi
done<<<"$($BIN info | tr -d '\r' | grep -v '^$')"
echo -e ' }\n}'
;;
"config")
BEGIN=0
echo '{'
while read -r line;do
((num+=1))
if [ "$(( num % 2 ))" == "1" ];then
outline=$(echo $line | awk '{print " ,\""$0"\":"}')
if [ "$BEGIN" == "0" ];then
outline=" ${outline#*,}"
fi
BEGIN=1
else
echo "${outline}$(echo $line | awk '{print "\""$0"\""}')"
fi
done<<<"$(echo 'config get *' | $BIN | tr -d '\r')"
echo '}'
;;
"slowlog_count")
$BIN slowlog len | tr -d '\r'
;;
*)
echo "usage: bash ${0##*/} [ping|info|config|slowlog_count]"
;;
esac
EOF
# 重启 zabbix-agent
systemctl restart zabbix-agent
2、 关联模板到对应需要监控的 Redis 主机
如 Redis 服务器设置了密码,需要修改 Redis by Zabbix agent 2 模板,添加 宏 指定使用密码: {$REDIS.CONN.PASSWD}

关联 模板 到主机:

在 Redis服务器 主机 宏 中,填入对应密码和连接及端口即可。
文章评论(0)