在user macros中可以使用可选的上下文,允许使用特定于上下文的值来覆盖默认值。
上下文附加在宏名称之后;其语法取决于上下文是否为静态文本值:
或正则表达式:
请注意,带有正则表达式上下文的宏只能在用户宏配置中定义。如果在其他位置(如触发器表达式)中将 regex:
前缀用作用户宏上下文,则会被视为静态上下文。
上下文的引号是可选的(另请参阅重要说明)。
宏上下文示例:
示例 | 说明 |
---|---|
{$LOW_SPACE_LIMIT} |
没有上下文的用户宏。 |
{$LOW_SPACE_LIMIT:/tmp} |
带有上下文的用户宏(静态 string)。 |
{$LOW_SPACE_LIMIT:regex:"^/tmp$"} |
带有上下文的用户宏(正则表达式)。等同于 {$LOW_SPACE_LIMIT:/tmp} 。 |
{$LOW_SPACE_LIMIT:regex:"^/var/log/.*$"} |
带有上下文的用户宏(正则表达式)。匹配所有以 /var/log/ 开头的字符串。 |
可以定义带有上下文的用户宏,以便在触发器表达式中实现更加灵活的阈值(基于低级别自动发现检索到的值)。例如,您可以定义以下宏:
然后,可以在触发器原型中使用低级别自动发现宏作为宏上下文,用于已挂载的file系统发现:
在自动发现完成后,不同的低磁盘空间阈值将根据发现的挂载点或file系统类型应用于触发器。如果以下情况发生,则会生成问题事件:
请勿create匹配相同string的不同上下文宏,以避免未定义行为。
从技术实现看,宏上下文的指定规则与item key参数类似,但存在以下差异:当出现,
字符时,宏上下文不会被解析为多个参数:
}
字符或以"
字符开头,必须使用"
进行引用。被引用的上下文内部的引号需用\
字符转义。\
字符本身不可转义,这意味着无法创建以\
字符结尾的引用上下文——例如宏{$MACRO:"a:\b\c\"}是无效的。以下宏因具有相同上下文而完全等效:{$MACRO:A}、{$MACRO: A}和{$MACRO:"A"}。这与监控项键的规则形成对比——对于键而言,'key[a]'、'key[ a]'和'key["a"]'语义相同,但在唯一性判定时被视为不同实体。