一:安装redis-python模块

wge  thttps://pypi.python.org/packages/source/r/redis/redis-2.9.1.tar.gz

tar xf redis-2.9.1.tar.gz

cd redis-2.9.1

python setup.py install

二:配置zabbix

(1) 将zabbix-redis.py 放入到/usr/local/zabbix/etc/scripts目录下

(2) 更改zabbix_agentd.conf include${dir}/zabbix.UserParameter

(3) 重启zabbix_agentd

killall zabbix_agentd

/usr/local/zabbix/sbin/zabbix_agentd -c/usr/local/zabbix/etc/zabbix_agentd.conf

二:主要的监控项目包括

客户端查询key值命中数和未命中数,可计算出命中率

当前redis实例的客户端连接数

当前处于阻塞状态下的客户端数量

客户端每秒执行命令的频率

连接从库的数量

内存使用状况

三:具体参数解释

keyspace_misses //表示未命中数

keyspace_hits //表示命中数

keyspace_hits_rate = keyspace_hits /(keyspace_hits + keyspace_misses)

connected_clients //客户端连接数

blocked_clients //客户端阻塞数

connected_slaves //从库数

instantaneous_ops_per_sec //客户端每秒执行命令频率

used_memory_rss //操作系统分配给redis的内存

used_memory //redis分配器分配的内存

mem_fragmentation_ratio //内存碎片比例 在理想情况下,

used_memory_rss 的值应该只比 used_memory 稍微高一点儿。当rss > used ,且两者的值相差较大时,表示存在(内部或外部的)内存碎片。 当used > rss时,表示Redis的部分内存被操作系统换出到交换空间了,在这种情况下,操作可能会产生明显的延迟。

四.监控脚本

1、python2获取reis的脚本

#!/bin/python
# -*- coding:UTF-8 -*-
#author sunkedong Mail: 512378102@qq.com QQ: 512378103
import redis
import sys """
各个参数的解释:
keyspace_misses //表示未命中数
keyspace_hits //表示命中数
keyspace_hits_rate = keyspace_hits /(keyspace_hits + keyspace_misses)
connected_clients //客户端连接数
blocked_clients //客户端阻塞数
connected_slaves //从库数
instantaneous_ops_per_sec //客户端每秒执行命令频率
used_memory_rss //操作系统分配给redis的内存
used_memory //redis分配器分配的内存
mem_fragmentation_ratio //内存碎片比例
"""
#把参数定义为列表
keyindex = ['used_memory', 'used_memory_rss', 'mem_fragmentation_ratio', 'blocked_clients', 'connected_clients',
'connected_slaves',
'instantaneous_ops_per_sec', 'keyspace_hits', 'keyspace_misses', 'keypace_query_total_count',
'keyspace_hits_rate', 'status'] returnval = None
def zabbix_faild():
print "ZBX_NOTSUPPORTED"
sys.exit(2)
if len(sys.argv) != 2: #需要有一个参数,加上程序本身是两个参数。所以判断如果没有参数,就直接提示
print len(sys.argv)
zabbix_faild() try:
conn=redis.Redis(host='172.16.17.40',port='',password='')
except Exception,e:
print e
zabbix_faild() #下面是根据参数来判断并且取值,最终返回状态,加入到zabbix中
if sys.argv[1] in keyindex:
if sys.argv[1] == 'status':#如果参数为status ,执行ping,为true返回值为1,zabbix中返回1 则表示正常。
try:
conn.ping()
returnval = 1
except Exception,e:
returnval = 0
elif sys.argv[1] == 'keyspace_hits_rate':
merit = conn.info()
keyspace_hits_count = float(merit['keyspace_hits'])
keyspace_misses_count = float(merit['keyspace_misses'])
keyspace_hits_rate = keyspace_hits_count / (keyspace_hits_count + keyspace_misses_count) * 100
returnval = keyspace_hits_rate
elif sys.argv[1] == 'keypace_query_total_count':
merit = conn.info()
keyspace_hits_count = merit['keyspace_hits']
keyspace_misses_count = merit['keyspace_misses']
keypace_query_total_count = keyspace_hits_count + keyspace_misses_count
returnval = keypace_query_total_count
else:
merit = conn.info()
try:
returnval = merit[unicode(sys.argv[1])]
except Exception,e:
pass #判断返回值状态的函数
def ret_status ():
if returnval == None:
zabbix_faild()
else:
print returnval ret_status()

2、python3获取redis 的脚本

#!/usr/bin/python
# -*- coding:UTF-8 -*-
import redis
import sys """
各个参数的解释:
keyspace_misses //表示未命中数
keyspace_hits //表示命中数
keyspace_hits_rate = keyspace_hits /(keyspace_hits + keyspace_misses)
connected_clients //客户端连接数
blocked_clients //客户端阻塞数
connected_slaves //从库数
instantaneous_ops_per_sec //客户端每秒执行命令频率
used_memory_rss //操作系统分配给redis的内存
used_memory //redis分配器分配的内存
mem_fragmentation_ratio //内存碎片比例
"""
#把参数定义为列表
keyindex = ['used_memory', 'used_memory_rss', 'mem_fragmentation_ratio', 'blocked_clients', 'connected_clients',
'connected_slaves',
'instantaneous_ops_per_sec', 'keyspace_hits', 'keyspace_misses', 'keypace_query_total_count',
'keyspace_hits_rate', 'status'] returnval = None
def zabbix_faild():
print("ZBX_NOTSUPPORTED")
sys.exit(2)
if len(sys.argv) != 2: #需要有一个参数,加上程序本身是两个参数。所以判断如果没有参数,就直接提示
zabbix_faild() try:
conn=redis.Redis(host='192.168.40.36',port='',password='')
#这个是python的语法,和python3有些不一样
# except Exception,e:
# zabbix_faild()
except Exception as e:
zabbix_faild() #下面是根据参数来判断并且取值,最终返回状态,加入到zabbix中
if sys.argv[1] in keyindex:
if sys.argv[1] == 'status':#如果参数为status ,执行ping,为true返回值为1,zabbix中返回1 则表示正常。
try:
conn.ping()
returnval = 1
except Exception as e:
returnval = 0
elif sys.argv[1] == 'keyspace_hits_rate':
merit = conn.info()
keyspace_hits_count = float(merit['keyspace_hits'])
keyspace_misses_count = float(merit['keyspace_misses'])
keyspace_hits_rate = keyspace_hits_count / (keyspace_hits_count + keyspace_misses_count) * 100
returnval = keyspace_hits_rate
elif sys.argv[1] == 'keypace_query_total_count':
merit = conn.info()
keyspace_hits_count = merit['keyspace_hits']
keyspace_misses_count = merit['keyspace_misses']
keypace_query_total_count = keyspace_hits_count + keyspace_misses_count
returnval = keypace_query_total_count
#python3 不需要unicode
# else:
# merit = conn.info()
# try:
# returnval = merit[unicode(sys.argv[1])]
# except Exception as e:
# pass
else:
merit = conn.info()
try:
returnval = merit[(sys.argv[1])]
except Exception as e:
pass #判断返回值状态的函数
def ret_status ():
if returnval == None:
zabbix_faild()
else:
print(returnval)
ret_status()

zabbix 监控redis python3脚本的更多相关文章

  1. Zabbix应用六:Zabbix监控Redis

    利用Zabbix监控Redis Zabbix监控redis就比较简单了,因为zabbix官方提供了监控redis的模版和脚本,而且脚本有nodejs和python两种,下载地址:https://git ...

  2. Zabbix 监控redis

    Zabbix 监控redis 1.监控脚本,github上的 [root@localhost ~]# cat /etc/zabbix/script/redis-status.sh #!/bin/bas ...

  3. zabbix监控服务部署脚本

    搭建平台脚本: #!/bin/bash #zabbix监控服务部署 #脚本使用前提:yum搭建,nginx-1.12.2源码包,zabbix-3.4.4源码包,要求源码包尽量在单一目录下,最好在默认管 ...

  4. Zabbix监控redis status

    概述 zabbix采用Trapper方式监控redis status 原理 redis-cli info命令得到redis服务器的统计信息,脚本对信息分两部分处理: (1)# Keyspace部分为Z ...

  5. zabbix监控redis多实例(low level discovery)

    对于多实例部署的tomcat.redis等应用,可以利用zabbix的low level discovery功能来实现监控,减少重复操作.  注:Zabbix版本: Zabbix 3.0.2 一.服务 ...

  6. 01:zabbix监控redis

    一.zabbix 自动发现并监控redis多实例 1.1 编写脚本 1.1.1 redis_low_discovery.sh 用于发现redis多实例 [root@redis02 homed]# ca ...

  7. zabbix监控activemq队列脚本

    公司业务使用activemq5.9.1消息队列,由于队列阻塞导致程序端口无响应,并且telnet无法连通.经过over 1 hour的排查,最终定位原因activemq导致.遂写了一个监控active ...

  8. zabbix监控redis连接情况

    配置zabbix客户端配置文件 vim /etc/zabbix/zabbix_agentd.conf 添加  Include=/etc/zabbix/zabbix_agentd.d/ 添加脚本对red ...

  9. zabbix监控redis的key值

    配置zabbix客户端配置文件 vim /etc/zabbix/zabbix_agentd.conf 添加  Include=/etc/zabbix/zabbix_agentd.d/ 添加脚本对red ...

随机推荐

  1. CF G. Indie Album AC自动机+fail树+线段树

    这个套路挺有意思的. 把 $trie$ 和 $fail$ 树都建出来,然后一起跑一跑就好了~ #include <queue> #include <cstdio> #inclu ...

  2. 我不熟悉的map

    讲map之前,其实很多都在set那篇讲过了.我不熟悉的set. 很多的API都类似,不会再累述. map和set都是用红黑树实现的,但是set只能存单个值,它的key和value都是同一个,map不一 ...

  3. 工具类--BeanUtils----Bean转换工具

    package com.zhouyy.netBank.util; import java.beans.PropertyDescriptor; import java.lang.reflect.Fiel ...

  4. JS框架_(JQuery.js)带阴影贴纸标签按钮

    百度云盘 传送门 密码:azo6 纯CSS带阴影贴纸标签按钮效果: <!doctype html> <html> <head> <meta charset=& ...

  5. JS框架_(Laydate.js)简单实现日期日历

    百度云盘 传送门 密码:71hf JavaScript日期与时间组件_____laydate.js 日期日历效果: <!DOCTYPE html> <html> <hea ...

  6. Java中String.getBytes()

    在Java中,String的getBytes()方法是得到一个操作系统默认的编码格式的字节数组.这个表示在不通OS下,返回的东西不一样!  String.getBytes(String decode) ...

  7. git多人参与的项目 -> 分支代码如何合并到主干

    个人理解:合并分支时候就是当前分支,与别的分支先合并一遍,然后解决分支中存在的所有冲突,之后将本地分支代码提交到git远程仓库,之后切换主干分支 ,将主干分支与分支内容合并,解决冲突, 在提交主干分支 ...

  8. LeetCode 14. 最长公共前缀(Longest Common Prefix)

    题目描述 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower","flow ...

  9. du和df目录大小不一致

    最近遇到个问题 df查看基本没有空间了 但是查找大文件 也基本没有 ,原来是之前的大文件删除了 没有生效导致的 用如下命令,查找到相关进程ID 然后kill就行了 lsof | grep delete ...

  10. SQL Server AlwaysOn原理简介

    SQL Server2012所支持的AlwaysOn技术集中了故障转移群集.数据库镜像和日志传送三者的优点,但又不相同.故障转移群集的单位是SQL实例,数据库镜像和日志传送的单位是单个用户数据库,而A ...