zabbix监控redis性能
创建采集脚本
mkdir -p /etc/zabbix/scripts
chown -R zabbix.root /etc/zabbix/scripts
vim redis_status.sh
#!/bin/bash
REDISPATH="/usr/local/redis/bin/redis-cli"
HOST="127.0.0.1"
PORT="6379"
REDIS_INFO="$REDISPATH -h $HOST -p $PORT -a xxx info" ##-a 后面跟的是redis密码
if [[ $# == 1 ]];then
case $1 in
cluster)
result=`$REDIS_INFO|/bin/grep cluster|awk -F":" '{print $NF}'`
echo $result
;;
uptime_in_seconds)
result=`$REDIS_INFO|/bin/grep uptime_in_seconds|awk -F":" '{print $NF}'`
echo $result
;;
connected_clients)
result=`$REDIS_INFO|/bin/grep connected_clients|awk -F":" '{print $NF}'`
echo $result
;;
client_longest_output_list)
result=`$REDIS_INFO|/bin/grep client_longest_output_list|awk -F":" '{print $NF}'`
echo $result
;;
client_biggest_input_buf)
result=`$REDIS_INFO|/bin/grep client_biggest_input_buf|awk -F":" '{print $NF}'`
echo $result
;;
blocked_clients)
result=`$REDIS_INFO|/bin/grep blocked_clients|awk -F":" '{print $NF}'`
echo $result
;;
#内存
used_memory)
result=`$REDIS_INFO|/bin/grep used_memory|awk -F":" '{print $NF}'|awk 'NR==1'`
echo $result
;;
used_memory_human)
result=`$REDIS_INFO|/bin/grep used_memory_human|awk -F":" '{print $NF}'|awk -F'K' '{print $1}'`
echo $result
;;
used_memory_rss)
result=`$REDIS_INFO|/bin/grep used_memory_rss|awk -F":" '{print $NF}'`
echo $result
;;
used_memory_peak)
result=`$REDIS_INFO|/bin/grep used_memory_peak|awk -F":" '{print $NF}'|awk 'NR==1'`
echo $result
;;
used_memory_peak_human)
result=`$REDIS_INFO|/bin/grep used_memory_peak_human|awk -F":" '{print $NF}'|awk -F'K' '{print $1}'`
echo $result
;;
used_memory_lua)
result=`$REDIS_INFO|/bin/grep used_memory_lua|awk -F":" '{print $NF}'`
echo $result
;;
mem_fragmentation_ratio)
result=`$REDIS_INFO|/bin/grep mem_fragmentation_ratio|awk -F":" '{print $NF}'`
echo $result
;;
#rdb
rdb_changes_since_last_save)
result=`$REDIS_INFO|/bin/grep rdb_changes_since_last_save|awk -F":" '{print $NF}'`
echo $result
;;
rdb_bgsave_in_progress)
result=`$REDIS_INFO|/bin/grep rdb_bgsave_in_progress|awk -F":" '{print $NF}'`
echo $result
;;
rdb_last_save_time)
result=`$REDIS_INFO|/bin/grep rdb_last_save_time|awk -F":" '{print $NF}'`
echo $result
;;
rdb_last_bgsave_status)
result=`$REDIS_INFO|/bin/grep -w "rdb_last_bgsave_status" | awk -F':' '{print $2}' | /bin/grep -c ok`
echo $result
;;
rdb_current_bgsave_time_sec)
result=`$REDIS_INFO|/bin/grep -w "rdb_current_bgsave_time_sec" | awk -F':' '{print $2}'`
echo $result
;;
#rdbinfo
aof_enabled)
result=`$REDIS_INFO|/bin/grep -w "aof_enabled" | awk -F':' '{print $2}'`
echo $result
;;
aof_rewrite_scheduled)
result=`$REDIS_INFO|/bin/grep -w "aof_rewrite_scheduled" | awk -F':' '{print $2}'`
echo $result
;;
aof_last_rewrite_time_sec)
result=`$REDIS_INFO|/bin/grep -w "aof_last_rewrite_time_sec" | awk -F':' '{print $2}'`
echo $result
;;
aof_current_rewrite_time_sec)
result=`$REDIS_INFO|/bin/grep -w "aof_current_rewrite_time_sec" | awk -F':' '{print $2}'`
echo $result
;;
aof_last_bgrewrite_status)
result=`$REDIS_INFO|/bin/grep -w "aof_last_bgrewrite_status" | awk -F':' '{print $2}' | /bin/grep -c ok`
echo $result
;;
#aofinfo
aof_current_size)
result=`$REDIS_INFO|/bin/grep -w "aof_current_size" | awk -F':' '{print $2}'`
echo $result
;;
aof_base_size)
result=`$REDIS_INFO|/bin/grep -w "aof_base_size" | awk -F':' '{print $2}'`
echo $result
;;
aof_pending_rewrite)
result=`$REDIS_INFO|/bin/grep -w "aof_pending_rewrite" | awk -F':' '{print $2}'`
echo $result
;;
aof_buffer_length)
result=`$REDIS_INFO|/bin/grep -w "aof_buffer_length" | awk -F':' '{print $2}'`
echo $result
;;
aof_rewrite_buffer_length)
result=`$REDIS_INFO|/bin/grep -w "aof_rewrite_buffer_length" | awk -F':' '{print $2}'`
echo $result
;;
aof_pending_bio_fsync)
result=`$REDIS_INFO|/bin/grep -w "aof_pending_bio_fsync" | awk -F':' '{print $2}'`
echo $result
;;
aof_delayed_fsync)
result=`$REDIS_INFO|/bin/grep -w "aof_delayed_fsync" | awk -F':' '{print $2}'`
echo $result
;;
#stats
total_connections_received)
result=`$REDIS_INFO|/bin/grep -w "total_connections_received" | awk -F':' '{print $2}'`
echo $result
;;
total_commands_processed)
result=`$REDIS_INFO|/bin/grep -w "total_commands_processed" | awk -F':' '{print $2}'`
echo $result
;;
instantaneous_ops_per_sec)
result=`$REDIS_INFO|/bin/grep -w "instantaneous_ops_per_sec" | awk -F':' '{print $2}'`
echo $result
;;
rejected_connections)
result=`$REDIS_INFO|/bin/grep -w "rejected_connections" | awk -F':' '{print $2}'`
echo $result
;;
expired_keys)
result=`$REDIS_INFO|/bin/grep -w "expired_keys" | awk -F':' '{print $2}'`
echo $result
;;
evicted_keys)
result=`$REDIS_INFO|/bin/grep -w "evicted_keys" | awk -F':' '{print $2}'`
echo $result
;;
keyspace_hits)
result=`$REDIS_INFO|/bin/grep -w "keyspace_hits" | awk -F':' '{print $2}'`
echo $result
;;
keyspace_misses)
result=`$REDIS_INFO|/bin/grep -w "keyspace_misses" | awk -F':' '{print $2}'`
echo $result
;;
pubsub_channels)
result=`$REDIS_INFO|/bin/grep -w "pubsub_channels" | awk -F':' '{print $2}'`
echo $result
;;
pubsub_channels)
result=`$REDIS_INFO|/bin/grep -w "pubsub_channels" | awk -F':' '{print $2}'`
echo $result
;;
pubsub_patterns)
result=`$REDIS_INFO|/bin/grep -w "pubsub_patterns" | awk -F':' '{print $2}'`
echo $result
;;
latest_fork_usec)
result=`$REDIS_INFO|/bin/grep -w "latest_fork_usec" | awk -F':' '{print $2}'`
echo $result
;;
connected_slaves)
result=`$REDIS_INFO|/bin/grep -w "connected_slaves" | awk -F':' '{print $2}'`
echo $result
;;
master_link_status)
result=`$REDIS_INFO|/bin/grep -w "master_link_status"|awk -F':' '{print $2}'|/bin/grep -c up`
echo $result
;;
master_last_io_seconds_ago)
result=`$REDIS_INFO|/bin/grep -w "master_last_io_seconds_ago"|awk -F':' '{print $2}'`
echo $result
;;
master_sync_in_progress)
result=`$REDIS_INFO|/bin/grep -w "master_sync_in_progress"|awk -F':' '{print $2}'`
echo $result
;;
slave_priority)
result=`$REDIS_INFO|/bin/grep -w "slave_priority"|awk -F':' '{print $2}'`
echo $result
;;
#cpu
used_cpu_sys)
result=`$REDIS_INFO|/bin/grep -w "used_cpu_sys"|awk -F':' '{print $2}'`
echo $result
;;
used_cpu_user)
result=`$REDIS_INFO|/bin/grep -w "used_cpu_user"|awk -F':' '{print $2}'`
echo $result
;;
used_cpu_sys_children)
result=`$REDIS_INFO|/bin/grep -w "used_cpu_sys_children"|awk -F':' '{print $2}'`
echo $result
;;
used_cpu_user_children)
result=`$REDIS_INFO|/bin/grep -w "used_cpu_user_children"|awk -F':' '{print $2}'`
echo $result
;;
*)
echo "argu error"
;;
esac
#db0:key
elif [[ $# == 2 ]];then
case $2 in
keys)
result=`$REDIS_INFO| /bin/grep -w "db0"| /bin/grep -w "$1" | /bin/grep -w "keys" | awk -F'=|,' '{print $2}'`
echo $result
;;
expires)
result=`$REDIS_INFO| /bin/grep -w "db0"| /bin/grep -w "$1" | /bin/grep -w "expires" | awk -F'=|,' '{print $4}'`
echo $result
;;
avg_ttl)
result=`$REDIS_INFO|/bin/grep -w "db0"| /bin/grep -w "$1" | /bin/grep -w "avg_ttl" | awk -F'=|,' '{print $6}'`
echo $result
;;
*)
echo "argu error" ;;
esac
fi
通过redis命令info查看出来的信息:

server : Redis 服务器信息,包含以下域:redis_version : Redis 服务器版本redis_git_sha1 : Git SHA1redis_git_dirty : Git dirty flagos : Redis 服务器的宿主操作系统arch_bits : 架构(32 或 64 位)multiplexing_api : Redis 所使用的事件处理机制gcc_version : 编译 Redis 时所使用的 GCC 版本process_id : 服务器进程的 PIDrun_id : Redis 服务器的随机标识符(用于 Sentinel 和集群)tcp_port : TCP/IP 监听端口uptime_in_seconds : 自 Redis 服务器启动以来,经过的秒数uptime_in_days : 自 Redis 服务器启动以来,经过的天数lru_clock : 以分钟为单位进行自增的时钟,用于 LRU 管理clients : 已连接客户端信息,包含以下域:connected_clients : 已连接客户端的数量(不包括通过从属服务器连接的客户端)client_longest_output_list : 当前连接的客户端当中,最长的输出列表client_longest_input_buf : 当前连接的客户端当中,最大输入缓存blocked_clients : 正在等待阻塞命令(BLPOP、BRPOP、BRPOPLPUSH)的客户端的数量memory : 内存信息,包含以下域:used_memory : 由 Redis 分配器分配的内存总量,以字节(byte)为单位used_memory_human : 以人类可读的格式返回 Redis 分配的内存总量used_memory_rss : 从操作系统的角度,返回 Redis 已分配的内存总量(俗称常驻集大小)。这个值和 top 、 ps 等命令的输出一致。used_memory_peak : Redis 的内存消耗峰值(以字节为单位)used_memory_peak_human : 以人类可读的格式返回 Redis 的内存消耗峰值used_memory_lua : Lua 引擎所使用的内存大小(以字节为单位)mem_fragmentation_ratio : used_memory_rss 和 used_memory 之间的比率persistence : RDB 和 AOF 的相关信息stats : 一般统计信息replication : 主/从复制信息cpu : CPU 计算量统计信息、commandstats : Redis 命令统计信息cluster : Redis 集群信息keyspace : 数据库相关的统计信息参数还可以是下面这两个:all : 返回所有信息default : 返回默认选择的信息
当不带参数直接调用 INFO 命令时,使用 default 作为默认参数。
赋予权限:chmod +x redis_status.sh
修改zabbix_agentd配置文件重启生效。
UserParameter=redis_status[*],/etc/zabbix/scripts/redis_status.sh $1
redis监控的参数比较多,具体根据自己的实际情况启用redis里边的应用集或者监控项,也可以自己再添加,。
默认aof未开启 以及slave这里都有监控,用不到的就停掉,这个模板。当前模板四个触发器,其中关于aof和主从的关了,只保留了redis存活状态和redis磁盘回写失败与否两个触发器。
然后zabbixweb界面创建模板,添加项目
监控项都是自定义的key值,监控项的键值需要写:redis_status[你脚本里面的一些参数,实际上也就是redis info出来的参数]
zabbix监控redis性能的更多相关文章
- zabbix监控mysql性能
使用zabbix监控mysql的三种方式 1.只是安装agent 2.启用模板监控 3.启用自定义脚本的模板监控 zabbix中默认有mysql的监控模板.默认已经在zabbix2.2及以上的版本中. ...
- Zabbix监控nginx性能的另外一种方式
Zabbix监控nginx性能的另外一种方式 nginx和php-fpm一样内建了一个状态页,对于想了解nginx的状态以及监控nginx非常有用,为了后续的zabbix监控,我们需要先启用nginx ...
- Zabbix应用六:Zabbix监控Redis
利用Zabbix监控Redis Zabbix监控redis就比较简单了,因为zabbix官方提供了监控redis的模版和脚本,而且脚本有nodejs和python两种,下载地址:https://git ...
- Zabbix 监控redis
Zabbix 监控redis 1.监控脚本,github上的 [root@localhost ~]# cat /etc/zabbix/script/redis-status.sh #!/bin/bas ...
- Zabbix监控redis status
概述 zabbix采用Trapper方式监控redis status 原理 redis-cli info命令得到redis服务器的统计信息,脚本对信息分两部分处理: (1)# Keyspace部分为Z ...
- 分布式数据存储 - Zabbix监控MySQL性能
Zabbix如何监控mysql性能,我们可以使用mysql自带的模板,可以监控如下内容:OPS(增删改查).mysql请求流量带宽,mysql响应流量带宽,最后会附上相应的监控图! 编写check_m ...
- 01:zabbix监控redis
一.zabbix 自动发现并监控redis多实例 1.1 编写脚本 1.1.1 redis_low_discovery.sh 用于发现redis多实例 [root@redis02 homed]# ca ...
- 最新 centos7下zabbix 监控redis状态
准备 先准备两台服务器,已经部署好了zabbix-sever和zabbix-agent zabbix-server 192.168.1.70 centos7.2 zabbix-agent 192.16 ...
- zabbix监控redis多实例(low level discovery)
对于多实例部署的tomcat.redis等应用,可以利用zabbix的low level discovery功能来实现监控,减少重复操作. 注:Zabbix版本: Zabbix 3.0.2 一.服务 ...
随机推荐
- [PHP开发] phpmailer问题 错误原因: Could not instantiate mail function
Send via the PHP mail() function function mail_send($header, $body) { // Create mail recipient list ...
- Scheme change not implemented
1.错误描述 2.错误原因 由于在改变Java代码中的方法或运行代码出现,导致Tomcat编译的代码不能替换工作空间的代码,即不能及时同步,出现错误 3.解决办法 (1)关闭Tomcat,clean一 ...
- Java中的表达式运算
1.问题背景 以下代码运行的结果为: A.a的值:8 b的值:7 B.a的值:8 b的值:8 C.a的值:9 b的值:7 D.a的值 ...
- TortoiseSVN设置忽略文件和目录文件夹
TortoiseSVN设置忽略文件和目录文件夹 在多数项目中你总会有文件和目录不需要进行版本控制.这可能包括一些由编译器生成的文件,*.obj,*.lst,或许是一个用于存放可执行程序的输出文件夹. ...
- 芝麻HTTP:Scrapy-Splash的安装
Scrapy-Splash是一个Scrapy中支持JavaScript渲染的工具,本节来介绍它的安装方式. Scrapy-Splash的安装分为两部分.一个是Splash服务的安装,具体是通过Dock ...
- C++遍历二维数组的四种方法
#include <iostream> using std::cin; using std::cout; using std::endl; using std::string; using ...
- 小实验3:实现haproxy的增、删、查
# Author:Alano # -*- conding:utf-8 -*- # 这里有一个问题:为什么手动删除了haproxy_new中的内容,但是执行添加命令的时候依然显示数据已经存在? f = ...
- BUAA软工第0次作业
第一部分:结缘计算机 1.你为什么选择计算机专业?你认为你的条件如何?和这些博主比呢?(必答) 我在大学之前甚至连一个萌新都算不上,根本没有任何一点计算机专业的基础. 因此在进入大学之前,计算机对于我 ...
- .Net Core从命令行读取配置文件
最近在学习博客园腾飞(jesse)的.Net Core视频教程,收益匪浅,在此作推荐 : http://video.jessetalk.cn/ 言归正传,.Net Core应用程序中如何通过命令行读取 ...
- 【Luogu1414】又是毕业季II(数论)
[Luogu1414]又是毕业季II(数论) 题面 题目背景 "叮铃铃铃",随着高考最后一科结考铃声的敲响,三年青春时光顿时凝固于此刻.毕业的欣喜怎敌那离别的不舍,憧憬着未来仍毋忘 ...