预处理允许您在将接收到的监控项值保存到数据库之前应用转换。 这些转换/预处理步骤由Zabbix server或proxy(如果监控项由proxy监控)执行。
此功能支持各种使用场景,例如:
可以为一个监控项配置一个或多个预处理步骤。这些步骤按配置的顺序执行。
如果预处理步骤失败,监控项变为不支持。 这可以通过自定义失败处理错误处理避免(大多数转换都可用),允许您丢弃值或设置自定义值。
对于日志监控项,日志元数据(不包括值)将始终重置监控项的不支持状态,使其再次变为支持状态。 即使初始错误发生在从agent接收日志值之后,这种情况也会发生。
所有传递给预处理的值最初都被视为字符串处理。 转换为所需的值类型(如监控项配置中定义)在预处理管道的末尾执行。 然而,如果需要,特定的预处理步骤可能会触发更早的转换。 对于详细的技术信息,请参阅预处理详情。
为了确保您的预处理配置按预期工作,您可以测试它。
另请参阅:预处理示例
预处理步骤在监控项配置表单的预处理选项卡中定义。
点击添加以选择支持的转换。
当定义了至少一个预处理步骤时,信息类型字段显示在选项卡底部。如果需要,可以在不离开预处理选项卡的情况下更改信息类型。有关详细的参数描述,请参阅创建监控项。
以下是所有支持的转换列表。请点击转换名称以查看其完整详情。
名称 | 描述 | 类型 |
---|---|---|
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文件数据转换为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重启或预处理步骤有任何更改, 相应监控项的最后一个值将被重置,导致:
将值与正则表达式匹配并替换为所需的输出。
参数:
备注:
查找搜索字符串并将其替换为另一个字符串(或不替换)。
参数:
备注:
从值的开头和结尾移除指定的字符。
从值的结尾移除指定的字符。
从值的开头移除指定的字符。
使用 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 错误。
参见预处理测试。