zabbix监控单机多实例redis脚本
2020-01-07 23:07
1986 查看
zabbix监控单机多实例redis脚本
公司节省成本,充分利用资源,部署了单机多实例的线上情况。
作为python新手,果断决定写个很low的脚本,然后实现监控功能。
下面这个脚本实现了,discovery自动发现,然后通过一个status监控实现了,其它监控信息的自动汇报功能。
其中很low的地方在于,每个主机上的脚本必须定义本地的redis信息,比如端口,密码之类的;其实这个可以通过配置中心获取的,但是因为分享出来,所以就写了个定义的实例;还有一点大神都一般自己写socket发送数据,我这里很简单,通过shell,使用简单省事的方法。
#!/usr/bin/env python3.6 """ @author:zmoke @file: redis_monitor.py @version: @time: 2019/04/24 @email:zmoke1792@gmail.com @function: """ import redis import subprocess import sys import json class RedisApi(object): def __init__(self, name, redis_message): self.__redis_addr = redis_message[name][0] self.__redis_port = redis_message[name][1] self.__redis_password = redis_message[name][2] self.__zabbix_sender = '/usr/local/zabbix/bin/zabbix_sender' self.__zabbix_conf = '/usr/local/zabbix/conf/zabbix_agentd.conf' def connect(self): # 建立连接 try: pool = redis.ConnectionPool(host=self.__redis_addr, port=self.__redis_port, db=None, password=self.__redis_password) connection = redis.Redis(connection_pool=pool) return connection except Exception as e: print('redis connect err :%s' % e) def send_message(self, key, msg): zabbix_sender = self.__zabbix_sender, zabbix_conf = self.__zabbix_conf try: subprocess.Popen([zabbix_sender, "-c", zabbix_conf, "-k", key, "-o", msg], shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE) # print "send zabbix success" except Exception as e: print(f"Something went wrong while exectuting zabbix_sender : {e}") if __name__ == "__main__": redis_message = {'test1': ['127.0.0.1', 6379, None], 'test2': ['127.0.0.1', 6382, None]} name = sys.argv[1] if name == 'discovery': data = { "data": [ ] } for message in redis_message.keys(): # print(redis_message[message][1]) data["data"].append({"{#REDISPORT}": redis_message[message][1]}) print(json.dumps(data, sort_keys=True, indent=4)) else: api = RedisApi(name, redis_message=redis_message) con = api.connect() if con.ping(): print(0) else: print(1) messages = con.info() for key in messages.keys(): if key.startswith('db'): pass else: monitor_key = f'Redis.Info[{key}, {redis_message[name][1]}]' print(monitor_key, ":", messages[key]) # api.send_message(key=key, msg=messages[key])
相关文章推荐
- sentinel redis 集群部署+zabbix监控配置+性能测试+多实例自动配置脚本
- zabbix监控mysql多实例和mariadb自定义脚本及其部署
- zabbix监控redis多实例
- zabbix动态监控redis实例
- redis单机单实例一键安装脚本 推荐
- zabbix监控redis单实例
- 【zabbix】利用LLD自动发现功能监控多Redis实例
- Zabbix 下监控tomcat多实例,自动化脚本配置
- zabbix监控redis多实例(low level discovery)
- python脚本监控redis制作zabbix模板
- expect脚本实例-监控日至和磁盘空间
- python数据统计脚本实例mysql,redis
- zabbix监控openstack实例部署时遇到的几个问题
- zabbix监控redis
- zabbix通过orabbix和自定义脚本监控oracle数据库 推荐
- linux实战(二)----shell脚本监控实例-----日志截取三个命令在性能监控等运用中的实例解析
- zabbix 监控 redis
- Zabbix监控redis配置及宏的使用
- zabbix使用zabbix_java_gateway 监控java应用进程 主动模式 python脚本
- 单机redis多端口实例+keepalived高可用