6 标签化
概述
标签由标签名称和标签值组成。
为实体添加标签时,可以只使用名称,也可以将其与值配对使用(例如,mysql、jira、target:mysql、service:jira 等)。
可以为多种实体定义标签:
- 模板
- 主机
- 监控项
- Web 场景
- 触发器
- 服务
- 模板监控项和触发器
- 主机、监控项和触发器原型
在 Templates、Hosts、Items、Triggers、Web scenarios 列表及其原型中,Tags 列会同时显示常规标签和继承标签。 将鼠标悬停在 继承的 标签上或点击该标签时,会出现一个 JavaScript 工具提示,显示文本“Inherited tag”。 如果某个继承标签同时也作为常规标签存在,则会根据其所在列表显示不同的工具提示文本(例如,在 templates 列表中显示“Inherited and template tag”,或在 hosts 列表中显示“Inherited and host tag”)。 在前端的其他位置,常规标签和继承标签会一起显示(重复项会被移除),不带图标,也没有额外的工具提示文本。
有关定义标签的一般建议,请参阅 Zabbix 官方指南中的 general recommendations,以及针对 templates、items、triggers 和 low-level discovery rules 的具体说明。
标签有多种用途,其中最主要的是标记 事件。 当实体被添加标签后,任何与该已加标签实体相关的新事件都会继承其标签。 例如:
- 对已加标签的模板——任何主机问题(由该模板中的触发器创建)都会继承模板标签。
- 对已加标签的主机——任何主机问题都会继承主机标签。
- 对已加标签的监控项/Web 场景——任何监控项/Web 场景问题都会继承监控项/Web 场景标签。
- 对已加标签的触发器——由该触发器创建的任何问题都会继承触发器标签。
问题事件会继承整个实体链中的所有标签——模板、主机、监控项/Web 场景、触发器。
相同的 tag:value 组合(在宏解析后)会合并为一个,从而避免重复。
通过 manual close 生成的恢复事件,也会包含从模板、主机、监控项/Web 场景和触发器继承而来的已解析事件标签。
这些标签可在通知中使用,也可通过宏(例如 {EVENT.RECOVERY.TAGS} 和 {EVENT.RECOVERY.TAGSJSON})获取。
自定义事件标签提供了更高的灵活性。 例如:
- 可以基于事件标签配置 event correlation。
- 可以基于事件标签配置 action conditions。
- 可以基于事件标签对监控项问题进行分组。
- 可以使用问题标签将问题映射到 services。
实体可以使用相同的标签名称但不同的标签值进行标记(例如,component:memory 和 component:storage)。
同样,实体也可以同时具有无值标签和带值的同名标签(例如,database 和 database:postgresql)。
此类标签不被视为重复。
使用场景
标签的一些常见使用场景如下:
-
标记触发器事件:
- 定义一个触发器标签(例如,
scope:performance)。 - 由该触发器创建的问题将带有该触发器标签。
- 定义一个触发器标签(例如,
-
标记从模板继承的问题:
- 定义一个模板标签(例如,
target:mysql)。 - 由此模板中的触发器创建的问题将带有该模板标签。
- 定义一个模板标签(例如,
-
标记主机问题:
- 定义一个主机标签(例如,
service:jira)。 - 由该主机上的触发器创建的问题将带有该主机标签。
- 定义一个主机标签(例如,
-
过滤相关监控项:
- 定义一个监控项标签(例如,
component:cpu)。 - 在 Monitoring > Latest data 中,可以按
component:cpu标签过滤监控项。
- 定义一个监控项标签(例如,
-
使用从监控项值中提取的信息作为标签值:
- 定义一个标签,并使用宏作为标签值(例如,
tag-name:{{ITEM.VALUE<N>}.regsub()})。 - 在 Monitoring > Problems 中,问题将带有解析后的标签值,该值对应于从监控项值中提取的数据。
- 定义一个标签,并使用宏作为标签值(例如,
-
识别日志文件中的问题并分别关闭它们:
-
过滤通知:
- 定义触发器标签(例如,trigger1 使用
scope:security,trigger2 使用scope:availability)。 - 在 动作条件 中使用标签过滤,以便仅接收与标签数据匹配的事件通知。
- 定义触发器标签(例如,trigger1 使用
-
在通知中识别问题:
- 定义触发器标签。
- 在问题通知中使用 {EVENT.TAGS} 宏。
- 问题通知将包含触发器标签,从而更容易识别该通知属于哪个应用程序/服务。
-
使用模板标签简化配置任务:
- 定义一个模板触发器标签。
- 从该模板触发器创建的触发器将带有其标签。
-
使用低级别发现(LLD)中的标签创建触发器:
- 定义一个触发器原型标签,并在标签名称或值中使用 LLD 宏(例如,
scope:{#FSNAME})。 - 由该触发器原型创建的触发器将带有其标签。
- 定义一个触发器原型标签,并在标签名称或值中使用 LLD 宏(例如,
-
使用服务标签匹配服务:
-
使用服务问题标签将服务关联到问题:
-
当主机处于维护模式时抑制问题:
- 在维护期配置中定义标签。
- 带有已定义标签的问题将被抑制。
-
向用户组授予访问权限:
- 在用户组配置中定义标签。
- 用户组中的用户将只能查看带有已定义标签的问题。
配置
标签可以在专用选项卡中定义,例如在触发器配置中:

宏支持
标签中的内置宏和用户宏会在事件发生时解析。 在事件发生之前,这些宏在 Zabbix 前端中将显示为未解析状态。
低级发现宏会在发现过程中解析。
以下宏可用于触发器标签名称和值:
- {ITEM.VALUE}、{ITEM.VALUE.AGE}、{ITEM.VALUE.DATE}、{ITEM.VALUE.TIME}、{ITEM.VALUE.TIMESTAMP}、{ITEM.LASTVALUE}、{ITEM.LASTVALUE.AGE}、{ITEM.LASTVALUE.DATE}、{ITEM.LASTVALUE.TIME}、{ITEM.LASTVALUE.TIMESTAMP}、{HOST.HOST}、{HOST.NAME}、{HOST.CONN}、{HOST.DNS}、{HOST.IP}、{HOST.PORT} 和 {HOST.ID} 内置宏
- {INVENTORY.*} 内置宏(用于在触发器表达式中引用一个或多个主机的资产清单值)
- 用户宏和带上下文的用户宏(上下文中可包含低级发现宏)
- 低级发现宏(仅用于触发器原型标签)
以下宏可用于模板、主机以及监控项/Web 场景标签名称和值:
- {HOST.HOST}、{HOST.NAME}、{HOST.CONN}、{HOST.DNS}、{HOST.IP}、{HOST.PORT} 和 {HOST.ID} 内置宏
- {INVENTORY.*} 内置宏
- 用户宏
- 低级发现宏(仅用于主机和监控项原型标签)
以下宏可用于基于触发器的通知:
- {EVENT.TAGS} 和 {EVENT.RECOVERY.TAGS} 内置宏(这些宏将解析为以逗号分隔的事件标签或恢复事件标签列表)
- {EVENT.TAGSJSON} 和 {EVENT.RECOVERY.TAGSJSON} 内置宏(这些宏将解析为包含事件标签对象或恢复事件标签对象的 JSON 数组)
在触发器标签中提取子字符串
支持使用宏函数来填充标签名称或标签值时提取子字符串。 该函数会对由支持的宏获取的值应用正则表达式。 例如:
{{ITEM.VALUE}.regsub(pattern, output)}
{{ITEM.VALUE}.iregsub(pattern, output)}
{{#LLDMACRO}.regsub(pattern, output)}
{{#LLDMACRO}.iregsub(pattern, output)}
如果在宏解析后标签名称或标签值超过 255 个字符,则会被截断为 255 个字符。
另请参见:在事件标签中使用低级发现宏中的宏函数。
查看事件标签
如果已定义标签,则可在以下位置查看新事件的标签:
显示标签的顺序和数量由 监控 > 问题 或 问题仪表板部件中的 标签显示优先级 和 显示标签 筛选选项决定。 请注意,最多只能显示三个标签;如果标签数量更多,将鼠标悬停在三个点上即可在弹出窗口中查看所有标签。
