#!/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基础指标监控的更多相关文章

  1. 全面剖析Redis Cluster原理和应用 (转)

    1.Redis Cluster总览 1.1 设计原则和初衷 在官方文档Cluster Spec中,作者详细介绍了Redis集群为什么要设计成现在的样子.最核心的目标有三个: 性能:这是Redis赖以生 ...

  2. 全面剖析Redis Cluster原理和应用

    全面剖析Redis Cluster原理和应用 1.Redis Cluster总览 1.1 设计原则和初衷 在官方文档Cluster Spec中,作者详细介绍了Redis集群为什么要设计成现在的样子.最 ...

  3. 全面剖析Redis Cluster原理和应用 (good)

    redis redis cluster注意的问题 : 1.‘cluster-require-full-coverage’参数的设置.该参数是redis配置文件中cluster模式的一个参数,从字面上基 ...

  4. 饿了么这样跳过Redis Cluster遇到的“坑”

    内容来源:2017 年 8 月 12 日,饿了么高级Python工程师黄光星在“CRUG 2017北京活动”进行<Redis Cluster运维方案>演讲分享.IT 大咖说(微信id:it ...

  5. Prometheus监控 Redis & Redis Cluster 说明

    说明 在前面的Prometheus + Grafana 部署说明之「安装」文章里,大致介绍说明了Prometheus和Grafana的一些安装使用,现在开始如何始部署Prometheus+Grafan ...

  6. 实现Redis Cluster并实现Python链接集群

    目录 一.Redis Cluster简单介绍 二.背景 三.环境准备 3.1 主机环境 3.2 主机规划 四.部署Redis 4.1 安装Redis软件 4.2 编辑Redis配置文件 4.3 启动R ...

  7. 生产消费者模式与python+redis实例运用(基础篇)

    根据这个图,我们举个简单的例子:假如你去某个餐厅吃饭,点了很多菜,厨师要一个一个菜的做,一个厨师不可能同时做出所有你点的菜,于是你有两个选择:第一个,厨师把所有菜都上齐了,你才开始吃:还有一个选择,做 ...

  8. python 连接 redis cluster 集群

    一. redis集群模式有多种, cluster模式只是其中的一种实现方式, 其原理请自行谷歌或者百度, 这里只举例如何使用Python操作 redis cluster 集群 二. python 连接 ...

  9. 监控redis cluster 主从实例是否切换,切换前后对应关系

    需求:编写脚本实现对redis cluster 主从是否发生主从切换进行监控,若发生切换,输出切换前后主从对应关系. 初始化对比文件,仅执行一次,后续不需要在执行,除非该文件不存在. cmd=&quo ...

随机推荐

  1. P1993 小K的农场(差分约束)

    小K的农场 题目描述 小K在MC里面建立很多很多的农场,总共n个,以至于他自己都忘记了每个农场中种植作物的具体数量了,他只记得一些含糊的信息(共m个),以下列三种形式描述: 农场a比农场b至少多种植了 ...

  2. WUSTOJ 1311: 开心的金明(Java)动态规划-01背包

    题目链接:

  3. MySQL8.0新特性总览

    1.消除了buffer pool mutex (Percona的贡献) 2.数据字典全部采用InnoDB引擎存储,支持DDL原子性.crash safe.metadata管理更完善(可以利用ibd2s ...

  4. Ajax跨越请求失败,解决

    跨越请求 1.1什么是跨域(两个不同系统之间的访问.调用) (1)域名不同,即两个不同的应用. (2)域名相同,但是端口不同,即同一个应用中的不同子系统. 1.2 Ajax跨域请求的缺陷 (1)创建t ...

  5. QT-入门:创建项目时遇到工程工具集(Kit)找不到问题

    创建项目遇到了以下提示: Please add a kit in the options or via the maintenance tool of the SDK 解决方法: 在指定的工具链中设置 ...

  6. "一起来捉妖"怎么从瘸腿中组合到最合心意的妖灵

    背景: 最近两天活动,黑鬼白鬼合体觉醒秋容,陆无名,聂小倩,作为一个非土豪玩家,没有超高资质妖灵的我,想要在瘸腿妖灵中选取两个最佳选择,合体觉醒. 初选: 备选妖灵从5个维度录入数据,进行选择,分别为 ...

  7. Angular 学习笔记 immer 使用

    https://github.com/immerjs/immer#supported-object-types immer 是用来做 immutable 的. angular 的 change det ...

  8. shellexecute的使用和X64判断

    bool RunConsoleAsAdmin(std::string appPath, std::string param, bool wait) { LOG_INFO << " ...

  9. Java QuickSelect

    Java QuickSelect /** * <html> * <body> * <P> Copyright 1994-2018 JasonInternationa ...

  10. ef报错(因为相同类型的其他实体已具有相同的主键值)

    修改数据的时候查询了下数据 于是报错了,我吧查询不加入缓存中,吧getbyid的方法改成.AsNoTracking().FirstOrDefault(p => p.x== x)