zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    HTML5 meta最全使用手册
    CSS3实现开门动画
    angularJS学习资源最全汇总
    酷炫放大镜canvas实现
    完成评论功能
    从首页问答标题到问答详情页
    首页列表显示全部问答,完成问答详情页布局
    制作首页的显示列表。
    发布功能完成。
    登录之后更新导航
  • 原文地址:https://www.cnblogs.com/chenshengqun/p/7985833.html
Copyright © 2011-2022 走看看