zabbix⽰例之监控Redis状态
zabbix⽰例之监控Redis状态(九)
⼀、 zabbix监控单实例redis(通过⾃动发现的⽅式)
#这种⽅式呢也是不太推荐的⼀种⽅式,虽然⽐较省事,但是在出图上⾯就有点⿇烦了,这⾥脚本格式就不写的那么严谨了。
1.1 客户端的配置
⾃动发现脚本编写:
# cat /etc/zabbix/scripts/redis_parameter  #⾃动发现redis脚本参数的脚本
Bash
#!/bin/bash
/usr/local/bin/redis-cli -p 3000 -a  redis66cs "info">/home/zabbix/
cat / |grep -v "^#"|awk -F ":" {'print $1'}|grep -v [[:space:]] >/home/zabbix/tmp/info_parameter
Redis_parameter_discovery () {
Redis_Site=`cat /home/zabbix/tmp/info_parameter`
Redis_Site_Num=`echo ${Redis_Site}|awk {'print NF'}`
Redis_Site_parameter=($Redis_Site)
printf '{\n'
printf '\t"data":[\n'
for((i=0;i<${Redis_Site_Num};i++))
{
if [ `expr $i + 1 ` != ${Redis_Site_Num} ];then
printf "\t{\"{#SITENAME}\":\"${Redis_Site_parameter[$i]}\"},\n"
else
printf "\t{\"{#SITENAME}\":\"${Redis_Site_parameter[$i]}\"}\n"
fi
}
printf '\t]\n'
printf '}\n'
}
case "$1" in
redis_parameter_discovery)
Redis_parameter_discovery
;;
*)
echo "Usage:$0 redis_parameter_discovery"
;;
esac
#这是是根据之前写的硬盘⾃动发现。⽹卡⾃动发现的脚本改的,这种就是将redis的info信息⾥⾯左边的参数名都提取出来输出为json格式。创建上⾯脚本对应的⽬录和⽂件:
#mkdir /home/zabbix/tmp
#touch /home/zabbix/
#touch /home/zabbix/tmp/info_parameter
#chown -R zabbix:zabbix /home/zabbix
#chmod 777 /home/zabbix/tmp/{,info_parameter}
编写redis的info取值的脚本:
# cat /etc/zabbix/scripts/redis_info.sh  #这个脚本就是根据⾃动发现传过来的info的参数名进⾏grep取值
Bash
#!/bin/bash
/usr/local/bin/redis-cli -p 3000 -a  redis66cs "info">/home/zabbix/
Redis_Site=`cat /home/zabbix/tmp/info_parameter`
Redis_info_value=$(grep "$1"\: /home/zabbix/awk -F ":" {'print $NF'})
echo $Redis_info_value
#注意这⾥⼀定grep ⼀定要是"$1"\:这种以:结尾,⽐如:used_memory:和  used_memory_human:,会精确匹配⽽⾮模糊匹配
编写⾃定义的key:
# cat /etc/zabbix/f.d/redis_f  #redis.parameter.discovery
就是我们⾃定义的key Bash
UserParameter=redis.parameter.discovery,/etc/zabbix/scripts/redis_parameter redis_parameter_discovery
#redis.parameter.discovery这个key的作⽤就是调⽤redis_parameter这个脚本,将redis的所有info的参数名提取出来。
# cat /etc/zabbix/f.d/redis_f  #通过上⾯⾃动发现提取出来的参数名作为$1传递给下⾯的脚本Bash
UserParameter=redis.info.value[*],/etc/zabbix/scripts/redis_info.sh $1
给对应的脚本授权:
#chown -R zabbix:zabbix /etc/zabbix/*
#chmod +x  zabbix:zabbix /etc/zabbix/scripts/*
重启客户端服务:
#/etc/init.d/zabbix/zabbix_agentd restart
博⽂来⾃:www.51niux
1.2 zabbix_proxy代理的操作
#/usr/local/zabbix/bin/zabbix_get -s 192.168.14.56 -k redis.parameter.discovery  #测试redis的⾃动发现info参数的脚本Bash
{
"data":[
{"{#SITENAME}":"redis_version"},
{"{#SITENAME}":"redis_git_sha1"},
{"{#SITENAME}":"redis_git_dirty"},
{"{#SITENAME}":"redis_build_id"},
{"{#SITENAME}":"redis_mode"},
{"{#SITENAME}":"os"},
{"{#SITENAME}":"arch_bits"},
{"{#SITENAME}":"multiplexing_api"},
{"{#SITENAME}":"gcc_version"},
{"{#SITENAME}":"process_id"},
{"{#SITENAME}":"run_id"},
{"{#SITENAME}":"tcp_port"},
{"{#SITENAME}":"uptime_in_seconds"},
{"{#SITENAME}":"uptime_in_days"},
{"{#SITENAME}":"hz"},
{"{#SITENAME}":"lru_clock"},
{"{#SITENAME}":"executable"},
{"{#SITENAME}":"config_file"},
{"{#SITENAME}":"connected_clients"},
{"{#SITENAME}":"client_longest_output_list"},
{"{#SITENAME}":"client_biggest_input_buf"},
{"{#SITENAME}":"blocked_clients"},
{"{#SITENAME}":"used_memory"},
{"{#SITENAME}":"used_memory_human"},
{"{#SITENAME}":"used_memory_rss"},
{"{#SITENAME}":"used_memory_rss_human"},
{"{#SITENAME}":"used_memory_peak"},
{"{#SITENAME}":"used_memory_peak_human"},
{"{#SITENAME}":"total_system_memory"},
{"{#SITENAME}":"total_system_memory_human"},
{"{#SITENAME}":"used_memory_lua"},
{"{#SITENAME}":"used_memory_lua_human"},
{"{#SITENAME}":"maxmemory"},
{"{#SITENAME}":"maxmemory_human"},
{"{#SITENAME}":"maxmemory_policy"},
{"{#SITENAME}":"mem_fragmentation_ratio"},
{"{#SITENAME}":"mem_allocator"},
{"{#SITENAME}":"loading"},
{"{#SITENAME}":"rdb_changes_since_last_save"},
{"{#SITENAME}":"rdb_bgsave_in_progress"},
{"{#SITENAME}":"rdb_last_save_time"},
{"{#SITENAME}":"rdb_last_bgsave_status"},
{"{#SITENAME}":"rdb_last_bgsave_time_sec"},
{"{#SITENAME}":"rdb_current_bgsave_time_sec"},
{"{#SITENAME}":"aof_enabled"},
{"{#SITENAME}":"aof_rewrite_in_progress"},
{"{#SITENAME}":"aof_rewrite_scheduled"},
{"{#SITENAME}":"aof_last_rewrite_time_sec"},
{"{#SITENAME}":"aof_current_rewrite_time_sec"},
{"{#SITENAME}":"aof_last_bgrewrite_status"},
{"{#SITENAME}":"aof_last_write_status"},
{"{#SITENAME}":"total_connections_received"},
{"{#SITENAME}":"total_commands_processed"},
{"{#SITENAME}":"instantaneous_ops_per_sec"},
{"{#SITENAME}":"total_net_input_bytes"},
{"{#SITENAME}":"total_net_output_bytes"},
{"{#SITENAME}":"instantaneous_input_kbps"},
{"{#SITENAME}":"instantaneous_output_kbps"},
{"{#SITENAME}":"rejected_connections"},
{"{#SITENAME}":"sync_full"},
{"{#SITENAME}":"sync_partial_ok"},
{"{#SITENAME}":"sync_partial_err"},
{"{#SITENAME}":"expired_keys"},
{"{#SITENAME}":"evicted_keys"},
{"{#SITENAME}":"keyspace_hits"},
{"{#SITENAME}":"keyspace_misses"},
{"{#SITENAME}":"pubsub_channels"},
{"{#SITENAME}":"pubsub_patterns"},
{"{#SITENAME}":"latest_fork_usec"},
{"{#SITENAME}":"migrate_cached_sockets"},
{"{#SITENAME}":"role"},
{"{#SITENAME}":"connected_slaves"},
{"{#SITENAME}":"master_repl_offset"},
{"{#SITENAME}":"repl_backlog_active"},
{"{#SITENAME}":"repl_backlog_size"},
{"{#SITENAME}":"repl_backlog_first_byte_offset"},
{"{#SITENAME}":"repl_backlog_histlen"},
{"{#SITENAME}":"used_cpu_sys"},
{"{#SITENAME}":"used_cpu_user"},
{"{#SITENAME}":"used_cpu_sys_children"},
{"{#SITENAME}":"used_cpu_user_children"},
{"{#SITENAME}":"cluster_enabled"}
]
}
#redis的Info信息总共有82个参数,⽤上⾯的⾃定义key已经都取出来了。
# /usr/local/zabbix/bin/zabbix_get -s 192.168.14.56 -k redis.info.value[used_memory]  #测试redis.info.value传参也可以Bash
821512
1.3 zabbix服务端Web操作
创建redis模板:
#先创建redis的模板。parameter是什么意思啊
#然后创建Redis的应⽤集。
#添加⼀个⾃动发现的规则,将redis的Info信息⾥⾯的所有参数名都发现出来。
选择主机添加模板:
#上⾯已经将⼀个简单的Redis模板创建完成了,现在⼀个主机进⾏添加吧。
#点击此主机的⾃动发现,如果最后边的状态有红⾊的叹号,说明哪⾥会有问题,⿏标移动到叹号哪⾥也会有提⽰
#点击此主机的监控项选择Redis应⽤集,可以看到我们设置的⾃动发现规则⾥⾯的监控项原型⽣效了。⼀共两页82⾏。
博⽂来⾃:www.51niux
检查是否有数据:
#查看最新数据,选择主机以及应⽤集,查看是否能采集到数据。
#从上图可以看到我们已经可以对redis的info信息的每⼀项参数进⾏数据采集了.
1.4 ⼩结
好的上⾯这种利⽤⾃动发现⽅式来获取redis信息的⽅式已经展⽰完了,当然因为是⼀个简单⽰例还有可以改进的地⽅。
它的优势就是可以根据客户端的情况灵活的传递参数,⽽⾮向上⼀篇TCP连接状态那样,在Web端要定义监控项和图形。
它不好的地⽅呢就是信息太多太杂,很多信息并⾮DBA关⼼的,也就是没⽤的数据,跟直接在redis哪⾥执⾏info⼀个鸟样,另外呢全是历史记录,没图啊,没图你搞个⽑啊,看不出⾛势啊,没图咋分析问题啊。
⼆、zabbix监控redis单实例(常⽤⽅法)
2.1 客户端的操作
编写获取redis的value值的脚本:
$ cat /etc/zabbix/scripts/redis_info_value.sh
Bash
#!/bin/bash
Info_Parameter="$1"
Redis_Port="20000"
Redis_Host="127.0.0.1"
Redis_Passwd="redis48cs"
Info_file="/home/zabbix/"
/usr/local/bin/redis-cli -h 127.0.0.1 -p 20000 -a redis48cs  "info" >$Info_file
Info_Values(){
INFO_VALUE=$(grep "$Info_Parameter"\: $Info_file|awk -F ":" {'print $NF'})
echo "$INFO_VALUE"
}
Info_Values $1

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。