6 标签化

概述

标签由标签名称和标签值组成。 为实体添加标签时,可以只使用名称,也可以将其与值配对使用(例如,mysqljiratarget:mysqlservice:jira 等)。

可以为多种实体定义标签:

  • 模板
  • 主机
  • 监控项
  • Web 场景
  • 触发器
  • 服务
  • 模板监控项和触发器
  • 主机、监控项和触发器原型

TemplatesHostsItemsTriggersWeb scenarios 列表及其原型中,Tags 列会同时显示常规标签和继承标签。 将鼠标悬停在 继承的 标签上或点击该标签时,会出现一个 JavaScript 工具提示,显示文本“Inherited tag”。 如果某个继承标签同时也作为常规标签存在,则会根据其所在列表显示不同的工具提示文本(例如,在 templates 列表中显示“Inherited and template tag”,或在 hosts 列表中显示“Inherited and host tag”)。 在前端的其他位置,常规标签和继承标签会一起显示(重复项会被移除),不带图标,也没有额外的工具提示文本。

有关定义标签的一般建议,请参阅 Zabbix 官方指南中的 general recommendations,以及针对 templatesitemstriggerslow-level discovery rules 的具体说明。

标签有多种用途,其中最主要的是标记 事件。 当实体被添加标签后,任何与该已加标签实体相关的新事件都会继承其标签。 例如:

  • 对已加标签的模板——任何主机问题(由该模板中的触发器创建)都会继承模板标签。
  • 对已加标签的主机——任何主机问题都会继承主机标签。
  • 对已加标签的监控项/Web 场景——任何监控项/Web 场景问题都会继承监控项/Web 场景标签。
  • 对已加标签的触发器——由该触发器创建的任何问题都会继承触发器标签。

问题事件会继承整个实体链中的所有标签——模板、主机、监控项/Web 场景、触发器。 相同的 tag:value 组合(在宏解析后)会合并为一个,从而避免重复。

通过 manual close 生成的恢复事件,也会包含从模板、主机、监控项/Web 场景和触发器继承而来的已解析事件标签。 这些标签可在通知中使用,也可通过宏(例如 {EVENT.RECOVERY.TAGS}{EVENT.RECOVERY.TAGSJSON})获取。

自定义事件标签提供了更高的灵活性。 例如:

  • 可以基于事件标签配置 event correlation
  • 可以基于事件标签配置 action conditions
  • 可以基于事件标签对监控项问题进行分组。
  • 可以使用问题标签将问题映射到 services

实体可以使用相同的标签名称但不同的标签值进行标记(例如,component:memorycomponent:storage)。 同样,实体也可以同时具有无值标签和带值的同名标签(例如,databasedatabase:postgresql)。 此类标签不被视为重复。

使用场景

标签的一些常见使用场景如下:

  1. 标记触发器事件:

    • 定义一个触发器标签(例如,scope:performance)。
    • 由该触发器创建的问题将带有该触发器标签。
  2. 标记从模板继承的问题:

    • 定义一个模板标签(例如,target:mysql)。
    • 由此模板中的触发器创建的问题将带有该模板标签。
  3. 标记主机问题:

    • 定义一个主机标签(例如,service:jira)。
    • 由该主机上的触发器创建的问题将带有该主机标签。
  4. 过滤相关监控项:

    • 定义一个监控项标签(例如,component:cpu)。
    • Monitoring > Latest data 中,可以按 component:cpu 标签过滤监控项。
  5. 使用从监控项值中提取的信息作为标签值:

    • 定义一个标签,并使用宏作为标签值(例如,tag-name:{{ITEM.VALUE<N>}.regsub()})。
    • Monitoring > Problems 中,问题将带有解析后的标签值,该值对应于从监控项值中提取的数据。
  6. 识别日志文件中的问题并分别关闭它们:

    • 日志监控项 的触发器定义一个触发器标签,该标签将使用宏从监控项值中提取值(例如,service:{{ITEM.VALUE<N>}.regsub()})。
    • 触发器配置 中,设置 事件关联
      • PROBLEM event generation mode 设置为“Multiple”;
      • OK event closes 设置为“All problems if tag values match”;
      • 设置用于匹配的标签。
    • 由日志监控项触发器创建的问题将带有该触发器标签,并且会被单独关闭。
  7. 过滤通知:

    • 定义触发器标签(例如,trigger1 使用 scope:security,trigger2 使用 scope:availability)。
    • 动作条件 中使用标签过滤,以便仅接收与标签数据匹配的事件通知。
  8. 在通知中识别问题:

    • 定义触发器标签。
    • 在问题通知中使用 {EVENT.TAGS} 宏。
    • 问题通知将包含触发器标签,从而更容易识别该通知属于哪个应用程序/服务。
  9. 使用模板标签简化配置任务:

    • 定义一个模板触发器标签。
    • 从该模板触发器创建的触发器将带有其标签。
  10. 使用低级别发现(LLD)中的标签创建触发器:

    • 定义一个触发器原型标签,并在标签名称或值中使用 LLD 宏(例如,scope:{#FSNAME})。
    • 由该触发器原型创建的触发器将带有其标签。
  11. 使用服务标签匹配服务:

    • 定义服务标签
    • 为具有匹配标签的服务配置服务动作
    • 此外,还可以使用服务标签将服务关联到 SLA,以进行 SLA 计算。
  12. 使用服务问题标签将服务关联到问题:

    • 服务配置中定义一个问题标签(例如,target:mysql)。
    • 带有匹配标签的问题将自动关联到该服务,并且服务状态将根据已配置的服务状态计算规则发生变化。
  13. 当主机处于维护模式时抑制问题:

    • 维护期配置中定义标签。
    • 带有已定义标签的问题将被抑制。
  14. 向用户组授予访问权限:

    • 用户组配置中定义标签。
    • 用户组中的用户将只能查看带有已定义标签的问题。

配置

标签可以在专用选项卡中定义,例如在触发器配置中:

宏支持

标签中的内置宏和用户宏会在事件发生时解析。 在事件发生之前,这些宏在 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 个字符。

另请参见:在事件标签中使用低级发现宏中的宏函数。

查看事件标签

如果已定义标签,则可在以下位置查看新事件的标签:

显示标签的顺序和数量由 监控 > 问题问题仪表板部件中的 标签显示优先级显示标签 筛选选项决定。 请注意,最多只能显示三个标签;如果标签数量更多,将鼠标悬停在三个点上即可在弹出窗口中查看所有标签。