设为首页 收藏本站
查看: 1057|回复: 0

[经验分享] 自动化运维工具之Zabbix宏使用及用户自定义监控(三)

[复制链接]

尚未签到

发表于 2019-1-21 11:00:40 | 显示全部楼层 |阅读模式
    Zabbix宏是一种抽象(Abstraction),它根据一系列预定义的规则替换一定得文本模式,而解释器或编译器在遇到宏时会自动进行这一模式替换;
    Zabbix基于宏保存预设文本模式,并且在调用时将其替换为其中的文本;
    Zabbix有许多内置的宏,如{HOST.NAME}、{HOST.IP}、{TRIGGER.DESCRIPTION}、{TRIGGER.NAME}、
  {TRIGGER.EVENTS.ACK}等
    Zabbix为了更强的灵活性,zabbix还支持在全局、模板或主机级别使用用户自定义宏(user macro);
  用户自定义宏要使用"{$MACRO}"这种特殊的语法格式;宏可以应用在item keys和descriptions、trigger名称和表达式、主机接口IP/DNS及端口、discovery机制的SNMP协议的相关信息中等;宏名称只能使用大写字母、数字及下划线

    Zabbix宏的替换次序:首先是主机级别宏;其次是当前主机上一级模板中(直接链接至主机的模板)的宏,多个一级模板按其ID号排序;再接着是二级模板中的宏;而后依次类推;最后检查的是全局宏;zabbix如果无法查找到某主机定义使用的宏,则不会对其进行替换操作。要使用用户自定义宏,有以下两种途径:
  -->全局宏:"Administrator-->General-->Macros"
  -->主机或模板级别的宏:编辑相应的主机或模板属性即可

  

  Macros使用示例:
  -->在主机级别定义一个名为{$NETINLIMIT}的宏,以定义当前主机所接受的入站流量的合理次数:
  

  然后在主机的triggers中使用此宏:
  

  

  用户自定义监控:
  为什么要自定义KEY:
  有时候我们想让被监控端执行一个zabbix没有预定义的检测,zabbix的用户自定义参数功能提供了这个方法。我们可以在客户端配置文件zabbix_angentd.conf里面配置UserParameter.
语法如下:
UserParameter=key,command  用户自定义参数包含一个key和一个命令,key必须整个系统唯一,配置好之后,重启客户端。然后配置item,在key的位置填上我们自定义的key即可。
用户自定义参数里指定的脚本由zabbix agent来执行,最大可以返回512KB的数据.
  用户自定义KEY实例:
  简单点的命令示例:

UserParameter=ping,echo 1
如果调用ping这个key,将会收到返回值1.  更复杂的命令示例:

UserParameter=mysql.ping,mysqladmin -uroot ping|grep -c alive
如果返回1表示MySQL运行中,如果返回0表示MySQL挂了  灵活的自定义key:
如下为灵活的用户自定义参数:

UserParameter=key
  • ,command  
    参数描述
    Key唯一.
  • 表示里面可以传递多个参数
  • Command需要执行的脚本,key的[]里面的参数一一对应$1到$9,一共9个参数。$0表示脚本命令.
      注意事项
    1、如果需要使用命令行里面出现$2这种变量,那么你要使用两个$$2,例如awk ’{ print $$2 }’,之前就遇到过这个问题,不停的测试自己脚本输出正常,但是zabbix却拿不到数据,原来是出在这里。为了防止和参数冲突,所以zabbix做了这个规定。
    2、zabbix禁止使用一些不安全的参数,如下:

    \ ' ” ` * ? [ ] { } ~ $ ! & ; ( ) < > | # @  3、从zabbix 2.0开始,zabbix返回文本数据可以是空格。
      

      示例(1):获取内存空间大小
      (1)配置被监控端agent配置文件如下:
    # vim /etc/zabbix/zabbix_agentd.conf
    UserParameter=memory.free,/usr/bin/free |awk '/^Mem:/{print $4}'  重启被监控agent服务
    # service zabbix-agent restart  (2)在服务器使用shell方式获取被监控端自定义监控项数据
    # zabbix_get -s 172.16.100.4 -k "memory.free"
    297712  (3)添加为被监控对象


      示例(2):自定义key传递多个参数:监控主机内存信息
      (1)配置被监控端agent配置文件如下:
    # vim /etc/zabbix/zabbix_agentd.conf
    UserParameter=memory.usage
  • ,/bin/cat /proc/meminfo | awk '/^$1:/{print $$2}'  重启被监控agent服务
    # service zabbix-agent restart  (2)在服务器使用shell方式获取被监控端自定义监控项数据
    # zabbix_get -s 172.16.100.4 -k "memory.usage[Buffers]"
    55980
    # zabbix_get -s 172.16.100.4 -k "memory.usage[MemTotal]"
    494224  (3)添加为被监控对象





      

      实战示例:使用自定义监控nginx服务
      (1)被监控端nginx服务开启status
    # vim /etc/nginx/conf.d/default.conf
        location /status {
            stub_status   on;
            access_log  off;
            allow 172.16.0.0/16;
            deny all;
        }  重启nginx服务测试:
    # service nginx restart
    # curl http://172.16.100.4/status
    Active connections: 1
    server accepts handled requests
    2 2 2
    Reading: 0 Writing: 1 Waiting: 0  (2)配置被监控端agent配置文件如下:
    # vim /etc/zabbix/zabbix_agentd.d/nginx.conf
    UserParameter=Nginx.active
  • ,/usr/bin/curl -s "http://$1:$2/status" | awk '/^Active/ {print $NF}'
    UserParameter=Nginx.reading
  • ,/usr/bin/curl -s "http://$1:$2/status" | grep 'Reading' | cut -d" " -f2
    UserParameter=Nginx.writing
  • ,/usr/bin/curl -s "http://$1:$2/status" | grep 'Writing' | cut -d" " -f4
    UserParameter=Nginx.waiting
  • ,/usr/bin/curl -s "http://$1:$2/status" | grep 'Waiting' | cut -d" " -f6
    UserParameter=Nginx.accepted
  • ,/usr/bin/curl -s "http://$1:$2/status" | awk '/^[ \t]+[0-9]+[ \t]+[0-9]+[ \t]+[0-9]+/ {print $$1}'
    UserParameter=Nginx.handled
  • ,/usr/bin/curl -s "http://$1:$2/status" | awk '/^[ \t]+[0-9]+[ \t]+[0-9]+[ \t]+[0-9]+/ {print $$2}'
    UserParameter=Nginx.requests
  • ,/usr/bin/curl -s "http://$1:$2/status" | awk '/^[ \t]+[0-9]+[ \t]+[0-9]+[ \t]+[0-9]+/ {print $$3}'  重启被监控agent服务
    # service zabbix-agent restart  (3)在服务器使用shell方式获取被监控端自定义监控项数据
    # zabbix_get -s 172.16.100.4 -k "Nginx.accepted[172.16.100.4,80]"
    9
    # ab -n 1000 -c 100
    # zabbix_get -s 172.16.100.4 -k "Nginx.accepted[172.16.100.4,80]"
    1013  (4)添加为被监控对象




      以上zabbix宏及zabbix用户自定义监控。





  • 运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
    2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
    3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
    4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
    5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
    6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
    7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
    8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

    所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-665932-1-1.html 上篇帖子: zabbix监控之模板使用、网络发现及邮件报警功能 下篇帖子: 安装部署zabbix3.0
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    扫码加入运维网微信交流群X

    扫码加入运维网微信交流群

    扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

    扫描微信二维码查看详情

    客服E-mail:kefu@iyunv.com 客服QQ:1061981298


    QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


    提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


    本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



    合作伙伴: 青云cloud

    快速回复 返回顶部 返回列表