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 ...
随机推荐
- 022 Android .9图片的含义及制作教程
1.图片(.9.png格式)的概念 (1)9patch图片是andriod app开发里一种特殊的图片形式,文件的扩展名为:.9.png (2)9patch图片的作用就是在图片拉伸的时候保证其不会失真 ...
- apache 代理配置
apache 2.4.6版本 <VirtualHost *:8080> ServerName 21.12.13.146 DocumentRoot /root/gbhu ErrorLog / ...
- Java基础---Java 练习题49
1.分别用do-while和for循环计算1+1/2!+1/3!+…前20项和 /** * 用do-while计算1+1/2!+1/3!+……的前20项的和 * @Hoagn * */ public ...
- 湖北校园网PC端拨号算法逆向
湖北校园网PC端拨号算法逆向 前言 上一文 PPPoE中间人拦截以及校园网突破漫谈我们谈到使用 PPPoE 拦截来获取真实的账号密码. 在这个的基础上,我对我们湖北的客户端进行了逆向,得到了拨号加密算 ...
- PHP即时实时输出内容
一般情况下,PHP都是将整个页面全部执行完成后,才会把要输出的内容发送回客户端. for ($i = 0; $i < 10; $i++) { echo $i; sleep(1); } 这段代码会 ...
- AngularJS在IE下页面缓存问题
问题: 在使用AngularJS发出请求(GET)获取服务端数据,然后再绑定到页面中,你会发现在IE中总是显示原来的数据结果.这时候我们就会知道,IE做了缓存. 解决办法: 我们可以在AngularJ ...
- 利用WkHtmlToPdf,把H5 转成PDF
工具下载地址: 链接:https://pan.baidu.com/s/1TSq2WWZcvPwuIfPRHST-FA 提取码:wkx8 原理: 通过IIS访问页面,利用WkHtmlToPdf.exe, ...
- ASP.NET Core中防跨站点请求伪造
CSRF(Cross-site request forgery)利用了web中用户身份验证的一个漏洞:简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的. 例子 在某个 ...
- js基本用法
1. 在HTML里面加入JavaScript 方法非常简单,就是通过一对<script></script>标签,然后在标签里面书写代码即可 2. 标签位置 按照以前传统的方法, ...
- 什么叫工业4.0,这篇接地气的文章终于讲懂了(ZT)
原地址:https://www.cnblogs.com/namei/p/6110382.html 笔者早年从事过工业自动化行业,后来去了几个城市,讲过<工业互联网与工业文明史>这门课,以至 ...