Zabbix监控redis

作者 : 开心源码 本文共5994个字,预计阅读时间需要15分钟 发布时间: 2022-05-11 共69人阅读

1. Redis监控(shell脚本)

  • 监控原理示用意:
    监控原理
    Zabbix-server通过agent监控中配置文件调使用shell脚本。Redis中提供redis-cli 命令用info能取得redis大部分信息。在用shell命令获取到需要的信息。
    监控操作步骤:1. 编辑脚本 2.上传脚本到指定位置 3.修改zabbix-agent配置文件4.zabbix-server的web界面导入模版(编辑模板)5. 主机关联 。
  • 配置zabbix-agent配置文件
    Zabbix-agent监控配置文件/etc/zabbix/zabbix_agentd.conf(标准安装位置,假如手动编译安装可可以在其余位置):
    添加如下内容:
UserParameter=Redis.Info[*],/home/zkml/redismonitor.sh $1 $2 通过脚本监控信息 UserParameter=Redis.Status,(/home/zkml/redis-3.2.9/src/redis-cli -h 192.168.199.95 -p 6379 -a 密码 ping)2>/dev/null |grep -c PONG 通过命令检查redis状态,用错误重定向(2>/dev/null)是防止报错导致监控项失效无法告警

添加时候需要特别注意: redismonitor.sh 放置的位置zabbix需要有权限执行. chmod +x redismonitor.sh 另外放置的文件夹也要有权限,否则是无监控信息的假如redis需要密码验证还需要设置 -a 密码
Zabbix-server端验证用zabbix-get:
/usr/local/zabbix-3.0.3/bin/zabbix_get -s 192.168.199.95 -p10041 –k Redis.Status(ip是用户端的,端口zabbix-agent)

2. 添加监控项

  • info查看监控信息:
    例如# Server 服务器信息
    redis_version:3.2.9
  • 脚本中添加如下内容
    version) result=`$REDISCLI -h $HOST -p $PORT info | grep -w "redis_version" | awk -F':' '{print $2}'`
    再次,在zabbix管理web界面添加监控项,也能添加告警信息,修改添加图形等内容:
    增加监控项
    下面有具体的info信息和监控脚本以及监控模版编辑
  • info查看到信息
    redis-cli -h IP -p 端口 -a 密码 info
# Server 服务器信息redis_version:3.2.9redis_git_sha1:00000000redis_git_dirty:0redis_build_id:9c93f7fea0328bceredis_mode:standaloneos:Linux 2.6.32-431.el6.x86_64 x86_64arch_bits:64multiplexing_api:epollgcc_version:4.4.7process_id:30924run_id:6e22d7abd8087f557c21dec43499c0c38a8a2749tcp_port:6379uptime_in_seconds:88uptime_in_days:0hz:10lru_clock:925063executable:/usr/local/redis/bin/./redis-serverconfig_file:# Clients 用户端连接信息connected_clients:1client_longest_output_list:0client_biggest_input_buf:0blocked_clients:0# Memory 内存用信息used_memory:881336used_memory_human:860.68Kused_memory_rss:2351104used_memory_rss_human:2.24Mused_memory_peak:881336used_memory_peak_human:860.68Ktotal_system_memory:4017008640total_system_memory_human:3.74Gused_memory_lua:37888used_memory_lua_human:37.00Kmaxmemory:0maxmemory_human:0Bmaxmemory_policy:noevictionmem_fragmentation_ratio:2.67mem_allocator:libc# Persistence 持续loading:0rdb_changes_since_last_save:0rdb_bgsave_in_progress:0rdb_last_save_time:1527651631rdb_last_bgsave_status:okrdb_last_bgsave_time_sec:-1rdb_current_bgsave_time_sec:-1aof_enabled:0aof_rewrite_in_progress:0aof_rewrite_scheduled:0aof_last_rewrite_time_sec:-1aof_current_rewrite_time_sec:-1aof_last_bgrewrite_status:okaof_last_write_status:ok# Stats 状态信息total_connections_received:1total_commands_processed:0instantaneous_ops_per_sec:0total_net_input_bytes:14total_net_output_bytes:0instantaneous_input_kbps:0.00instantaneous_output_kbps:0.00rejected_connections:2sync_full:0sync_partial_ok:0sync_partial_err:0expired_keys:0evicted_keys:0keyspace_hits:0keyspace_misses:0pubsub_channels:0pubsub_patterns:0latest_fork_usec:0migrate_cached_sockets:0# Replication 集群信息role:masterconnected_slaves:0master_repl_offset:0repl_backlog_active:0repl_backlog_size:1048576repl_backlog_first_byte_offset:0repl_backlog_histlen:0# CPU #CPU用信息used_cpu_sys:0.08used_cpu_user:0.01used_cpu_sys_children:0.00used_cpu_user_children:0.00# Cluster 能否用集群cluster_enabled:0# Keyspace

根据以上信息用shell命令能获取自己想要检测的信息。

3. 脚本编写

主要命令:redis-cli -h IP -p 端口 -a 密码 info |grep xxx |awk xxx
下面的脚本是没有密码的假如redis有验证需要增加

#! /bin/bash#Name: redismontior.sh#From: zhangyl@izkml.com 2018.5.29#Action: Zabbix monitoring redis plug-in#根据自己的安装情况填写命令位置主机ip和端口REDISCLI="/home/zkml/redis-3.2.9/src/redis-cli" HOST="192.168.199.95"PORT=6379根据参数信息获取监控信息if [[ $# == 1 ]];then    case $1 in        version)            result=`$REDISCLI -h $HOST -p $PORT info | grep -w "redis_version" | awk -F':' '{print $2}'`            echo $result        ;;        uptime)            result=`$REDISCLI -h $HOST -p $PORT info | grep -w "uptime_in_seconds" | awk -F':' '{print $2}'`            echo $result        ;;        connected_clients)            result=`$REDISCLI -h $HOST -p $PORT info | grep -w "connected_clients" | awk -F':' '{print $2}'`            echo $result        ;;        blocked_clients)            result=`$REDISCLI -h $HOST -p $PORT info | grep -w "blocked_clients" | awk -F':' '{print $2}'`            echo $result        ;;        used_memory)            result=`$REDISCLI -h $HOST -p $PORT info | grep -w "used_memory" | awk -F':' '{print $2}'`            echo $result        ;;        used_memory_rss)            result=`$REDISCLI -h $HOST -p $PORT info | grep -w "used_memory_rss" | awk -F':' '{print $2}'`            echo $result        ;;        used_memory_peak)            result=`$REDISCLI -h $HOST -p $PORT info | grep -w "used_memory_peak" | awk -F':' '{print $2}'`            echo $result        ;;        used_memory_lua)            result=`$REDISCLI -h $HOST -p $PORT info | grep -w "used_memory_lua" | awk -F':' '{print $2}'`            echo $result        ;;        used_cpu_sys)            result=`$REDISCLI -h $HOST -p $PORT info | grep -w "used_cpu_sys" | awk -F':' '{print $2}'`            echo $result        ;;        used_cpu_user)            result=`$REDISCLI -h $HOST -p $PORT info | grep -w "used_cpu_user" | awk -F':' '{print $2}'`            echo $result        ;;        used_cpu_sys_children)            result=`$REDISCLI -h $HOST -p $PORT info | grep -w "used_cpu_sys_children" | awk -F':' '{print $2}'`            echo $result        ;;        used_cpu_user_children)            result=`$REDISCLI -h $HOST -p $PORT info | grep -w "used_cpu_user_children" | awk -F':' '{print $2}'`            echo $result        ;;        rdb_last_bgsave_status)            result=`$REDISCLI -h $HOST -p $PORT info  | grep -w "rdb_last_bgsave_status" | awk -F':' '{print $2}' | grep -c ok`            echo $result        ;;        aof_last_bgrewrite_status)            result=`$REDISCLI -h $HOST -p $PORT info  | grep -w "aof_last_bgrewrite_status" | awk -F':' '{print $2}' | grep -c ok`            echo $result        ;;        aof_last_write_status)            result=`$REDISCLI -h $HOST -p $PORT info  | grep -w "aof_last_write_status" | awk -F':' '{print $2}' | grep -c ok`            echo $result        ;;        *)            echo -e "\033[33mUsage: $0 {connected_clients|blocked_clients|used_memory|used_memory_rss|used_memory_peak|used_memory_lua|used_cpu_sys|used_cpu_user|used_cpu_sys_children|used_cpu_user_children|rdb_last_bgsave_status|aof_last_bgrewrite_status|aof_last_write_status}\033[0m"         ;;    Esac此处表示当有两个参数时用,主要使用来查询数据库的keys信息等elif [[ $# == 2 ]];then    case $2 in        keys)            result=`$REDISCLI -h $HOST -p $PORT info | grep -w "$1" | grep -w "keys" | awk -F'=|,' '{print $2}'`            echo $result        ;;        expires)            result=`$REDISCLI -h $HOST -p $PORT info | grep -w "$1" | grep -w "keys" | awk -F'=|,' '{print $4}'`            echo $result        ;;        avg_ttl)            result=`$REDISCLI -h $HOST -p $PORT info | grep -w "$1" | grep -w "avg_ttl" | awk -F'=|,' '{print $6}'`            echo $result        ;;        *)            echo -e "\033[33mUsage: $0 {db0 keys|db0 expires|db0 avg_ttl}\033[0m"         ;;    esacfi

4. 监控模版

在web界面导入模版:redis模版

导入模版
模版
此模版一共提供了19个监控项,其中有三个关于DbKey的检查可可以无效.

Redis监控(Python脚本)

在zabbix官方给出一个python监控脚本,需要在监控端用Python脚本。
监控的原理图:

原理图
Zabbix-server通过agent的配置文件不断读取文件,此文件有Python脚本每隔一段时间运行生成.文件内容是监控项的值.此处相似于percona监控mysql的方式相似.percona用的php的脚本.这里用的是Python脚本.
python监控redis

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » Zabbix监控redis

发表回复