可选的上下文可以在 用户宏 中使用, 允许用上下文特定的值覆盖默认值。
上下文是附加到宏名称中的;语法取决于上下文是否是静态文本值:
或正则表达式(支持zabbix 5.0.2及以上版本)
要注意的是:具有正则表达式上下文的宏只能在用户宏配置中定义。若regex:
前缀在其他地方用作用户宏上下文,比如在触发器表达式中,它将被视为静态上下文。
上下文引用是可选的(请参考 注意事项)。
宏上下文使用示例:
示例 描 | |
---|---|
{$LOW_SPACE_LIMIT} |
用户宏无上下文。 |
{$LOW_SPACE_LIMIT:/tmp} |
用户宏使用上下文 (静态字符串)。 |
{$LOW_SPACE_LIMIT:regex:"^/tmp$"} |
用户宏使用上下文 (正则表达式)。 与 {$LOW_SPACE_LIMIT:/tmp} 相同 |
{$LOW_SPACE_LIMIT:regex:"^/var/log/.*$"} |
用户宏使用上下文 (正则表达式)。匹配所有以 /var/log/ 开头的字符串。 |
在触发器表达式中,使用上下文用户宏可以实现更为灵活的阈值(基于低级别发现检索到的值)。例如,您可以这样来定义:
那么,在用于发现已挂载文件系统的触发器原型中,低级别发现的宏将会被用作宏上下文:
当发现不同的低空间阈值后,根据已发现的挂载点或文件系统类型,宏上下文将应用到触发器中。那么以下情况,将会触发问题事件:
<note warning>请勿创建不同的上下文宏来匹配相同的字符串,以避免未定义的行为 :::
从技术上来说,宏上下文指定使用的规则类似于 监控项键值 的参数。除非如果有个,
字符,宏上下文不是被解析为几个参数:
}
字符或者以"
字符开头的,宏上下文必须用"
引起来。引号内的引号必须用\
字符进行转义。\
字符本身是不转义, 这就意味着在引用的上下文中是不可能出现以 \
字符结尾的 —— {$MACRO:"a:\b\c\"} 这个宏是无效的。下面这些宏是等价的,它们都具有相同的上下文:{$MACRO:A}, {$MACRO: A} 和 {$MACRO:"A"}。这与监控项键值相反,'key[a]','key[ a]' 和 'key["a"]' 在语义上相同,但在独特性用途上是不同的。