【zabbix】zabbix自动发现规则

本文介绍如何使用Zabbix监控带有多个端口的Redis服务。通过编写Python脚本实现Redis端口信息的JSON化展示,利用正则表达式过滤不关心的端口。此外,详细说明了如何配置zabbix_agentd.conf文件及创建发现规则。
当一台主机上有多个端口的时候,不可能一个个模板的导入更改,那样太麻烦,发现规则很好用
背景:
  1. 主机:192.168.1.152
  2. redis端口:
  3. 26279
  4. 17100
  5. 17101
  6. 17102
  7. 17103
  8. 26479
  9. 15600
  10. 17200
  11. 17300
  12. 18100
  13. 11255
  14. 31000
  15. 18200
  16. 17400
  17. 17500

1、监控内容的json化

在客户端里,需要把监控的内容json化展示,然后服务端可以通过正则来过滤出结果

下面在是我的json监控redis的json展示

  1. 脚本:
  2. [root@HaoDai_App_Weight02 tmp]# more /etc/zabbix/redis_low_discovery.py
    #!/usr/bin/env python 
    import os 
    import simplejson as json
    t=os.popen("""sudo netstat -tlpn |grep redis-server|grep 0.0.0.0|awk '{print $4}'|awk -F: '{print $2}' """) 
    ports = [] 
    for port in  t.readlines(): 
            r = os.path.basename(port.strip()) 
            ports += [{'{#REDISPORT}':r}] 
    print json.dumps({'data':ports},sort_keys=True,indent=4,separators=(',',':'))

  3. [root@HaoDai_App_Weight02 tmp]# python  /etc/zabbix/redis_low_discovery.py
    {
        "data":[
            {
                "{#REDISPORT}":"26279"
            },
            {
                "{#REDISPORT}":"17100"
            },
            {
                "{#REDISPORT}":"17101"
            },
            {
                "{#REDISPORT}":"17102"
            },
            {
                "{#REDISPORT}":"17103"
            },
            {
                "{#REDISPORT}":"26479"
            },
            {
                "{#REDISPORT}":"15600"
            },
            {
                "{#REDISPORT}":"17200"
            },
            {
                "{#REDISPORT}":"17300"
            },
            {
                "{#REDISPORT}":"18100"
            },
            {
                "{#REDISPORT}":"11255"
            },
            {
                "{#REDISPORT}":"31000"
            },
            {
                "{#REDISPORT}":"18200"
            },
            {
                "{#REDISPORT}":"17400"
            },
            {
                "{#REDISPORT}":"17500"
            }
        ]
    }

给该脚本给与755权限,并修改用户与组为zabbix,同时允许zabbix用户无密码运行netstat
  1. echo "zabbix ALL=(root) NOPASSWD:/bin/netstat">>/etc/sudoers

#Disable requiretty

  1. sed -i 's/^Defaults.*.requiretty/#Defaults requiretty/' /etc/sudoers
2、修改zabbix_agentd.conf文件
  1. 添加:
  2. UserParameter=redis.discovery,/etc/zabbix/redis_low_discovery.py                                  ------key名下面的发现规则需要填写的
    UserParameter=redis_status[*], /usr/local/bin/redis-cli  -p $1 info  |grep $2|cut -d : -f2


3 测试一下
  1. [root@HaoDai_App_Weight02 tmp]# zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf   -t  redis.discovery
    redis.discovery                               [t|{
        "data":[
            {
                "{#REDISPORT}":"26279"
            },
            {
                "{#REDISPORT}":"17100"
            },
            {
                "{#REDISPORT}":"17101"
            },
            {
                "{#REDISPORT}":"17102"
            },
            {
                "{#REDISPORT}":"17103"
            },
            {
                "{#REDISPORT}":"26479"
            },
            {
                "{#REDISPORT}":"15600"
            },
            {
                "{#REDISPORT}":"17200"
            },
            {
                "{#REDISPORT}":"17300"
            },
            {
                "{#REDISPORT}":"18100"
            },
            {
                "{#REDISPORT}":"11255"
            },
            {
                "{#REDISPORT}":"31000"
            },
            {
                "{#REDISPORT}":"18200"
            },
            {
                "{#REDISPORT}":"17400"
            },
            {
                "{#REDISPORT}":"17500"
            }
        ]
    }]
    [root@HaoDai_App_Weight02 tmp]# zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf   -t  redis_status[11255,role]
    redis_status[11255,role]                      [t|slave]

4 重启zabbix服务

网页端:
1 创建模板》创建应用》创建发现规则


发现规则如下:

filters可以过滤掉一些不想看的端口 r如:

2、设置正则

在“管理”=》“一般”=》“正则表达式”里,选择“新的正则表达式”

然后设置类似如下



需要的端口写进去,不需要的端口排除掉就好啦

3、主机关联模板

把需要监控mysql实例的主机管理模板即可监控,默认是3600秒后自动更新,如下图

上面的fiflter页面



发现规则下建立相应的items事件


建立对应的触发器以及graphs图等



最后的效果图



这里主要介绍了一下思路,网上有很多写好的模板直接可以下下来,然后写上对应的发现规则就好了!
我的模板
http://pan.baidu.com/s/1c2DKWLE

参考文档
http://dl528888.blog.51cto.com/2382721/1357713   ---监控多个mysql

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29096438/viewspace-2097793/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29096438/viewspace-2097793/

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值