zabbix监控单机多实例redis脚本

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:[email protected]
@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])

原文地址:https://blog.51cto.com/phospherus/2465126

时间: 2024-11-07 02:46:21

zabbix监控单机多实例redis脚本的相关文章

zabbix监控mysql多实例和mariadb自定义脚本及其部署

最近新部署zabbix监控,发现有很多DB服务器都是mysql多实例的状态,mpm默认的mysql监控无法有效的监控mysql的运行状态和复制关系,故针对双实例的mysql制作的手工的zabbix脚本监控如下 首先新建新的zabbix的mysql多实例监控模板,操作如下 名称 为模板信息名称 类型 因为使用的脚本出发所以修改成zabbix捉捕器 键值 脚本返回的信息,可以为数值,也可以是字元,这里定义为字元 数据类型 字元 同时也可以设置主动捕捉,如下:监控多实例端口状态 名称 为模板信息名称

zabbix监控多tomcat实例

首先得介绍一下zabbix自动探索功能,举个例子,一台服务器需要监控的根目录的磁盘容量,先自定义一个key: UserParameter=disk_use[*],/usr/local/disk_use.sh $1 #disk_use是自定义的key,之后的是取值脚本 [*]代表着脚本的入参变量 $1是给这个脚本入参的变量数 该脚本的功能是根据入参变量得出磁盘容量大小 ,然后就能获取到使用情况了.但是服务器监控磁盘容量的话,肯定不会让你只监控一个根目录,比如还有/data目录,/proc目录-等等

Zabbix监控Mysql多实例自动添加

1.定义每个实例的端口 cat mysql_port 3306 3307 3308 3309 3310 3311 3312 3313 2.给所有实例创建一个zabbix用户只允许本地访问,生产环境具体权限各位看官自己看着给吧O(∩_∩)O GRANT ALL PRIVILEGES ON *.* TO [email protected]'127.0.0.1' IDENTIFIED BY 'zabbix'; 3.创建自动发现MySQL端口脚本 cat /data/PRG/zabbix/scripts

zabbix监控MySQL多实例实践

一.实践背景:一台机器上部署了多个MySQL实例,每个实例使用不同的端口,需要通过zabbix将其都纳入监控中. 二.实践方法及原理说明:1.在Zabbix上创建监控MySQL数据库使用的模版,导入案例模版:链接: https://pan.baidu.com/s/1nXooNPMXrmaAQidRrxVOLg 提取码: ure1 2.在模版上创建自动发现的规则,在自动发现规则中需要定义两个东西:a.键值 用来自动获取MySQL实例的端口,需要使用到主机宏{$MYSQLPORT} b.监控项原型

zabbix监控 openstack 的实例的资源使用情况

领导提出的需求: 在不给云主机安装客户端的情况下,监控云主机的 cpui 内存 网络 io,并且能出图. 想了几个方案: 1.ceilometer取数据,存入mangodb,用zabbix来读mangodb数据绘图 2 ceilometer 取数据 ,gnocchi来聚合数据, grafana来出图 3 ceilometer 取数据,直接把取到的数据通过zabbix trapper 丢给 zabbix,由zabbix来维护数据 4 干脆跳过 ceiometer,直接用zabbix 调libvir

zabbix监控mysql多实例自发现监控

系统运维工程师   李超 1.定义每个实例的端口 cat mysql_port  33063307330833093310  331133123313 2.给所有实例创建一个zabbix用户只允许本地访问,生产环境具体权限各位看官自己看着给吧O(∩_∩)O GRANT ALL PRIVILEGES ON *.* TO [email protected]'127.0.0.1' IDENTIFIED BY 'zabbix'; 3.创建自动发现MySQL端口脚本 cat /data/PRG/zabbi

Redis的make,make test,make install、单机多实例配置,以及API程序写数据!

最近学习王家林老师的大数据蘑菇云行动,要实现将Spark Streaming分析的数据写入到Redis.今天正好开始入手.  一.Ubuntu16安装Redis3.2.1 遇到了不少的问题,其中,make倒是没问题,make test的时候,出现了: !!! WARNING The following tests failed: *** [err]: Slave should be able to synchronize with the master in tests/integration/

Zabbix监控DB,Tomcat

因项目需要,Zabbix要监控SQL server的连接数,MySQL以及tomcat,下面是对监控上述item的简要介绍. 1. SQL server连接数 1.1 SQL server连接数 1. SQL Server查询当前连接数 2. Sql Server当前并发连接数的查看方法 3. 亲测SQLServer的最大连接数 4. SQL SERVER用户数.连接数.连接池License SELECT * FROM [Master].[dbo].[SYSPROCESSES] WHERE [D

zabbix 监控MySQL

文章:http://blog.sctux.com/?p=396 现在我来说一下我的监控环境 zabbix-3.0.3 MySQL-5.6.23 1.首先我们要登录MySQL,创建一个监控MySQL的用户 grant replication client on *.* to [email protected]'localhost'  IDENTIFIED BY 'lybackup'; 2.根据zabbix监控MySQL的key改写脚本 *******************************