6 标记

概述

标签由标签名称和标签值组成。
在对实体进行标签标记时,可以仅使用名称,或者将其与值配对(例如,mysqljiratarget:mysqlservice:jira 等)。

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

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

有关定义标签的官方 Zabbix 指南,请参考 general recommendations,以及针对以下内容的具体指南:
标签标签
triggers标签

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

  • 使用标记的模板 —— 任何由模板中的触发器创建的 主机 问题都将继承模板标签;
  • 使用标记的 主机 —— 任何 主机 问题都将继承 主机 标签;
  • 使用标记的 监控项/Web 场景 —— 任何 监控项/Web 场景问题都将继承该 监控项/Web 场景的标签;
  • 使用标记的触发器 —— 由该触发器创建的任何问题都将继承触发器标签。

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

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

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

用例

标记的常见用例如下:

  1. 标记触发器事件:

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

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

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

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

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

    • log monitoring item 触发器定义一个触发器标签,该标签将使用宏从监控项值中提取值(例如,service:{{ITEM.VALUE<N>}.regsub()})。
    • trigger configuration 中,设置 event correlation
      • 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.LASTVALUE}、{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 个字符。

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

查看事件标签

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

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