3 预处理示例
概述
本节展示了使用预处理步骤完成一些实际任务的示例。
过滤VMware事件日志记录
此示例使用Matches regular expression预处理步骤,从VMware事件日志中过滤不必要的事件。
1. 在正常工作的VMware Hypervisor 主机上,检查vmware.eventlog 监控项是否存在并正常工作。
请注意,如果在主机创建期间链接了VMware模板,则事件日志监控项可能已经存在于Hypervisor上。
2. 在VMware Hypervisor 主机上,create一个类型为Log的dependent 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-监控项值预处理 值不会存储在数据库中;因此,不会评估触发器,也不会生成趋势数据。