ITPub博客

首页 > 应用开发 > IT综合 > 【zabbix】zabbix自动发现规则

【zabbix】zabbix自动发现规则

原创 IT综合 作者:小亮520cl 时间:2016-05-11 14:16:45 0 删除 编辑
当一台主机上有多个端口的时候,不可能一个个模板的导入更改,那样太麻烦,发现规则很好用
背景:
  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博客 ” ,链接:https://blog.itpub.net/29096438/viewspace-2097793/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
毕业以后专业任职数据库工程师职位,itpub一直作为自己的笔记记录的地方,blog写的不详细,草书笔记,仅供参考!

注册时间:2013-09-12

  • 博文量
    529
  • 访问量
    1126987