预处理允许你在将接收到的 监控项值 保存到数据库之前对其进行转换。 这些转换/预处理步骤由 Zabbix server 或 proxy 执行(如果 监控项 是由 proxy 监控的)。
此功能支持多种使用场景,例如:
可以为一个 监控项 配置一个或多个预处理步骤。这些步骤将按照配置的顺序执行。
如果某个预处理步骤失败,则该 监控项 将变为 不支持的监控项。 可以通过 自定义失败处理 的错误处理机制(适用于大多数转换)来避免此问题,允许你丢弃值或设置自定义值。
对于日志 监控项,日志元数据(不包含值)将始终重置 监控项 的不支持状态,使其再次变为支持状态。 即使初始错误发生在从 agent 接收到日志值之后,这种情况也会发生。
所有传递给预处理的值最初都会被视为字符串。 在预处理管道的最后,会根据 监控项 配置中定义的期望值类型进行相应的 version。 不过,如有需要,特定的预处理步骤可能会触发更早的转换。 有关详细的技术信息,请参见 Preprocessing details。
为了确保你的预处理配置按预期工作,你可以使用 test it 进行验证。
预处理步骤是在监控项的预处理选项卡中定义的 配置表单。
点击添加以选择一个受支持的转换。
当至少定义了一个预处理步骤时,信息类型字段会显示在 该选项卡底部。如有需要,可以在不离开预处理选项卡的情况下 更改信息类型。详细参数描述请参见Creating an item。
所有支持的转换方法如下所示。点击转换方法名称可查看其详细信息。
名称 | 描述 | 类型 |
---|---|---|
Regular expression | 将值与正则表达式匹配,并替换为所需的输出。 | Text |
Replace | 查找搜索 string 并将其替换为另一个(或不替换)。 | |
Trim | 从值的开头和结尾删除指定字符。 | |
Right trim | 从值的末尾删除指定字符。 | |
Left trim | 从值的开头移除指定字符。 | |
XML XPath | 使用 XPath 功能从 XML 数据中提取值或片段。 | Structured data |
JSON Path | 使用 JSONPath functionality 从 JSON 数据中提取值或片段。 | |
CSV to JSON | 将CSV file 数据转换为JSON格式。 | |
XML to JSON | 将XML格式的数据转换为JSON。 | |
SNMP walk value | 按指定的OID/MIB名称提取值并应用格式化选项。 | SNMP |
SNMP walk to JSON | 将 SNMP 值转换为 JSON。 | |
SNMP get value | 对 SNMP get 值应用格式化选项。 | |
Custom multiplier | 将值乘以指定的integer或浮点数值。 | Arithmetic |
Simple change | 计算当前值与前一个值之间的差值。 | Change |
Change per second | 计算每秒的值变化速度(当前值与前一个值之间的差值)。 | |
Boolean to decimal | 将值从 boolean 格式转换为十进制。 | Numeral systems |
Octal to decimal | 将值从八进制格式转换为十进制。 | |
Hexadecimal to decimal | 将值从十六进制格式转换为十进制。 | |
JavaScript | 输入 JavaScript 代码。 | Custom scripts |
In range | 定义一个值应该处于的范围。 | Validation |
Matches regular expression | 指定一个值必须匹配的正则表达式。 | |
Does not match regular expression | 指定一个值不得匹配的正则表达式。 | |
Check for error in JSON | 检查位于 JSONPath 的应用程序级错误消息。 | |
Check for error in XML | 检查位于 XPath 的应用程序级错误消息。 | |
Check for error using a regular expression | 使用正则表达式检查应用程序级别的错误消息。 | |
Check for not supported value | 检查是否无法检索到 监控项 值。 | |
Discard unchanged | 如果值未发生变化,则丢弃该值。 | Throttling |
Discard unchanged with heartbeat | 如果在定义的时间段内值未发生变化,则丢弃该值。 | |
Prometheus pattern | 使用以下 query 从Prometheus指标中提取所需数据。 | Prometheus |
Prometheus to JSON | 将所需的Prometheus指标转换为JSON。 |
请注意,对于Change和Throttling预处理步骤, Zabbix必须记住上一个值以计算/比较新值 按要求。这些先前的值由预处理处理 管理员。如果 Zabbix server 或 proxy 被重启或有任何更改 预处理步骤完成后,相应监控项的最后一个值是 重置,结果为:
将值与正则表达式匹配并替换为所需的输出。
参数:
注释:
查找搜索 string 并将其替换为另一个(或无)。
参数:
注释:
从值的开头和结尾删除指定字符。
从值的末尾移除指定字符。
从值的开头移除指定字符。
使用 XPath 功能从 XML 数据中提取值或片段。
备注:
示例:
number(/document/监控项/value) # 将从 <document><监控项><value>10</value></监控项></document> 中提取 '10'
number(/document/监控项/@attribute) # 将从 <document><监控项 attribute="10"></监控项></document> 中提取 '10'
/document/监控项 # 将从 <document><监控项><value>10</value></监控项></document> 中提取 '<监控项><value>10</value></监控项>'
使用 JSONPath functionality 从 JSON 数据中提取值或片段。
如果选中 Custom on fail 复选框,则可以指定自定义错误处理选项:丢弃该值、设置指定值或设置指定的错误信息。如果预处理步骤失败,并且选择了丢弃该值或设置指定值的选项,则 监控项 不会变为不支持状态。
将CSV file 数据转换为JSON格式。
更多信息请参见:5-csv-到-json-预处理。
将 XML 格式的数据转换为 JSON。
有关更多信息,请参见:序列化规则。
如果选中 Custom on fail 复选框,则可以指定自定义的错误处理选项:丢弃该值、设置指定值,或设置指定的错误信息。如果预处理步骤失败,并且选择了丢弃该值或设置指定值的选项,则 监控项 不会变为不支持状态。
通过指定的OID/MIB名称提取值并应用格式化选项:
' '
被替换为':'
);如果选中 Custom on fail 复选框,则可以指定自定义的错误处理选项:丢弃该值、设置指定的值,或设置指定的错误信息。如果预处理步骤失败,并且选择了丢弃该值或设置指定的值的选项,则监控项将不会变为不支持状态。
将 SNMP 值转换为 JSON。
在 JSON 中指定一个字段名称以及对应的 SNMP OID 路径。字段值将由指定 SNMP OID 路径中的值填充。
注意事项:
对 SNMP get 值应用格式化选项:
' '
将被替换为 ':'
);如果勾选 自定义失败处理 复选框,则可以指定自定义的错误处理选项:丢弃该值、设置指定值或设置指定的错误消息。如果预处理步骤失败,并且选择了丢弃该值或设置指定值的选项,则 监控项 不会变为不支持状态。
将值乘以指定的integer或浮点数值。
评论:
1e+70
;用户宏和LLD宏;包含宏的字符串,例如 {#MACRO}e+10
、{$MACRO1}e+{$MACRO2}
。宏必须解析为integer或浮点数。计算当前值与前一个值之间的差值。
说明:
计算值的变化速度(当前值与前一个值之间的差值),单位为每秒。
备注:
将值从boolean格式转换为十进制。
说明:
将值从八进制格式转换为十进制。
如果勾选失败时自定义复选框,则可以指定自定义错误处理选项:丢弃该值、设置指定值或设置指定的错误消息。如果预处理步骤失败,并且选择了丢弃该值或设置指定值的选项,则监控项不会变为不支持状态。
将值从十六进制格式转换为十进制。
如果选中 Custom on fail 复选框,则可以指定自定义错误处理选项:丢弃该值、设置指定值或设置指定的错误消息。如果预处理步骤失败,并且选择了丢弃该值或设置指定值的选项,则监控项不会变为不支持状态。
点击参数字段或其旁边的铅笔图标时,在打开的模态编辑器中输入 JavaScript 代码。
注意事项:
通过指定最小/最大值(包含)来定义值应所处的范围。
备注:
指定一个值必须匹配的正则表达式。
如果选中 Custom on fail 复选框,则可以指定自定义的错误处理选项:丢弃该值、设置指定的值,或设置指定的错误信息。如果某个预处理步骤失败,且选择了丢弃该值或设置指定的值选项,则监控项将不会变为不支持状态。
指定一个值必须不匹配的正则表达式。
如果选中Custom on fail复选框,则可以指定自定义错误处理选项:丢弃该值、设置指定值或设置指定的错误消息。如果预处理步骤失败,并且选择了丢弃该值或设置指定值的选项,则监控项不会变为不支持状态。
检查位于 JSONPath 的应用级别错误消息。如果检查成功且消息非空,则停止处理;否则,继续使用此预处理步骤之前的值进行处理。
备注:
检查位于 XPath 的应用级错误消息。如果检查成功且消息非空,则停止处理;否则,继续使用此预处理步骤之前的值进行处理。
备注:
使用正则表达式检查应用程序级别的错误消息。如果匹配成功且消息非空,则停止处理;否则,继续使用此预处理步骤之前的值进行处理。
参数:
备注:
检查是否无法检索到 监控项 值。根据检查返回的错误消息,指定应如何处理失败。
参数:
备注:
如果值未发生变化,则将其丢弃。
评论:
如果值在定义的时间段(以秒为单位)内未发生变化,则将其丢弃。
评论:
使用以下 query 从 Prometheus 指标中提取所需数据。
详细信息,请参见 Prometheus checks。
转换所需的Prometheus指标为JSON格式。
详细信息,请参见Prometheus checks。
User macros 和带有上下文的用户宏支持在以下位置使用:
当宏被替换为其值时,宏的上下文将被忽略。 宏值将按原样插入代码中,无法在值放入 JavaScript 代码之前添加额外的转义。 请注意,在某些情况下这可能会导致 JavaScript 错误。