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

文章目录

  • 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}的宏,以定义当前主机所接受的网卡进口流量的合理大小(当然这里值根据具体情况来做,仅供一个参考)
Zabbix宏,及自动发现宏的演示_第1张图片
Zabbix宏,及自动发现宏的演示_第2张图片

宏的分类

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

  1. 系统宏变量 {MACRO}
  2. 用户自定义宏 {$MACRO}
    Zabbix宏,及自动发现宏的演示_第3张图片
  3. 自动发现宏 {#MACRO}
    Zabbix宏,及自动发现宏的演示_第4张图片

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

自定义宏演示

  1. 自定义全域宏
    我们可以通过自定义全域宏来定义用户名密码,告警触发器的值等等,通过更改全域宏的值来高效的管理zabbix的触发器或者是用户名密码
    Zabbix宏,及自动发现宏的演示_第5张图片

  2. 自定义全域宏演示
    Zabbix宏,及自动发现宏的演示_第6张图片

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

Zabbix宏,及自动发现宏的演示_第7张图片
Zabbix宏,及自动发现宏的演示_第8张图片
Zabbix宏,及自动发现宏的演示_第9张图片

  • 现在全域宏触发器{$TEST_GLOBAL_TRIGGER}的值是1,触发告警
    Zabbix宏,及自动发现宏的演示_第10张图片

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

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

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

Zabbix宏,及自动发现宏的演示_第11张图片

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

Zabbix宏,及自动发现宏的演示_第12张图片

  • 添加触发器
    Zabbix宏,及自动发现宏的演示_第13张图片

  • 修改全域宏{$TEXT_GLOBAL_TRIGGER}的值,模拟触发告警
    Zabbix宏,及自动发现宏的演示_第14张图片

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

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

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

主机层面的宏变量验证

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

Zabbix宏,及自动发现宏的演示_第15张图片

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

Zabbix宏,及自动发现宏的演示_第16张图片

  • 定义个trigger引用主机宏{$TEST_HOST_TRIGGER}
    Zabbix宏,及自动发现宏的演示_第17张图片

  • 测试效果
    lb-node1引用了该模板,其生效了上面定义的主机宏测试item
    Zabbix宏,及自动发现宏的演示_第18张图片
    还测试生效了主机宏trigger
    Zabbix宏,及自动发现宏的演示_第19张图片

  • 2.给全域宏、模板宏和主机宏都定义一个相同的{$TEST_PRIORITY_ITEM2}宏变量,观察到主机的宏变量优先级最高
    Zabbix宏,及自动发现宏的演示_第20张图片

  • 在模板里定义一个监控项,观测到模板里生效的是模板宏的值
    Zabbix宏,及自动发现宏的演示_第21张图片

  • 在主机的监控项上生效的是主机宏的值
    Zabbix宏,及自动发现宏的演示_第22张图片

自动发现宏的演示

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

  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. 配置测试的监控模板

Zabbix宏,及自动发现宏的演示_第23张图片

  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
    
    Zabbix宏,及自动发现宏的演示_第24张图片
    3. 还有一种方法:思路用root用户生成json格式的端口信息日志,然后zabbix-agent读取这个日志即可
  1. zabbix-server端测试获取agent端的端口信息

Zabbix宏,及自动发现宏的演示_第25张图片

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

Zabbix宏,及自动发现宏的演示_第26张图片

  1. 创建监控项原型

Zabbix宏,及自动发现宏的演示_第27张图片
Zabbix宏,及自动发现宏的演示_第28张图片

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

Zabbix宏,及自动发现宏的演示_第29张图片
Zabbix宏,及自动发现宏的演示_第30张图片
Zabbix宏,及自动发现宏的演示_第31张图片

  1. lb-node1主机上自动发现监听端口实现了Zabbix宏,及自动发现宏的演示_第32张图片
  • 并且监听的端口都有值了

Zabbix宏,及自动发现宏的演示_第33张图片

  • 测试关闭80端口,zabbix-agent触发告警
    Zabbix宏,及自动发现宏的演示_第34张图片

你可能感兴趣的:(Zabbix,宏,自动发现,zabbix)