Zabbix宏,及自动发现宏的演示

zabbix宏的概述

宏的作用是便于在模板、Items、Trigger中的引用

Zabbix有许多内置的宏,如{HOST.NAME}、{HOST.IP}、{TRIGGER.NAME}等

详细信息请参考官方文档: https://www.zabbix.com/documentation/3.0/manual/appendix/macros/supported_by_location

为了更强的灵活性,Zabbix还支持全局宏-模板宏-主机宏级别使用用户自定义宏(user macro),用户自定义宏要使用”{$MACRO}”这种特殊的语法格式, 宏的名称只能使用大写字母、数字及下划线

宏可以应用在item keys和descriptions、Trigger名称和表达式、主机接口IP/DNS及端口、discovery机制的SNMP协议的相关信息中等。

宏的替换次序

首先是主机级别的宏;其次是当前主机上一级模板中(直接链接至主机的模板)的宏,多个一级模板按其ID号排序;

再接着是二级模板中的宏;而后依次类推;最后检查的是全局宏;

Zabbix如果无法查找到某主机定义使用的宏,则不会对其进行替换操作。要使用用户自定义宏,有以下两种途径:

全局宏:Administration→General→Macros

主机或模板级别的宏:编辑相应主机或者模板的属性即可

宏的使用示例

在主机级别定义一个名为{$NETWORK_NUMBER}的宏,以定义当前主机所接受的网卡进口流量的合理大小(当然这里值根据具体情况来做,仅供一个参考)
[外链图片转存失败(img-Lo4AkpUz-1566914604700)(9A9A554F30DB45EE8AA7455047DEE888)]
[外链图片转存失败(img-iDx2yjPz-1566914604703)(8BC7DC455B3C4A0E89E8865B2521D6D3)]

宏的分类

  • 系统宏变量 {MACRO}
  • 用户自定义宏 {$MACRO}
  • 自动发现宏 {#MACRO}

  1. 系统宏变量 {MACRO}
  2. 用户自定义宏 {$MACRO}
    [外链图片转存失败(img-5pFP2Dmt-1566914604704)(06D5FEFC30BE4D3CB519D470F55E7588)]
  3. 自动发现宏 {#MACRO}
    [外链图片转存失败(img-LYXw4588-1566914604705)(BD5BF68ACDFC4AAF926AD422697B9249)]

  • 宏变量函数
    1. regsub(,)
    2. iregsub(,)

自定义宏演示

  1. 自定义全域宏
    我们可以通过自定义全域宏来定义用户名密码,告警触发器的值等等,通过更改全域宏的值来高效的管理zabbix的触发器或者是用户名密码
    [外链图片转存失败(img-QhfGCFzM-1566914604706)(262D643695AF4D89BB0CDBCD7BB0B535)]

  2. 自定义全域宏演示
    [外链图片转存失败(img-eKWtTY2H-1566914604709)(4E13DD62C01E45468F95DAB010BF1C24)]

  • 克隆之前的触发器,修改名称为Macro测试:{$TEST_GLOBAL_ITEM}

[外链图片转存失败(img-VYftT3gE-1566914604710)(893F42024C93481786EB372D5B69E987)]
[外链图片转存失败(img-CKXTVotL-1566914604713)(CCC1EBE56F2F46EE8D9A94B1F97C1D29)]
[外链图片转存失败(img-iI2S8Qh1-1566914604714)(536895911F8247FAA3BB4728B5C35D0D)]

  • 现在全域宏触发器{$TEST_GLOBAL_TRIGGER}的值是1,触发告警
    [外链图片转存失败(img-jhtLsdBG-1566914604715)(FFACECE4E91640A6B9872E1ECA3ABEAC)]

  • 将全域宏触发器{$TEST_GLOBAL_TRIGGER}的值改为0,告警解除
    [外链图片转存失败(img-M7TvTqsR-1566914604715)(F28C0297FAD1462FA8AF651730CD89C6)]

用户自定义宏在监控模板中的使用

  • 在自定义模板中配置自定义宏{$TEST_TEMPLATE_ITEM},{$TEST_TEMPLATE_TRIGGER}

[外链图片转存失败(img-r5kQEvgR-1566914604716)(9CB75B6DA93B4EBC9E0CC0C6F7B52A6C)]

  • 在模板中克隆一个监控项,修改其名称为模板宏测试:{$TEST_TEMPLATE_ITEM}

[外链图片转存失败(img-h0zMu9vc-1566914604716)(210C16A5134647FC80604D7ADB3CA627)]

  • 添加触发器
    [外链图片转存失败(img-k5T9JC0v-1566914604717)(E76B2E4FC2244FBA8459ACF1A6DF30C5)]

  • 修改全域宏{$TEXT_GLOBAL_TRIGGER}的值,模拟触发告警
    [外链图片转存失败(img-g8pfGABh-1566914604717)(85D1AD9BE144459898C320932B3BB8FE)]

模板宏变量的优先级大于全域宏

  • 一个监控项中连接了多个模板同时这几个模板中有同名称的宏变量,那么宏变量的值优先取编号靠前的模板宏变量值

优先级:主机宏 > 模板宏 > 全域宏

主机层面的宏变量验证

  • 1.给主机上添加宏变量{$TEST_HOST_ITEM},{$TEST_HOST_TRIGGER}

[外链图片转存失败(img-tpbLZQmn-1566914604718)(18E30ECC8B904103AF380841B8731A60)]

  • 定义个item引用主机宏{$TEST_HOST_ITEM}

[外链图片转存失败(img-OSc27Tnj-1566914604718)(9795DB1FA46D4EE8B3C3329E5B5A6458)]

  • 定义个trigger引用主机宏{$TEST_HOST_TRIGGER}
    [外链图片转存失败(img-XP1vP06O-1566914604721)(CD1DFF6FF6E2410A804DCFF185ACE117)]

  • 测试效果
    lb-node1引用了该模板,其生效了上面定义的主机宏测试item
    [外链图片转存失败(img-uyd5iSnZ-1566914604722)(82B74359F44A48DB9342C174B58B6730)]
    还测试生效了主机宏trigger
    [外链图片转存失败(img-ymMqCQbC-1566914604722)(EC865E250778466D9B132DF87E4B98D9)]

  • 2.给全域宏、模板宏和主机宏都定义一个相同的{$TEST_PRIORITY_ITEM2}宏变量,观察到主机的宏变量优先级最高
    [外链图片转存失败(img-SXMGd42j-1566914604723)(BDA5B97C2A3945EBBA66067E0B87A71B)]

  • 在模板里定义一个监控项,观测到模板里生效的是模板宏的值
    [外链图片转存失败(img-WnWCBfXU-1566914604728)(80EEE75A4DF44A6E840C13A116E1D25F)][外链图片转存失败(img-XSoTnJN1-1566914604728)(0833EBADC6B84A27B7B6B0FBBA514A83)]

  • 在主机的监控项上生效的是主机宏的值
    [外链图片转存失败(img-MHoxLAdy-1566914604729)(8E0EF31A53D44D3BA6FABE73BC876C82)]

自动发现宏的演示

配置低级别自动发现的步骤

  1. 配置自动发现监控项Discovery rules(根据脚本或命令生成低级别的自动发现宏变量)
  2. 定义item原型Item prototypes(主要利用低级别自动发现产生的变量,来动态的创建监控项、触发器、图形)

实战演示低级别自动发现的配置管理

  • 演示内容:自动发现服务器本地的监听的端口,并且将这些端口进行自动化的监控和告警
  1. 配置agent客户端
[root@lb-node2 /etc/zabbix]# vim zabbix_agentd.d/userparameter_ports.conf 

UserParameter=listen.ports.discovery,python /etc/zabbix/scripts/listen_ports.py

  1. 编写获取服务端口的脚本listen_ports.py
#!/usr/bin/python

import os
import json

cmd=os.popen("""netstat -lntp|grep -v rpc|awk -F "[ :]+" '{if($4 ~ /0.0.0.0/ || $4 ~ /127.0.0.1/) print $5}'""")

ports=[]
for port in cmd.readlines():
    r=port.strip()
    ports += [{'{#PORT}':r}]

print json.dumps({'data':ports},sort_keys=True,indent=4,separators=(',',':'))

  1. 配置测试的监控模板

[外链图片转存失败(img-QLUxxSmp-1566914604729)(2741E0FDD0204527A8C9C8F9ED5D880D)][外链图片转存失败(img-1CqKjbBq-1566914604731)(51439D26F27B4370A24F2E98491A3078)]

  1. 设置zabbix权限
    默认zabbix-agent使用zabbix用户启动,为了可以是zabbix执行脚本,我们修改他的权限,给他提升权限sudovi
  • 两种方法
    1. 提升sudo权限

      [root@lb-node2 ~]# visudo

      zabbix ALL=NOPASSWD ALL

    2. 修改zabbix配置,使zabbix-agent以root用户运行(修改配置后要重启agent)

    sed -i 's@# AllowRoot=0@AllowRoot=1@g' /etc/zabbix/zabbix_agentd.conf
    
    [外链图片转存失败(img-H5PkJL29-1566914604732)(BE843706B3794E69AEB08DA9CBF8D16E)]
    3. 还有一种方法:思路用root用户生成json格式的端口信息日志,然后zabbix-agent读取这个日志即可
  1. zabbix-server端测试获取agent端的端口信息

[外链图片转存失败(img-TaKKxfB6-1566914604735)(C7BB4A82ED654AE9B82CF8DAFF5A719F)]

  1. 自动发现规则已经创建

[外链图片转存失败(img-s2uCqfAU-1566914604736)(9157AC32E90B4F6A8735973208979CFE)]

  1. 创建监控项原型

[外链图片转存失败(img-aKGooPoH-1566914604739)(BCE24807B4334B74A9107539606F2D33)]
[外链图片转存失败(img-QR9Ea6tX-1566914604740)(EB0A49B772A54D4C90E52F1C90A6BF81)]

  1. 创建监控项触发器原型

[外链图片转存失败(img-oxMJYwG4-1566914604741)(706D44DBE1EA40279066BC0032F4FDCC)][外链图片转存失败(img-22pgSuOB-1566914604741)(0364624C5B064CC0B869E6EE56E0ADD2)]
[外链图片转存失败(img-W0AIq9em-1566914604744)(1A06811EC2E94AC29D1A9036309D7FC9)]
[外链图片转存失败(img-RbiiUEuD-1566914604746)(773A1139BD12419AAA6D1B92E367FFFF)]

  1. lb-node1主机上自动发现监听端口实现了在这里插入图片描述
  • 并且监听的端口都有值了

[外链图片转存失败(img-zCcMriyw-1566914604747)(376B1358C0804399B2871EDE8D206764)]

  • 测试关闭80端口,zabbix-agent触发告警
    [外链图片转存失败(img-yrSCa9YA-1566914604752)(32674C681C9D494BB16C74C4FB63BCC5)]
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值