热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:Zabbix​ZabbixRedis状态监控

本文由编程笔记#小编为大家整理,主要介绍了Zabbix--​Zabbix-Redis状态监控相关的知识,希望对你有一定的参考价值。
本文由编程笔记#小编为大家整理,主要介绍了Zabbix--​Zabbix-Redis状态监控相关的知识,希望对你有一定的参考价值。




续:


推荐阅读:













安装 redis服务

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


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


环境:在这里复用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 
" | 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 
" | ncat 127.0.0.1 6379 | grep role:

role:master
root@Mysql-slave:~# echo -en "INFO 
" | 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 
"
;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 
"
 | 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  "
    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=,
#       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

制作模板

创建模板



Zabbix-(9)-​Zabbix-Redis状态监控


Zabbix-(9)-​Zabbix-Redis状态监控






Zabbix-(9)-​Zabbix-Redis状态监控


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




Zabbix-(9)-​Zabbix-Redis状态监控





键值:redis_status["redis_status","6379","used_memory"]



Zabbix-(9)-​Zabbix-Redis状态监控










同理在创建一个新的监控项

键值:redis_status["redis_status","6379","total_connections_received"]



Zabbix-(9)-​Zabbix-Redis状态监控

创建图形



Zabbix-(9)-​Zabbix-Redis状态监控




Zabbix-(9)-​Zabbix-Redis状态监控





关联到主机



Zabbix-(9)-​Zabbix-Redis状态监控





数据查看


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


Zabbix-(9)-​Zabbix-Redis状态监控






Zabbix-(9)-​Zabbix-Redis状态监控





触发器



Zabbix-(9)-​Zabbix-Redis状态监控








Zabbix-(9)-​Zabbix-Redis状态监控





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



Zabbix-(9)-​Zabbix-Redis状态监控






Zabbix-(9)-​Zabbix-Redis状态监控






Zabbix-(9)-​Zabbix-Redis状态监控






如果添加了图形界面的,在监控图形界面就能看到一个触发器




Zabbix-(9)-​Zabbix-Redis状态监控





内存使用触发器


需要将已用内存单位转换,从 G 转换为字节,例如当内存使用达 2G 时就进行触发,则换算方式如下:
2GB=21024(MB)1024(KB)*1024(B)



Zabbix-(9)-​Zabbix-Redis状态监控








Zabbix-(9)-​Zabbix-Redis状态监控




Zabbix-(9)-​Zabbix-Redis状态监控


查看监控图形



Zabbix-(9)-​Zabbix-Redis状态监控

客户端连接数量触发器


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

创建客户端连接数量监控项:



Zabbix-(9)-​Zabbix-Redis状态监控





添加触发器



Zabbix-(9)-​Zabbix-Redis状态监控






Zabbix-(9)-​Zabbix-Redis状态监控

创建图形:



Zabbix-(9)-​Zabbix-Redis状态监控






在监测图形中查看:

在终端上多一个终端访问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


Zabbix-(9)-​Zabbix-Redis状态监控

发送邮件信息



Zabbix-(9)-​Zabbix-Redis状态监控


Zabbix-(9)-​Zabbix-Redis状态监控




Zabbix-(9)-​Zabbix-Redis状态监控





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


Zabbix-(9)-​Zabbix-Redis状态监控


超过触发器会发送邮件信息:










推荐阅读:




推荐阅读
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 本文介绍了将mysql从5.6.15升级到5.7.15的详细步骤,包括关闭访问、备份旧库、备份权限、配置文件备份、关闭旧数据库、安装二进制、替换配置文件以及启动新数据库等操作。 ... [详细]
  • 先看一段错误日志:###Errorqueryingdatabase.Cause:com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransie ... [详细]
  • Python项目实战10.2:MySQL读写分离性能优化
    本文介绍了在Python项目实战中进行MySQL读写分离的性能优化,包括主从同步的配置和Django实现,以及在两台centos 7系统上安装和配置MySQL的步骤。同时还介绍了创建从数据库的用户和权限的方法。摘要长度为176字。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
  • 本文介绍了关于apache、phpmyadmin、mysql、php、emacs、path等知识点,以及如何搭建php环境。文章提供了详细的安装步骤和所需软件列表,希望能帮助读者解决与LAMP相关的技术问题。 ... [详细]
  • 本文详细介绍了MySQL表分区的创建、增加和删除方法,包括查看分区数据量和全库数据量的方法。欢迎大家阅读并给予点评。 ... [详细]
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
  • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
  • PDO MySQL
    PDOMySQL如果文章有成千上万篇,该怎样保存?数据保存有多种方式,比如单机文件、单机数据库(SQLite)、网络数据库(MySQL、MariaDB)等等。根据项目来选择,做We ... [详细]
  • 本文主要复习了数据库的一些知识点,包括环境变量设置、表之间的引用关系等。同时介绍了一些常用的数据库命令及其使用方法,如创建数据库、查看已存在的数据库、切换数据库、创建表等操作。通过本文的学习,可以加深对数据库的理解和应用能力。 ... [详细]
  • MySQL语句大全:创建、授权、查询、修改等【MySQL】的使用方法详解
    本文详细介绍了MySQL语句的使用方法,包括创建用户、授权、查询、修改等操作。通过连接MySQL数据库,可以使用命令创建用户,并指定该用户在哪个主机上可以登录。同时,还可以设置用户的登录密码。通过本文,您可以全面了解MySQL语句的使用方法。 ... [详细]
  • 本文介绍了如何使用PHP代码将表格导出为UTF8格式的Excel文件。首先,需要连接到数据库并获取表格的列名。然后,设置文件名和文件指针,并将内容写入文件。最后,设置响应头部,将文件作为附件下载。 ... [详细]
  • 面试经验分享:华为面试四轮电话面试、一轮笔试、一轮主管视频面试、一轮hr视频面试
    最近有朋友去华为面试,面试经历包括四轮电话面试、一轮笔试、一轮主管视频面试、一轮hr视频面试。80%的人都在第一轮电话面试中失败,因为缺乏基础知识。面试问题涉及 ... [详细]
author-avatar
K_M_睡到自然醒cES_881
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有