在预处理过程中,可以对接收到的监控项值进行转换,然后再将其保存到数据库中。
这种功能有很多用途。例如,您可能想要:
可以进行一个或多个转换。转换(预处理步骤)按照定义的顺序执行。
如果任何预处理步骤失败,监控项将变为不支持。可以通过失败时自定义错误处理(适用于支持的转换)来避免这种情况,该错误处理可以配置为丢弃值或设置指定值。
为了确保配置的预处理管道正常工作,可以测试它。
对于日志监控项,即使最初的错误是在从代理接收到日志值后发生的,日志元数据(没有值)也将始终重置监控项不支持状态并使监控项重新变为支持状态。
预处理由 Zabbix 服务器或代理完成(如果监控项由代理监控)。
请注意,传递到预处理的所有值都是字符串类型;预处理管道结束时会将其转换为所需的值类型(如监控项配置中定义的)。然而,如果相应的预处理步骤需要,也可能发生转换。有关更多技术信息,请参阅预处理详情。
另见:正则表达式预处理示例。
预处理步骤在监控项配置表单的预处理选项卡中定义。
点击添加以选择支持的转换。
当定义了至少一个预处理步骤时,信息类型字段显示在选项卡底部。如果需要,可以在不离开预处理选项卡的情况下更改信息类型。有关详细的参数描述,请参阅创建监控项。
以下列出了所有支持的转换。点击转换名称以查看详细信息。
名称 | 描述 | 类型 |
---|---|---|
正则表达式 | 将值与正则表达式匹配并替换为所需的输出。 | 文本 |
替换 | 查找搜索字符串并将其替换为另一个(或不替换)。 | |
去除空格 | 删除值开头和结尾的指定字符。 | |
右去除空格 | 删除值末尾的指定字符。 | |
左去除空格 | 删除值开头的指定字符。 | |
XML XPath | 使用XPath功能从XML数据中提取值或片段。 | 结构化数据 |
JSON Path | 使用JSONPath功能从JSON数据中提取值或片段。 | |
CSV转JSON | 将CSV文件数据转换为JSON格式。 | |
XML转JSON | 将XML格式的数据转换为JSON。 | |
SNMP遍历值 | 通过指定的OID/MIB名称提取值并应用格式选项。 | SNMP |
SNMP遍历到JSON | 将SNMP值转换为JSON。 | |
SNMP获取值 | 将格式选项应用于SNMP获取值。 | |
自定义乘法器 | 将值乘以指定的整数或浮点数。 | 算术 |
简单变化 | 计算当前值和前一个值之间的差异。 | 变化 |
每秒变化 | 计算每秒的值变化(当前值和前一个值之间的差异速度)。 | |
布尔值转十进制 | 将布尔格式的值转换为十进制。 | 数字系统 |
八进制转十进制 | 将八进制格式的值转换为十进制。 | |
十六进制转十进制 | 将十六进制格式的值转换为十进制。 | |
JavaScript | 输入JavaScript代码。 | 自定义脚本 |
范围内 | 定义值应在的范围内。 | 验证 |
匹配正则表达式 | 指定值必须匹配的正则表达式。 | |
不匹配正则表达式 | 指定值不能匹配的正则表达式。 | |
检查JSON中的错误 | 在JSONPath中检查应用程序级错误消息。 | |
检查XML中的错误 | 在XPath中检查应用程序级错误消息。 | |
使用正则表达式检查错误 | 使用正则表达式检查应用程序级错误消息。 | |
检查不支持的值 | 检查是否在检索监控项值时出错。 | |
丢弃未更改的值 | 如果值没有变化则丢弃。 | 节流 |
带心跳的丢弃未更改的值 | 如果值在定义的时间段内没有变化则丢弃。 | |
Prometheus模式 | 使用以下查询从Prometheus指标中提取所需数据。 | Prometheus |
Prometheus到JSON | 将所需的Prometheus指标转换为JSON。 |
请注意,对于变化和节流预处理步骤,Zabbix需要记住最后一个值以按要求计算/比较新值。这些先前的值由预处理管理器处理。如果Zabbix服务器或代理重启或对预处理步骤进行了任何更改,对应监控项的最后一个值将被重置,导致:
将值与正则表达式匹配并替换为所需的输出。
参数:
备注:
查找搜索字符串并将其替换为另一个字符串(或不替换)。
参数:
备注:
从值的开头和结尾移除指定的字符。
从值的结尾移除指定的字符。
从值的开头移除指定的字符。
使用 XPath 功能从 XML 数据中提取值或片段。
备注:
示例:
number(/document/item/value) #将从 <document><item><value>10</value></item></document> 提取 '10'
number(/document/item/@attribute) #将从 <document><item attribute="10"></item></document> 提取 '10'
/document/item #将从 <document><item><value>10</value></item></document> 提取 '<item><value>10</value></item>'
使用 JSONPath 功能 从 JSON 数据中提取值或片段。
如果勾选 自定义错误处理 选项,可以指定自定义错误处理选项:丢弃值、设置指定值或设置指定错误消息。如果预处理步骤失败,选择丢弃值或设置指定值选项时,监控项不会变为不支持状态。
将 CSV 文件数据转换为 JSON 格式。
更多信息,请参见:CSV to JSON 预处理。
将 XML 格式的数据转换为 JSON。
更多信息,请参见:序列化规则。
如果选中 Custom on fail 复选框,可以指定自定义错误处理选项:丢弃值、设置指定值或设置指定错误消息。在预处理步骤失败的情况下,如果选择丢弃值或设置指定值,监控项将不会变为不受支持。
通过指定的OID/MIB名称提取值并应用格式化选项:
' '
被替换为':'
);如果勾选自定义失败处理复选框,则可以指定自定义错误处理选项:丢弃值、设置指定值或设置指定错误消息。在预处理步骤失败的情况下,如果选择丢弃值或设置指定值,该项目不会变为不受支持。
将SNMP值转换为JSON。
在JSON中指定一个字段名称和相应的SNMP OID路径。字段值将由指定SNMP OID路径中的值填充。
注释:
对SNMP 取值应用格式化选项:
' '
被替换为':'
);如果勾选自定义失败处理复选框,则可以指定自定义错误处理选项:丢弃值、设置指定值或设置指定错误消息。在预处理步骤失败的情况下,如果选择丢弃值或设置指定值,该项目不会变为不受支持。
将值乘以指定的整数或浮点数。
注释:
1e+70
;用户宏和LLD宏;包含宏的字符串,例如,{#MACRO}e+10
,{$MACRO1}e+{$MACRO2}
。宏必须解析为整数或浮点数。计算当前值和前一个值之间的差异。
注释:
计算每秒的值变化(当前值与前一个值之间的差异速度)。
注释:
将值从布尔格式转换为十进制。
注释:
将值从八进制格式转换为十进制。
如果勾选自定义失败处理复选框,则可以指定自定义错误处理选项:丢弃值、设置指定值或设置指定错误消息。在预处理步骤失败的情况下,如果选择丢弃值或设置指定值,该项目不会变为不受支持。
将值从十六进制格式转换为十进制。
如果勾选自定义失败处理复选框,则可以指定自定义错误处理选项:丢弃值、设置指定值或设置指定错误消息。在预处理步骤失败的情况下,如果选择丢弃值或设置指定值,该项目不会变为不受支持。
在单击参数字段或铅笔图标时显示的块中输入 JavaScript 代码。
备注:
通过指定最小/最大值(包括在内)来定义值应该在其中的范围。
备注:
指定值必须匹配的正则表达式。
如果选中“Custom on fail”复选框,则可以指定自定义错误处理选项:丢弃值、设置指定的值或设置指定的错误消息。如果预处理步骤失败,则项目不会变为不支持,而是选择丢弃值或设置指定的值选项。
指定值必须不匹配的正则表达式。
如果选中“Custom on fail”复选框,则可以指定自定义错误处理选项:丢弃值、设置指定的值或设置指定的错误消息。如果预处理步骤失败,则项目不会变为不支持,而是选择丢弃值或设置指定的值选项。
检查位于 JSONPath 处的应用级错误消息。如果成功且消息不为空,则停止处理;否则,继续处理值,在此预处理步骤之前的值。
评论:
检查位于 XPath 处的应用级错误消息。如果成功且消息不为空,则停止处理;否则,继续处理值,在此预处理步骤之前的值。
评论:
使用正则表达式检查应用程序级别的错误消息。如果成功且消息不为空,则停止处理;否则,继续处理值,在此预处理步骤之前的值。
参数:
评论:
检查是否未检索到项目值。根据检查返回的错误消息,指定应如何处理失败。
参数:
评论:
如果值未更改,则丢弃该值。
评论:
如果值在定义的时间段内未更改(以秒为单位),则丢弃该值。
评论:
使用以下查询从 Prometheus 指标中提取所需数据。
有关更多详细信息,请参阅Prometheus 检查。
将所需的 Prometheus 指标转换为 JSON 格式。
有关更多详细信息,请参阅Prometheus 检查。
在以下方面支持用户宏和带有上下文的用户宏:
当宏被替换为其值时,宏上下文会被忽略。 宏的值会原样插入代码中,无法在放置值到 JavaScript 代码之前添加额外的转义。 请注意,这可能会导致某些情况下发生 JavaScript 错误。
参见预处理测试。