Intorduction: 最近一直有使用zabbix,根据需求需要自己手动监控一些服务,这时就需要自己动手自己写一些小脚本了,我这里写了一个比较简单的小脚本,主要用来监控monit监控的服务状态,听起来有些拗口,不过就是这样的。 这里尽可以详细的记录一下,哪里有不对欢迎指正

部署思路

  • zabbix的server端我是直接写脚本安装的。先前blog有记录过。
  • zabbix的client端和监控脚本采用ansible直接推送和安装。(ansible的配置随后再记录)

配置调试

自定义脚本

  • 脚本如下
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    
    #!/usr/bin/python
    #########################################################################
    #Author: arvon
    #Email: guoyf@easemob.com
    #Blog: arvon.top
    #Date: 16/07/06
    #Version: 1.0
    #Todo: collect the monit summary process status send to zabbix server
    ##########################################################################
    import sys
    import commands
    my_parameter = sys.argv[1]
    total_msg = commands.getoutput('monit summary')
    msg_list = total_msg.split('\n')
    a = 0
    for each_line in msg_list:
        if my_parameter in each_line and 'Process' in each_line:
            if 'Running' in each_line:
                a = 1
            else:
                a = 0
    print a
    
  • 开启client端自定义脚本选项
1
2
Include=/etc/zabbix/zabbix_agentd.d/  #在这个路径下可以放自己的配置文件
UnsafeUserParameters=1 #就是这个参数1为打开,没有脚本的话打开这个会报错的
  • 配置文件说明 自定义在/etc/zabbix/zabbix_agentd.d/下的配置文件 里面主要有两个关键因素
1
2
UserParameter=process.msg.web #这个就是定义key名称的地方,但最好定义的规整一点,还有就是别和zabbix自带的key重复
sudo python /etc/zabbix/scripts/get_monit_status.py "'nginx'"  #这个是Value,可以是脚本也可以是个命令什么,这里返回的值就是zabbixServer得到的值
  • zabbix-get测试说明 zabbix-get是zabbix的排错工具,在server上安装执行最好,-s是指定主机,-k是指定要获取哪个key对应的值,这里返回的是1,是我想用1和0在web上方便使用布尔值对服务状态做判断