3 预处理示例

概述

本节展示了使用预处理步骤完成一些实际任务的示例。

过滤VMware事件日志记录

此示例使用Matches regular expression预处理步骤,从VMware事件日志中过滤不必要的事件。

1. 在正常工作的VMware Hypervisor 主机上,检查vmware.eventlog 监控项是否存在并正常工作。
请注意,如果在主机创建期间链接了VMware模板,则事件日志监控项可能已经存在于Hypervisor上。

2. 在VMware Hypervisor 主机上,create一个类型为Logdependent item,并将其事件日志监控项设置为其主监控项。

3. 在从属监控项的预处理选项卡中,点击添加以create预处理步骤,从下拉菜单中选择匹配正则表达式,然后指定以下模式之一:

  • 用于过滤所有日志事件:
.* logged in .*
  • 用于过滤“User”之后包含用户名的行:
\bUser\s+\K\S+

如果正则表达式未匹配,则从属监控项将变为不支持状态,并显示相应的错误消息。
为避免此情况,请勾选自定义失败复选框,并选择丢弃值或设置自定义值等选项。
请注意,2-监控项值预处理值不会存储在数据库中;因此,不会评估触发器,也不会生成趋势数据。

或者,您可以使用Regular expression预处理步骤提取匹配组并控制输出:

  • 用于提取并输出包含“logged in”的完整日志事件,请指定以下参数:
Pattern: .*logged in.*
       Output: \0
  • 用于提取并输出“User”之后的用户名:
Pattern: User (.*?)(?=\ )
       Output: \1

检查获取值类型

此示例使用Custom multiplier预处理步骤来检查检索到的监控项值类型是否为数字。

在监控项的预处理选项卡中,选择自定义乘数预处理步骤,并指定以下参数(将检索到的值乘以1):

1

如果预处理失败(例如,输入不是数字),则监控项将变为不支持状态,并显示相应的错误消息。 为了避免这种情况,请勾选失败时自定义复选框,并选择一个选项,例如丢弃该值或设置一个自定义值。 请注意,2-监控项值预处理值不会存储在数据库中;因此,不会评估触发器,也不会生成趋势数据。

检查不支持的值

此示例使用 Check for not supported value 预处理步骤来检查是否无法检索 监控项 值。

当一个 Zabbix server/proxy 轮询进程尝试收集一个 监控项 值时,可能会出现以下情况:

  • 返回一个有效的结果。
  • 返回一个最初看似有效但之后可能变得不受支持的结果(例如,由于预处理后的值类型不匹配)。
  • 返回一个收集值的错误,导致 监控项 变得不受支持。常见原因包括:
    • 未知的 监控项 键(对于 Zabbix agent、简单检查或 Zabbix 内部 监控项)
    • 未知的 OID(SNMP agent)、未知的传感器(IPMI agent)或没有 JMX 指标(JMX agent)
    • 无法读取 trap file(SNMP 陷阱)
    • 未找到脚本(外部检查)
    • 没有这样的 URL(HTTP agent、浏览器)
    • 登录失败(SSH agent、TELNET agent)
    • 公式语法无效(计算值)、JavaScript 语法错误(脚本)或无效的 SQL(数据库监控)

为了检测和处理收集 监控项值 的错误,您可以使用“检查不受支持的值”预处理步骤。 请注意,此步骤始终首先执行,并且仅检测预处理开始前发生的错误。

在 监控项 的“预处理”选项卡中,选择“检查不受支持的值”预处理步骤,并指定以下参数之一:

  • 对于任何错误:
Parameter: any error
  • 对于包含“cannot connect”的错误:
Parameter: error matches
       Pattern: (?i)cannot connect

然后,使用“自定义失败”选项来丢弃该值(在此情况下为错误),设置自定义值,或返回自定义错误消息。 请注意,2-监控项值预处理 值不会存储在数据库中;因此,不会评估触发器,也不会生成趋势数据。