python-Redis cluster基础指标监控
#!/usr/local/python/shims/python
from rediscluster import StrictRedisCluster
'''
需要在宿主机python中安装rediscluster
pip install rediscluster
''' import redis
import sys
import mylog
redis_nodes = [{'host':'ip','port':port},
{'host':'ip','port':port},
{'host':'ip','port':port},
{'host':'ip','port':port},
{'host':'ip','port':port},
{'host':'ip','port':port},
] ###
进入redis集群模式,如果异常,记录到日志中,并终止脚本
### try:
redisconn = StrictRedisCluster(startup_nodes=redis_nodes,password='pwd') except Exception,e:
mylog.logging.error('%s' %e )
sys.exit(0) ###
定义参数
### data = {}
NodeData = {}
hit = 0
misshit = 0
hitrate = 0.00 ###
定义函数,抓取监控项
### def ClusterState(item):
cluster_state = redisconn.execute_command('cluster','info')
cluster_state = cluster_state.split('\r\n')
try:
for i in cluster_state:
data[i.split(':')[0]] = i.split(':')[1]
except:
pass
if item == 'clusterstatus':
state = data['cluster_state']
if state == 'ok' :
item = 1
else:
item = 0
return item elif item == 'clusterslotsfail':
item = data['cluster_slots_fail']
return item elif item == 'clusterknownnodes':
item = data['cluster_known_nodes']
return item
else:
return 9999
def NodeInfoServer(item):
node_info = redisconn.info('Server')
NodeData = node_info['ip:port']
if item == 'uptime_in_days':
item = NodeData['uptime_in_days']
return item
else:
return 9999 def NodeInfoClients(item):
node_info = redisconn.info('Clients')
NodeData = node_info['ip:port']
if item == 'connected_clients':
item = NodeData['connected_clients']
return item
else:
return 9999 def NodeInfoMemory(item):
node_info = redisconn.info('Memory')
NodeData = node_info['ip:port']
if item == 'used_memory_human':
item = NodeData['used_memory_human']
return item
elif item == 'total_system_memory_human':
item = NodeData['total_system_memory_human']
return item
else:
return 9999 def NodeInfoPersistence(item):
node_info = redisconn.info('Persistence')
NodeData = node_info['ip:port'] if item == 'rdb_last_bgsave_status':
item = NodeData['rdb_last_bgsave_status']
if item == 'ok' :
item = 1
else:
item = 0
return item
else:
return 9999 def NodeInfoStats(item):
node_info = redisconn.info('Stats')
NodeData = node_info['ip:port']
if item == 'instantaneous_ops_per_sec':
item = NodeData['instantaneous_ops_per_sec']
return item
elif item == 'instantaneous_input_kbps':
item = NodeData['instantaneous_input_kbps']
return item
elif item == 'instantaneous_output_kbps':
item = NodeData['instantaneous_output_kbps']
return item
elif item == 'hit':
hit = NodeData['keyspace_hits']
misshit = NodeData['keyspace_misses']
hitrate = round((float(hit) / float(hit + misshit)) ,3)
item = hitrate
return item
else:
return 9999 ###
脚本传参,zabbix获取监控项
### if sys.argv[1] == 'status':
print ClusterState('clusterstatus')
elif sys.argv[1] == 'slotsfail':
print ClusterState('clusterslotsfail')
elif sys.argv[1] == 'nodes':
print ClusterState('clusterknownnodes')
elif sys.argv[1] == 'day':
print NodeInfoServer('uptime_in_days')
elif sys.argv[1] == 'clients':
print NodeInfoClients('connected_clients')
elif sys.argv[1] == 'usememory':
print NodeInfoMemory('used_memory_human')
elif sys.argv[1] == 'sysmemory':
print NodeInfoMemory('total_system_memory_human')
elif sys.argv[1] == 'rdb':
print NodeInfoPersistence('rdb_last_bgsave_status')
elif sys.argv[1] == 'ops':
print NodeInfoStats('instantaneous_ops_per_sec')
elif sys.argv[1] == 'input_kbps':
print NodeInfoStats('instantaneous_input_kbps')
elif sys.argv[1] == 'output_kbps':
print NodeInfoStats('instantaneous_output_kbps')
elif sys.argv[1] == 'hit':
print NodeInfoStats('hit')
#python写一个redis监控模版,监控一些基础指标
python-Redis cluster基础指标监控的更多相关文章
- 全面剖析Redis Cluster原理和应用 (转)
1.Redis Cluster总览 1.1 设计原则和初衷 在官方文档Cluster Spec中,作者详细介绍了Redis集群为什么要设计成现在的样子.最核心的目标有三个: 性能:这是Redis赖以生 ...
- 全面剖析Redis Cluster原理和应用
全面剖析Redis Cluster原理和应用 1.Redis Cluster总览 1.1 设计原则和初衷 在官方文档Cluster Spec中,作者详细介绍了Redis集群为什么要设计成现在的样子.最 ...
- 全面剖析Redis Cluster原理和应用 (good)
redis redis cluster注意的问题 : 1.‘cluster-require-full-coverage’参数的设置.该参数是redis配置文件中cluster模式的一个参数,从字面上基 ...
- 饿了么这样跳过Redis Cluster遇到的“坑”
内容来源:2017 年 8 月 12 日,饿了么高级Python工程师黄光星在“CRUG 2017北京活动”进行<Redis Cluster运维方案>演讲分享.IT 大咖说(微信id:it ...
- Prometheus监控 Redis & Redis Cluster 说明
说明 在前面的Prometheus + Grafana 部署说明之「安装」文章里,大致介绍说明了Prometheus和Grafana的一些安装使用,现在开始如何始部署Prometheus+Grafan ...
- 实现Redis Cluster并实现Python链接集群
目录 一.Redis Cluster简单介绍 二.背景 三.环境准备 3.1 主机环境 3.2 主机规划 四.部署Redis 4.1 安装Redis软件 4.2 编辑Redis配置文件 4.3 启动R ...
- 生产消费者模式与python+redis实例运用(基础篇)
根据这个图,我们举个简单的例子:假如你去某个餐厅吃饭,点了很多菜,厨师要一个一个菜的做,一个厨师不可能同时做出所有你点的菜,于是你有两个选择:第一个,厨师把所有菜都上齐了,你才开始吃:还有一个选择,做 ...
- python 连接 redis cluster 集群
一. redis集群模式有多种, cluster模式只是其中的一种实现方式, 其原理请自行谷歌或者百度, 这里只举例如何使用Python操作 redis cluster 集群 二. python 连接 ...
- 监控redis cluster 主从实例是否切换,切换前后对应关系
需求:编写脚本实现对redis cluster 主从是否发生主从切换进行监控,若发生切换,输出切换前后主从对应关系. 初始化对比文件,仅执行一次,后续不需要在执行,除非该文件不存在. cmd=&quo ...
随机推荐
- 软件素材---linux C语言:拼接字符串函数 strcat的用例(与char数组联合使用挺好)
[头文件]#include <string.h> [原型] 1 char *strcat(char *dest, const char *src); [参数]: dest 为目标字符串指针 ...
- 使用java类加载器,报异常java.nio.file.InvalidPathException
String path = Label.class.getClassLoader().getResource("").getPath(); /F:/idea-Java/ImageD ...
- OpenCV基于字节指针进行高效像素遍历
直接获取Mat对象的像素块的数据指针,基于字节指针操作,实现快速像素遍历方法(1280x720, 彩色,仅需几毫秒完成).Mat对象的数据组织形式与像素块数据的存储方式,Mat对象由两个部分组成,元数 ...
- uwsgi03----直接部署
1.http 和 http-socket的使用上有一些区别: http: 自己会产生一个http进程(可以认为与nginx同一层)负责路由http请求给worker, http进程和worker之间使 ...
- Python3之字符串格式化format函数详解(下)
格式限定符 format通过丰富的的“格式限定符”(语法是 {}中带:号)对需要格式的内容完成更加详细的制定. 进制转换 我们可以再限定符中制定不同的字符对数字进行进制转换的格式化,进制对应的表格: ...
- idea使用maven+Tomcat
1.创建maven项目,并使用webapp骨架,并修改pom.xml文件 <build> <finalName>myWebApp</finalName> <! ...
- OpenCV学习笔记5
OpenCV学习笔记5 图像变换 傅里叶变换 这里可以先学习一下卷积分,了解清除卷积的过程和实际意义,在看这一章节的内容. 原理: 傅里叶变换经常被用来分析不同滤波器的频率特性.我们可以使用 2D 离 ...
- 机器学习之主成分分析PCA原理笔记
1. 相关背景 在许多领域的研究与应用中,通常需要对含有多个变量的数据进行观测,收集大量数据后进行分析寻找规律.多变量大数据集无疑会为研究和应用提供丰富的信息,但是也在一定程度上增加了数据采集的 ...
- Luogu5400 CTS2019随机立方体(容斥原理)
考虑容斥,计算至少有k个极大数的概率.不妨设这k个数对应的格子依次为(k,k,k)……(1,1,1).那么某一维坐标<=k的格子会对这些格子是否会成为极大数产生影响.先将这样的所有格子和一个数集 ...
- Java版Kafka使用及配置解释
Java版Kafka使用及配置解释 一.Java示例 kafka是吞吐量巨大的一个消息系统,它是用scala写的,和普通的消息的生产消费还有所不同,写了个demo程序供大家参考.kafka的安装请参考 ...