标记

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

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

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

手动关闭 生成的恢复事件也会包含从模板、主机、监控项/web 场景和触发器继承的已解析事件标签。 这些标签可在通知中使用,也可通过诸如 {EVENT.RECOVERY.TAGS}{EVENT.RECOVERY.TAGSJSON} 之类的宏访问。

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

  • 事件关联 可以基于事件标签进行配置。
  • 动作条件 可以基于事件标签进行配置。
  • 监控项问题可以基于事件标签进行分组。
  • 问题标签可用于将问题映射到 服务

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

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

标签可为以下各种实体定义:

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

TemplatesHostsItemsTriggersWeb scenarios 列表及其原型中,Tags 列同时显示普通标签和继承标签。 当悬停在继承标签上或单击继承标签时,会出现一个 JavaScript 提示框,文本为 "Inherited tag"。 如果继承标签同时也是普通标签,则会根据其所在列表显示不同的提示文本(例如,在 templates 列表中显示 "Inherited and template tag",在 hosts 列表中显示 "Inherited and host tag")。 在前端的其他位置,普通标签和继承标签会一起显示(重复项会被移除),不带图标,也不显示额外的提示文本。

有关定义标签的 一般建议,以及针对 模板监控项触发器低级别发现规则 的具体指导,请参阅 Zabbix 官方指南。

用例

标记的常见用例如下:

  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)。
    • action conditions 中使用标签过滤,以便仅接收与标签数据匹配的事件通知。
  8. 在通知中识别问题:

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

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

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

    • 定义 service tags
    • 为具有匹配标签的服务配置 service actions
    • 此外,还可以使用服务标签将服务链接到 SLA 以进行 SLA 计算。
  12. 使用服务问题标签将服务链接到问题:

    • service configuration 中定义一个 problem tag(例如,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.*} 内置宏(用于在触发器表达式中引用一个或多个主机的主机清单值)
  • 用户宏和带上下文的用户宏(上下文可包含低级别发现宏)
  • 低级别发现宏(仅用于触发器原型标签)

以下宏可用于模板、主机以及 item/web 场景的标签名称和值:

  • {HOST.HOST}、{HOST.NAME}、{HOST.CONN}、{HOST.DNS}、{HOST.IP}、{HOST.PORT} 和 {HOST.ID} 内置宏
  • {INVENTORY.*} 内置宏
  • 用户宏
  • 低级别发现宏(仅用于主机和 item 原型标签)

以下宏可用于基于触发器的通知:

  • {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 个字符。

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

查看事件标签

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

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