3 预处理示例

概览

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

过滤 VMware 事件日志记录

此示例使用 匹配正则表达式 预处理步骤来过滤 VMware 事件日志中的不必要事件。

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

2. 在 VMware Hypervisor 主机上,创建一个 Log 类型的 依赖监控项,并将其事件日志监控项设置为主监控项。

3. 在依赖监控项的 预处理 标签页中,点击 添加 创建预处理步骤,从下拉菜单中选择 匹配正则表达式。然后,指定以下模式之一:

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

如果未匹配正则表达式,则依赖监控项将变为不受支持,并显示相应的错误消息。 为了避免这种情况,选中 自定义失败 复选框,并选择一个选项,如丢弃值或设置自定义值。 请注意,丢弃的值不会存储在数据库中;因此,不会评估触发器,也不会生成趋势数据。

或者,您可以使用 正则表达式 预处理步骤来提取匹配组并控制输出:

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

检查检索值类型

此示例使用自定义乘数预处理步骤来检查检索的项目值类型是否为数值型。

在项目的预处理标签页中,选择自定义乘数预处理步骤,并指定以下参数(将检索的值乘以1):

1

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

检查不支持的值

此示例使用了检查不支持的值预处理步骤来检查监控项的值是否无法获取。

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

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

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

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

  • 对于任何错误:
参数: 任何错误
  • 对于包含"无法连接"的错误:
参数: 错误匹配
       模式: (?i)cannot connect

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