4 低级别发现宏

概述

有一种在 低级别自动发现 函数中使用的宏:

  1. {#MACRO}

它是一个在低级别发现规则中使用的宏,其返回文件系统名称、网络接口和SNMP OIDs等的真实值。

这些宏可以用于创建监控项、触发器和图形原型。然后,当发现真实的文件系统、网络接口等时,这些宏将被替换为真实的值,并且以这些值来创建真实的监控项、触发器和图形。

这些宏还用于在虚拟机 自动发现 中创建主机和主机组原型

一些低级别发现宏在 Zabbix 中是已经预先内置了的,例如 {#FSNAME}、{#FSTYPE}、{#IFNAME}、{#SNMPINDEX}、{#SNMPVALUE} 这些宏。但是,在创建 自定义 低级别发现规则的时候,遵守这些宏名称并不是强制性的。所以,你可以使用任何其他的低级别发现宏名称并引用该名称。

可支持的位置

低级别发现宏可以用在:

  • 在低级别规则过滤器中

  • 用于监控项原型中:

    • names

    • key parameters

    • units

    • update intervals

    • history storage periods

    • trend storage periods

    • SNMP OIDs

    • IPMI sensor fields

    • calculated item formulas

    • SSH and Telnet scripts

    • database monitoring SQL queries

    • JMX item endpoint fields

    • descriptions

    • 从Zabbix 4.0开始,也适用于:

      • item value preprocessing steps

      • HTTP agent URL field

      • HTTP agent HTTP query fields field

      • HTTP agent request body field

      • HTTP agent required status codes field

      • HTTP agent headers field key and value

      • HTTP agent HTTP authentication username field

      • HTTP agent HTTP authentication password field

      • HTTP agent HTTP proxy field

      • HTTP agent HTTP SSL certificate file field

      • HTTP agent HTTP SSL key file field

      • HTTP agent HTTP SSL key password field

      • HTTP agent HTTP timeout field

  • 用于触发器原型中:

  • names

  • operational data

  • expressions(仅用于常量和函数参数中)

  • URLs

  • descriptions

  • event tag names and values

  • 用于图形原型中:

  • names

  • 用于主机原型中:

  • names

  • visible names

  • host group prototype names

  • host macro value

  • (详细查阅 完整列表)

在上述所有位置,低级别发现宏都可以在静态用户 宏上下文 中使用。

使用宏函数

宏函数支持低级别发现的宏(除了在低级别发现规则过滤器中),允许使用正则表达式提取宏值的特定部分。

比如,您可能希望从以下低级别发现宏中提取客户名称和接口编号,以便进行事件标记:

  1. {#IFALIAS}=customername_1

为此,regsub宏函数可以与触发器原型的事件标记值字段中的宏一起使用:

4 低级别发现宏 - 图1

注意, 在未加引号的监控项 键值参数 中不允许使用逗号, 因此,包含宏函数的参数必须用引号括起来。 反斜杠(\)字符用作于转义参数内的双引号。 例如:

  1. net.if.in["{{#IFALIAS}.regsub(\"(.*)_([0-9]+)\", \1)}",bytes]

有关宏函数语法的更多信息,请参考:宏函数

从Zabbix 4.0开始,低级别发现宏就支持宏函数了。

脚注

1 在标记为单个宏的字段1中必须填满整个字段。字段中不支持多个宏或宏与文本的混合。