Zabbix学习案例(3)-redis状态监控

Zabbix学习(1)-监控服务与Zabbix介绍

Zabbix学习(2)-Zabbix安装和基础使用

Zabbix学习(3)-Zabbix监控入门

Zabbix学习(4)-Proxy主动被动部署

Zabbix学习案例(1)-TCP状态监控

Zabbix学习案例(2)-memcached状态监控

安装 redis服务

通过自定义监控模板对memcache进行监控

为了测试效果,在主动模式下,因为主动模式获取数据比较快一些

环境:在这里复用Mysql-slave的主机

zabbix serverzabbix agent
172.20.32.101:Zabbix-server172.20.32.105:Mysql-slave

安装 redis

root@Mysql-slave:~# apt install redis -y

root@Mysql-slave:~# vim /etc/redis/redis.conf 
root@Mysql-slave:~# grep ^[a-Z] /etc/redis/redis.conf
bind 0.0.0.0  #修改监听地址为0.0.0.0
protected-mode yes
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize yes
supervised no
pidfile /var/run/redis/redis-server.pid
loglevel notice
logfile /var/log/redis/redis-server.log
databases 16
always-show-logo yes
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir /var/lib/redis
slave-serve-stale-data yes
slave-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
slave-priority 100
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
slave-lazy-flush no
appendonly no
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble no
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes

root@Mysql-slave:~# systemctl restart redis-server
root@Mysql-slave:~# systemctl enable redis-server
Synchronizing state of redis-server.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable redis-server

root@Mysql-slave:~# ss -ntl |grep 6379
LISTEN  0        511                    0.0.0.0:6379             0.0.0.0:*      


root@Mysql-slave:~# redis-cli 
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set key1 vaule1
OK
127.0.0.1:6379> keys *
1) "key1"
127.0.0.1:6379> 

编写监控脚本

脚本编写思路

root@Mysql-slave:~# echo -en "INFO \r\n" | ncat 127.0.0.1 6379
$2759
# Server
redis_version:4.0.9
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:9435c3c2879311f3
redis_mode:standalone
os:Linux 4.15.0-29-generic x86_64
arch_bits:64
multiplexing_api:epoll
atomicvar_api:atomic-builtin
gcc_version:7.4.0
process_id:59969
run_id:d43a1454bccb9c1d72cd634fa5a66a3d2a832c26
······
#获取某一条信息
root@Mysql-slave:~# echo -en "INFO \r\n" | ncat 127.0.0.1 6379 | grep role:
role:master

root@Mysql-slave:~# echo -en "INFO \r\n" | ncat 127.0.0.1 6379 | grep role: | awk -F: '{print $2}'
master

脚本编写

在机器172.20.32.105上面编写脚本
一般脚本放在/etc/zabbix/zabbix_agentd.d/这个文件目录下

方法一: redis_monitor.sh

root@Mysql-slave:/etc/zabbix/zabbix_agentd.d# vim redis_monitor.sh 
#!/bin/bash
# 
# Edited on 20200501 by likai.tech
#
redis_status(){
        R_PORT=$1
        R_COMMAND=$2
        (echo -en "INFO \r\n";sleep 1;) | ncat 127.0.0.1 "$R_PORT" > /tmp/redis_"$R_PORT".tmp
        REDIS_STAT_VALUE=$(grep ""$R_COMMAND":" /tmp/redis_"$R_PORT".tmp | cut -d':' -f2)
        echo $REDIS_STAT_VALUE 
}

help(){
        echo "${0} + redis_status + PORT + COMMAND" 
}

main(){
        case $1 in
                redis_status)
                        redis_status $2 $3
                                ;;
                *)
                        help
                                ;;
        esac
}

main $1 $2 $3

root@Mysql-slave:/etc/zabbix/zabbix_agentd.d# chmod a+x redis_monitor.sh
root@Mysql-slave:/etc/zabbix/zabbix_agentd.d# bash redis_monitor.sh redis_status 6379 connected_clients
1
root@Mysql-slave:/etc/zabbix/zabbix_agentd.d# bash redis_monitor.sh redis_status 6379 used_memory
840352

方法二: redis_monitor1.sh

root@Mysql-slave:/etc/zabbix/zabbix_agentd.d# vim redis_monitor1.sh 
#!/bin/bash
# 
# Edited on 20200501 by likai.tech
#

get_redis_status(){
echo -en "INFO \r\n" | ncat 127.0.0.1 $1 | grep -w "$2" | awk -F: '{print $2}'
}

main(){
        # install ncat
    cat /etc/issue | grep -iq "ubuntu"
    [[ $? -ne 0 ]] && yum install nmap-ncat -y &> /dev/null || apt install nmap-ncat -y &> /dev/null

        # prompt usage
    if [[ $# -eq 0 ]]; then
        echo "`basename $0` redis_status <PORT> <STATUS>"
    fi

        # do the f* thing
    if [[ $1 = "redis_status" ]]; then
        get_redis_status $2 $3
    fi
}

main $1 $2 $3

root@Mysql-slave:/etc/zabbix/zabbix_agentd.d# chmod a+x redis_monitor1.sh
root@Mysql-slave:/etc/zabbix/zabbix_agentd.d# bash redis_monitor1.sh redis_status 6379 connected_clients
1
root@Mysql-slave:/etc/zabbix/zabbix_agentd.d# bash redis_monitor1.sh redis_status 6379 used_memory
840352

增加监控项

这里以方法一的脚本做自定义监控项目

在 agent 配置文件增加监控项

root@Mysql-slave:/etc/zabbix/zabbix_agentd.d# vim /etc/zabbix/zabbix_agentd.conf
### Option: UserParameter
#       User-defined parameter to monitor. There can be several user-defined parameters.
#       Format: UserParameter=<key>,<shell command>
#       See 'zabbix_agentd' directory for examples.
#
# Mandatory: no
# Default:
# UserParameter=
#添加自定义监控项
UserParameter=redis_status[*],bin/bash /etc/zabbix/zabbix_agentd.d/redis_monitor.sh "$1" "$2" "$3"

root@Mysql-slave:/etc/zabbix/zabbix_agentd.d# systemctl restart zabbix-agent.service

在 zabbix server 测试获取数据

root@Zabbix-server:~# /apps/zabbix_server/bin/zabbix_get -s 172.20.32.105 -p10050 -k "redis_status["redis_status","6379","role"]"
master
root@Zabbix-server:~# /apps/zabbix_server/bin/zabbix_get -s 172.20.32.105 -p10050 -k "redis_status["redis_status","6379","uptime_in_seconds"]"
7054
root@Zabbix-server:~# /apps/zabbix_server/bin/zabbix_get -s 172.20.32.105 -p10050 -k "redis_status["redis_status","6379","connected_clients"]"
1
root@Zabbix-server:~# /apps/zabbix_server/bin/zabbix_get -s 172.20.32.105 -p10050 -k "redis_status["redis_status","6379","used_memory_rss"]" 
4128768
root@Zabbix-server:~# /apps/zabbix_server/bin/zabbix_get -s 172.20.32.105 -p10050 -k "redis_status["redis_status","6379","used_memory"]"
840352
root@Zabbix-server:/apps# /apps/zabbix_server/bin/zabbix_get -s 172.20.32.105 -p10050 -k "redis_status["redis_status","6379","total_connections_received"]"
848

制作模板

创建模板

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
可以看到上面的Redis templet 后面的数据都是空的,依次创建一些监控项以及图形和触发器

在这里插入图片描述

键值:redis_status[“redis_status”,“6379”,“used_memory”]

在这里插入图片描述
同理在创建一个新的监控项

键值:redis_status[“redis_status”,“6379”,“total_connections_received”]
在这里插入图片描述

创建图形
在这里插入图片描述
在这里插入图片描述

关联到主机

在这里插入图片描述

数据查看

root@Zabbix-server:~# /apps/zabbix_server/bin/zabbix_get -s 172.20.32.105 -p10050 -k "redis_status["redis_status","6379","used_memory"]"
840352

在这里插入图片描述

在这里插入图片描述

触发器

在这里插入图片描述
在这里插入图片描述

这里的触发器需要基于前面自定义的监控项来进行配置。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
如果添加了图形界面的,在监控图形界面就能看到一个触发器

在这里插入图片描述

内存使用触发器

需要将已用内存单位转换,从 G 转换为字节,例如当内存使用达 2G 时就进行触发,则换算方式如下:
2GB=2*1024(MB)*1024(KB)*1024(B)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
查看监控图形
在这里插入图片描述

客户端连接数量触发器

root@Zabbix-server:/apps# /apps/zabbix_server/bin/zabbix_get -s 172.20.32.105 -p10050 -k "redis_status["redis_status","6379","connected_clients"]"
1

创建客户端连接数量监控项:
在这里插入图片描述

添加触发器
在这里插入图片描述

在这里插入图片描述

创建图形:
在这里插入图片描述
在监测图形中查看:
在终端上多一个终端访问redis-cli,则connected_clients会增加1

root@Zabbix-server:/apps# /apps/zabbix_server/bin/zabbix_get -s 172.20.32.105 -p10050 -k "redis_status["redis_status","6379","connected_clients"]"
1
root@Zabbix-server:/apps# /apps/zabbix_server/bin/zabbix_get -s 172.20.32.105 -p10050 -k "redis_status["redis_status","6379","connected_clients"]"
2
root@Zabbix-server:/apps# 

在这里插入图片描述

发送邮件信息

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

root@Zabbix-server:/apps# /apps/zabbix_server/bin/zabbix_get -s 172.20.32.105 -p10050 -k "redis_status["redis_status","6379","connected_clients"]"
4
root@Zabbix-server:/apps# /apps/zabbix_server/bin/zabbix_get -s 172.20.32.105 -p10050 -k "redis_status["redis_status","6379","connected_clients"]"
5

在这里插入图片描述
超过触发器会发送邮件信息:

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值