Zabbix应用监控系列之Redis状态监控

ZABBIX 

Redis使用自带的INFO命令,进行状态监控。以一种易于解释且易于阅读的格式,返回关于 Redis 服务器的各种信息和统计数值。 
1.配置所有Agent(标准化目录结构)

 
  1. [root@linux-node1 ~]# vim /etc/zabbix/zabbix_agentd.conf #编辑配置文件引用key
  2. Include=/etc/zabbix/zabbix_agentd.d/*.conf
  3. [root@linux-node1 ~]# mkdir /etc/zabbix/scripts #存放Shell脚本

2.编写Shell脚本

  • 脚本端口、连接redis服务地址根据具体情况进行修改
  • AUTH认证没有开启,将PASSWD修改为空即可。
 
  1. [root@linux-node1 ~]# cd /etc/zabbix/scripts
  2. [root@linux-node1 scripts]# vim redis_status.sh
  3. #!/bin/bash
  4. ############################################################
  5. # $Name: redis_status.sh
  6. # $Version: v1.0
  7. # $Function: Redis Status
  8. # $Author: xuliangwei
  9. # $organization: www.xuliangwei.com
  10. # $Create Date: 2016-06-23
  11. # $Description: Monitor Redis Service Status
  12. ############################################################
  13. R_COMMAND="$1"
  14. R_PORT="6379" #根据实际情况调整端口
  15. R_SERVER="127.0.0.1" #根据具体情况调整IP地址
  16. PASSWD="123" #如果没有设置Redis密码,为空即可
  17. redis_status(){
  18. (echo -en "AUTH $PASSWD INFO ";sleep 1;) | /usr/bin/nc "$R_SERVER" "$R_PORT" > /tmp/redis_"$R_PORT".tmp
  19. REDIS_STAT_VALUE=$(grep "$R_COMMAND:" /tmp/redis_"$R_PORT".tmp | cut -d ':' -f2)
  20. echo "$REDIS_STAT_VALUE"
  21. }
  22. case $R_COMMAND in
  23. used_cpu_user_children)
  24. redis_status "$R_PORT" "$R_COMMAND"
  25. ;;
  26. used_cpu_sys)
  27. redis_status "$R_PORT" "$R_COMMAND"
  28. ;;
  29. total_commands_processed)
  30. redis_status "$R_PORT" "$R_COMMAND"
  31. ;;
  32. role)
  33. redis_status "$R_PORT" "$R_COMMAND"
  34. ;;
  35. lru_clock)
  36. redis_status "$R_PORT" "$R_COMMAND"
  37. ;;
  38. latest_fork_usec)
  39. redis_status "$R_PORT" "$R_COMMAND"
  40. ;;
  41. keyspace_misses)
  42. redis_status "$R_PORT" "$R_COMMAND"
  43. ;;
  44. keyspace_hits)
  45. redis_status "$R_PORT" "$R_COMMAND"
  46. ;;
  47. keys)
  48. redis_status "$R_PORT" "$R_COMMAND"
  49. ;;
  50. expires)
  51. redis_status "$R_PORT" "$R_COMMAND"
  52. ;;
  53. expired_keys)
  54. redis_status "$R_PORT" "$R_COMMAND"
  55. ;;
  56. evicted_keys)
  57. redis_status "$R_PORT" "$R_COMMAND"
  58. ;;
  59. connected_clients)
  60. redis_status "$R_PORT" "$R_COMMAND"
  61. ;;
  62. changes_since_last_save)
  63. redis_status "$R_PORT" "$R_COMMAND"
  64. ;;
  65. blocked_clients)
  66. redis_status "$R_PORT" "$R_COMMAND"
  67. ;;
  68. bgsave_in_progress)
  69. redis_status "$R_PORT" "$R_COMMAND"
  70. ;;
  71. bgrewriteaof_in_progress)
  72. redis_status "$R_PORT" "$R_COMMAND"
  73. ;;
  74. used_memory_peak)
  75. redis_status "$R_PORT" "$R_COMMAND"
  76. ;;
  77. used_memory)
  78. redis_status "$R_PORT" "$R_COMMAND"
  79. ;;
  80. used_cpu_user)
  81. redis_status "$R_PORT" "$R_COMMAND"
  82. ;;
  83. used_cpu_sys_children)
  84. redis_status "$R_PORT" "$R_COMMAND"
  85. ;;
  86. total_connections_received)
  87. redis_status "$R_PORT" "$R_COMMAND"
  88. ;;
  89. *)
  90. echo $"USAGE:$0 {used_cpu_user_children|used_cpu_sys|total_commands_processed|role|lru_clock|latest_fork_usec|keyspace_misses|keyspace_hits|keys|expires|expired_keys|connected_clients|changes_since_last_save|blocked_clients|bgrewriteaof_in_progress|used_memory_peak|used_memory|used_cpu_user|used_cpu_sys_children|total_connections_received}"
  91. esac

Redis状态参数解释:

 
  1. server : Redis 服务器信息,包含以下域:
  2. redis_version : Redis 服务器版本
  3. redis_git_sha1 : Git SHA1
  4. redis_git_dirty : Git dirty flag
  5. os : Redis 服务器的宿主操作系统
  6. arch_bits : 架构(32 64 位)
  7. multiplexing_api : Redis 所使用的事件处理机制
  8. gcc_version : 编译 Redis 时所使用的 GCC 版本
  9. process_id : 服务器进程的 PID
  10. run_id : Redis 服务器的随机标识符(用于 Sentinel 和集群)
  11. tcp_port : TCP/IP 监听端口
  12. uptime_in_seconds : Redis 服务器启动以来,经过的秒数
  13. uptime_in_days : Redis 服务器启动以来,经过的天数
  14. lru_clock : 以分钟为单位进行自增的时钟,用于 LRU 管理
  15. clients : 已连接客户端信息,包含以下域:
  16. connected_clients : 已连接客户端的数量(不包括通过从属服务器连接的客户端)
  17. client_longest_output_list : 当前连接的客户端当中,最长的输出列表
  18. client_longest_input_buf : 当前连接的客户端当中,最大输入缓存
  19. blocked_clients : 正在等待阻塞命令(BLPOPBRPOPBRPOPLPUSH)的客户端的数量
  20. memory : 内存信息,包含以下域:
  21. used_memory : Redis 分配器分配的内存总量,以字节(byte)为单位
  22. used_memory_human : 以人类可读的格式返回 Redis 分配的内存总量
  23. used_memory_rss : 从操作系统的角度,返回 Redis 已分配的内存总量(俗称常驻集大小)。这个值和 top ps 等命令的输出一致。
  24. used_memory_peak : Redis 的内存消耗峰值(以字节为单位)
  25. used_memory_peak_human : 以人类可读的格式返回 Redis 的内存消耗峰值
  26. used_memory_lua : Lua 引擎所使用的内存大小(以字节为单位)
  27. mem_fragmentation_ratio : used_memory_rss used_memory 之间的比率
  28. persistence : RDB AOF 的相关信息
  29. stats : 一般统计信息
  30. replication : 主/从复制信息
  31. cpu : CPU 计算量统计信息
  32. commandstats : Redis 命令统计信息
  33. cluster : Redis 集群信息
  34. keyspace : 数据库相关的统计信息
  35. 参数还可以是下面这两个:
  36. all : 返回所有信息
  37. default : 返回默认选择的信息
  38. 当不带参数直接调用 INFO 命令时,使用 default 作为默认参数。

3.给脚本添加执行权限

 
  1. [root@linux-node1 scripts]# chmod +x redis_status.sh

4.Zabbix权限不足处理办法

 
  1. [root@linux-node1 ~]# rm -f /tmp/redis_6379.tmp

5.key的redis_status.conf的子配置文件如下:

 
  1. [root@linux-node1 ~]# cat /etc/zabbix/zabbix_agentd.d/redis_status.conf
  2. UserParameter=redis_status[*],/bin/bash /etc/zabbix/scripts/redis_status.sh "$1"

6.重启zabbix-agent

 
  1. [root@linux-node1 ~]# systemctl restart zabbix-agent

7.测试一定使用Zabbix_get来获取值

 
  1. [root@linux-node1 ~]# zabbix_get -s 192.168.90.11 -k redis_status[used_cpu_sys]
  2. 16.81

8.展示所有Key(记得将模板关联主机)如图4-14 
4-14
图4-14 
9.查看图形,如图4-15、图4-16(图形自定义)

4-15 
图4-15 
4-16
图4-16

原文地址:https://www.cnblogs.com/chenshengqun/p/7985833.html