zabbix 监控redis python3脚本
一:安装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脚本的更多相关文章
- 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监控服务部署脚本
搭建平台脚本: #!/bin/bash #zabbix监控服务部署 #脚本使用前提:yum搭建,nginx-1.12.2源码包,zabbix-3.4.4源码包,要求源码包尽量在单一目录下,最好在默认管 ...
- Zabbix监控redis status
概述 zabbix采用Trapper方式监控redis status 原理 redis-cli info命令得到redis服务器的统计信息,脚本对信息分两部分处理: (1)# Keyspace部分为Z ...
- zabbix监控redis多实例(low level discovery)
对于多实例部署的tomcat.redis等应用,可以利用zabbix的low level discovery功能来实现监控,减少重复操作. 注:Zabbix版本: Zabbix 3.0.2 一.服务 ...
- 01:zabbix监控redis
一.zabbix 自动发现并监控redis多实例 1.1 编写脚本 1.1.1 redis_low_discovery.sh 用于发现redis多实例 [root@redis02 homed]# ca ...
- zabbix监控activemq队列脚本
公司业务使用activemq5.9.1消息队列,由于队列阻塞导致程序端口无响应,并且telnet无法连通.经过over 1 hour的排查,最终定位原因activemq导致.遂写了一个监控active ...
- zabbix监控redis连接情况
配置zabbix客户端配置文件 vim /etc/zabbix/zabbix_agentd.conf 添加 Include=/etc/zabbix/zabbix_agentd.d/ 添加脚本对red ...
- zabbix监控redis的key值
配置zabbix客户端配置文件 vim /etc/zabbix/zabbix_agentd.conf 添加 Include=/etc/zabbix/zabbix_agentd.d/ 添加脚本对red ...
随机推荐
- TTTTTTTTTTTT Codeforces Round #353 (Div. 2) D 平衡二叉树的set模拟 没有很懂
题意:给你n个数字,第一个点作为根节点,然后每次插入一个节点,构建一棵平衡二叉树,并输出插入节点后该节点的父节点的值 #include <iostream> #include <cs ...
- 论文阅读:Forwarding Metamorphosis: Fast Programmable Match-Action Processing in Hardware for SDN
摘要: 在软件定义网络中,控制平面在物理上与转发平面分离,控制软件使用开放接口(例如OpenFlow)对转发平面(例如,交换机和路由器)进行编程. 本文旨在克服当前交换芯片和OpenFlow协议的两个 ...
- 论文阅读:NETFPGA SUME: TOWARD 100 GBPS AS RESEARCH COMMODITY
摘要: 数据中心网络的需求增长意味着许多组成技术不在研究社区的预算之内. NETFPGA SUME是基于FPGA的PCI Express板,具有I / O功能,可作为网络接口卡,多端口开关,防火墙或测 ...
- 文章翻译:ABP如何在EF core中添加数据过滤器
原文地址:https://aspnetboilerplate.com/Pages/Documents/Articles%5CHow-To%5Cadd-custom-data-filter-ef-cor ...
- jquery 动态增加table行,动态删除table行
在html中我们大量的用到了局部刷新,局部刷新就是使用js来动态的修改html局部的数据.下面来介绍下使用jquery来动态的增加table的行,当然这种方式可以适用到任何的html组件中去. < ...
- 第十三周Java课程学习总结
学习总结: 记事本界面: 监听适配器. 可以通过Window Adapter来实现监听. void windowActivated(WindowEvent e) 激活窗口时调用. void windo ...
- synchronized 读写同步
synchronized 读写同步 这是一道面试题,很多人也遇到了. 要求:1.读-读 不用线程同步.2.读-写 要求线程同步,写的时候不能读.3.写-写同步.写的时候不能写. java lock读写 ...
- mysql 5.7安装方法
yum方式安装rpm包形式,安装mysql的方法: 方法一: 使用yum方式,下载后离线安装mysql的安装包 安装前,先使用命令查看,确定系统未安装mysql安装包.彻底清除之前安装的mysql安装 ...
- RGB-D显著性突出物体(学习)
论文阅读:Adaptive Fusion for RGB-D Salient Object Detection 这篇代码的创新点在于使用了SW层,使用SW_logits * img_logits + ...
- leetcode 215 第K个最大的元素
此问题可转化为Top K问题进行考虑,当用小顶堆选出K个最大值时,堆顶的元素即为第k大的元素 class Solution { public: int findKthLargest(vector< ...