预处理功能允许您在将接收到的监控项值存入数据库前对其进行转换处理。 这些转换/预处理步骤由Zabbix server或proxy执行(当监控项由proxy监控时)。
该特性支持多种应用场景,例如:
可为监控项配置一个或多个预处理步骤。 这些步骤将按照配置顺序依次执行。
若预处理步骤执行失败,监控项将变为不支持的监控项状态。 可通过Custom on fail错误处理机制(适用于大多数转换类型)避免此情况,该机制允许丢弃数值或设置自定义值。
对于日志类监控项,日志元数据(不含数值)将始终重置监控项的unsupported状态,使其恢复为supported状态。 即使初始错误是在从agent接收日志值后发生的,此机制仍会生效。
所有进入预处理流程的数值初始均被视为字符串类型。 在预处理流水线末端,将按监控项配置要求转换为目标数值类型。 但特定预处理步骤可能会根据需要触发提前类型转换。 详细技术说明请参阅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 | 检查位于JSON路径的应用级错误消息。 | |
| 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格式 |
请注意,对于变更和限流预处理步骤,Zabbix必须记住上一个值,以便按要求计算/比较新值。 这些先前的值由预处理管理器处理。 如果 Zabbix server 或 proxy 重启或预处理步骤发生任何变更,对应 监控项 的最后一个值将被重置,导致:
将值与正则表达式匹配并替换为所需的输出。
参数:
注释:
查找搜索string并将其替换为另一个(或空值)。
参数:
注释:
从值的开头和结尾删除指定字符。
从值的末尾移除指定字符。
从值的开头移除指定字符。
使用XPath功能从XML数据中提取值或片段.
注释:
示例:
number(/document/item/value) #will extract '10' from <document><item><value>10</value></item></document>
number(/document/item/@attribute) #will extract '10' from <document><item attribute="10"></item></document>
/document/item #will extract '<item><value>10</value></item>' from <document><item><value>10</value></item></document>使用JSONPath functionality从JSON数据中提取值或片段.
如果勾选自定义失败处理复选框,则可以指定自定义错误处理选项:丢弃该值、设置指定值或设置指定错误消息. 当预处理步骤失败时,如果选择了丢弃值或设置指定值的选项,监控项将不会变为不受支持状态.
将CSV file 数据转换为JSON格式。
更多信息请参见:5-csv-到-json-预处理。
将XML格式的数据转换为JSON。
更多信息请参阅:序列化规则。
如果勾选Custom on fail复选框,则可以指定自定义的错误处理选项:丢弃该值、设置指定值或设置指定的错误消息。 如果预处理步骤失败,当选择丢弃值或设置指定值的选项时,监控项将不会变为不受支持状态。
通过指定的OID/MIB名称提取值并应用格式化选项:
' '被替换为':');如果勾选失败时自定义复选框,则可以指定自定义错误处理选项:要么丢弃该值,设置指定值,或设置指定的错误消息。 如果预处理步骤失败,当选择丢弃值或设置指定值的选项时,监控项不会变为不受支持状态。
将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代码
请勿在预处理JavaScript中使用未声明的赋值 使用var来声明局部变量
注释:
通过指定最小/最大值(包含边界值)来定义数值的有效范围。
注释:
指定一个值必须匹配的正则表达式.
如果勾选Custom on fail复选框,可以指定自定义错误处理选项:丢弃该值、设置指定值或设置指定的错误消息. 如果预处理步骤失败,当选择丢弃值或设置指定值的选项时,监控项不会变为不受支持状态.
指定一个值不得匹配的正则表达式.
如果勾选Custom on fail复选框,可以指定自定义错误处理选项:丢弃该值、设置指定值或设置指定的错误消息. 若预处理步骤失败,当选择丢弃值或设置指定值的选项时,监控项不会变为不受支持状态.
检查位于JSON路径的应用程序级错误消息 如果处理成功且消息不为空则停止处理. 否则继续使用该预处理步骤之前的值进行处理
注释:
检查位于XPath路径的应用级错误消息。 若成功且消息非空则停止处理;否则继续使用预处理前的值进行后续处理。
注释:
使用正则表达式检查应用级错误消息。 如果成功且消息非空则停止处理;否则继续使用预处理前的值进行后续处理。
参数:
注释:
检查是否无法获取监控项值。 根据返回的错误消息,指定应如何处理该故障。
参数:
注释:
若值未发生变更则予以丢弃.
注释:
若数值在定义的时间段内(以秒为单位)未发生变化,则丢弃该值。
注释:
使用以下 query 从 Prometheus 指标中提取所需数据。
详细信息,请参见 Prometheus checks。
转换所需的Prometheus指标为JSON格式。
详细信息,请参见Prometheus checks。
User macros 以及带上下文的用户宏支持在以下场景使用:
宏上下文在宏被替换为其值时会被忽略。 宏值会原样插入代码中,无法在将值放入JavaScript代码前进行额外转义。 请注意,在某些情况下这可能导致JavaScript错误。