Chinaunix首页 | 论坛 | 博客
  • 博客访问: 350560
  • 博文数量: 52
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 577
  • 用 户 组: 普通用户
  • 注册时间: 2013-04-27 14:21
个人简介

知道自己该干嘛,知道自己能干嘛

文章分类

全部博文(52)

文章存档

2019年(1)

2018年(8)

2017年(2)

2016年(11)

2015年(3)

2014年(10)

2013年(17)

我的朋友

分类: 系统运维

2013-07-17 23:20:29

          
          今天我们来介绍一下 zabbix 
Low-level discovery 功能,可以说这是zabbix 最具有代表性的功能。自动发现,如果你用过一些基础模板,你会发现模板都带有自动发现的功能,比如我们常用的发现挂载点,发现网卡,当然我们也可以定制自己的lld,而且现在关于lld的文档还是比较少,使用的人还不是很多,希望能把这个功能得到推广,让大家认识到zabbix出众之处,灵活的监控各种主机。
   
        本文章以监控memcached为例,建立一个memcached-lld, 因为memcached可能我们一个主机有多个,每个主机memcached实例可能不同,很适合这种自动发现功能。
         
         (1).  创建能返回json格式数据的脚本 (以bash脚本为例)

  1. #!/bin/bash
  2. #Fuction:memcached low-level discovery

  3. discovery() {
  4.             port=($(netstat -tpln | awk -F "[ :]+" '/[m]emcached/ && /0.0.0.0/ {print $5}'))
  5.             printf '{\n'
  6.             printf '\t"data":[\n'
  7.                for key in ${!port[@]}
  8.                    do
  9.                        if [[ "${#port[@]}" -gt 1 && "${key}" -ne "$((${#port[@]}-1))" ]];then
  10.                           printf '\t {\n'
  11.                           printf "\t\t\t\"{#MEMPORT}\":\"${port[${key}]}\"},\n"
  12.                      else [[ "${key}" -eq "((${#port[@]}-1))" ]]
  13.                           printf '\t {\n'
  14.                           printf "\t\t\t\"{#MEMPORT}\":\"${port[${key}]}\"}\n"
  15.                        fi
  16.                done
  17.                           printf '\t ]\n'
  18.                           printf '}\n'
  19. }

  20. discovery
           执行效果演示,再有一个memcached实例的主机上的返回值


 
          再有个两个memcached实例的主机上效果



       有了json串我们去验证一下,我们生成的json格式是否正常 (在线验证地址 )
       这是很重要的一步,如果json格式不正确,zabbix server 就会发出告警,说这是一个无效的json数据



          okay , 现在我们第一步工作就算是完成了,成功发现了主机内的memcached实例使用的端口

           (2). 自定义 UserParameter
         
          编辑agent配置文件 vim /usr/local/zabbix/etc/zabbix_agentd.conf
          添加自己定义的参数 
          UserParameter=mem.low.discovery,sudo /bin/bash /usr/local/zabbix/script/memcached-low.sh
          注意执行权限,如果没有权限 是无法截取数据的
          重启 agent 服务 /etc/init.d/zabbix_agentd restart

           (3). 定制 memcached-lld 模板
          
           Configuration --> Templates -->  Create template


          
         
         填写模板内容


           Templaste name : 填写一个模板名称
                        Groups : 添加可以使用模板的主机组 (我们这里添加了,2个主机组内的主机可以有使用模板的权限)

           Create application 




  
              创建 memcached-lld 使用的 Regular Expressions
              Administration --> General --> New regular expression



              Expression : 填写表达式 ( 如果是多个端口 可以这么写 ^(11211|11212)$ )
              Expression type : Result is TRUE
              图片的右侧  : 我们可以测试表达式是否正确

              添加 discovery rule


 
              填写 discovery rule 内容



                 Name : 发现条目名称
                 Type :   选择类型,选择server主动抓取数据
                 key :   填入我们 agent 配置文件中,已经定义好的 UserParameter
                 Update interval : 自动发现条目执行的间隔时间
                 Fiter Marco : 填入我们在脚本中自动以的宏变量
                 Regexp : 引用我们刚刚建立的正则表达式


                 Create item prototype ( 为自动发现的端口添加监控项 )






                      Name : 监控项名称
                      Type : 抓取数据的类型,主动抓取
                      
Type of information :  numeric ( 数字类型,进制 十进制 )
                      Key :  选择对自动发现端口的监控的key (  我们在这里选择对端口的tcp连接检测 )
                      Update interval : 抓取数据的间隔时间
                      Applications : 选取我门刚才建立的标签项
 
                      创建 tigger
                


                       Name : tigger 名称
                       
Expression : 当探测返回的数据为0时,就认为此端口无法建立tcp连接,因而触发报警。
                       我们使用的key官方文档已经定义了返回值的含义:
                       net.tcp.port[,port
                       Check, if it is possible to make TCP connection to port number port.
                       0 - cannot connect 1 - can connect
                       ip - IP address(default is 127.0.0.1)  port - port number  

                      (4). 使用 memcached-lld 模板
                      我们在新建主机的时候 让主机与memcached-lld模板 link 就可以


   
                     现在主机就已经关联了,我们设置的memcached-lld 模板,等待一会我们观察一下,关联模板主机的item
                     等待的时间与你建立 Discovery rule 里 interval 的时间相关




                现在我们看到了,已经自动发现主机的 11211 端口为 memcached 端口,而且也自动添加了相应的tigger

                    添加 Discovery rule 的整个过程我就演示完了,希望大家善用zabbix,为我们的运维工作添砖加瓦.


                                                                                                                                              emar_Cail


              参考页面 : https://www.zabbix.com/documentation/1.8/manual/config/items?s[]=net&s[]=port
                               https://www.zabbix.com/documentation/2.0/manual/discovery/low_level_discovery


阅读(4653) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~