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 ...
随机推荐
- Appium移动自动化测试-----(一)Appium介绍
1.特点 appium 是一个自动化测试开源工具,支持 iOS 平台和 Android 平台上的原生应用,web应用和混合应用. “移动原生应用”是指那些用iOS或者 Android SDK 写的应用 ...
- 兔子问题(Rabbit problem)
Description 有一种兔子,出生后一个月就可以长大,然后再过一个月一对长大的兔子就可以生育一对小兔子且以后每个月都能生育一对.现在,我们有一对刚出生的这种兔子,那么,n 个月过后,我们会有多少 ...
- [bzoj5483][Usaco2018 Dec]Balance Beam_凸包_概率期望
bzoj5483 Usaco2018Dec Balance Beam 题目链接:https://lydsy.com/JudgeOnline/problem.php?id=5483 数据范围:略. 题解 ...
- _string 灵活查询
$process = (int)$_POST['process']; switch ($process) { case 0: // 全部 $where['_string'] = ' (`sale_wa ...
- QT 创建一个线程播放监控视频
1.创建一个线程类(PlayVideoThread): PlayVideoThread.h头文件 #pragma once #include <QObject> #include &quo ...
- java连接腾讯云上的redis
目录 腾讯云上的配置 redis连接单机和集群 依赖 pom.xml redis参数的配置文件 遗留问题 腾讯云上的配置 在安全组上打开相关的端口即可 "来源" 就是你的目标服务器 ...
- Hibernate持久化,生命周期
一 .生命周期 1.1 . 说明 持久化类就是我们所说的实体类,实体类(持久化类)对象是有状态的. 为什么实体类对象会有状态? 答:由于HIbernate框架是一个先映射,后操作的框架.所谓的状 ...
- (未完成)ARM-linux 移植 SDL
ref : https://blog.csdn.net/u012075739/article/details/24877639 2. 交叉编译SDL 编译SDL前先要编译其依赖库 tsl ...
- 是否应该学习qt源码(碰到问题的时候,或者文档对函数描述不清楚的时候,可以看一下)
是否应该学习qt源码 如果你想调用某个函数,但是文档并没有清晰描述这个函数的功能的时候,你就需要去阅读源码,看看Qt究竟是怎么实现的.比如用QNetworkAccessManager发送一个QHttp ...
- 偶数矩阵 Even Parity,UVa 11464
题目描述 Description 给你一个n*n的01矩阵(每个元素非0即1),你的任务是把尽量少的0变成1,使得每个元素的上.下.左.右的元素(如果存在的话)之和均为偶数.如图所示的矩阵至少要把3个 ...