预处理允许为接收到的监控项值定义转换规则。 在将值保存到数据库之前,可以进行一次或多次转换。
转换按照它们定义的顺序执行。预处理是由Zabbix server或者Zabbix proxy (如果监控项通过proxy进行监控)执行。
请注意,转换成所需要的值类型是在预处理步骤的后期执行的,如果有需要,转换也可以进行相应的预处理步骤。详见 preprocessing details了解更多技术细节。
还可以参考: Usage examples
预处理规则在监控项的 预处理 标签中进行配置 。
任何预处理步骤失败都将导致监控项变成不支持的,除非使用自定义失败选项(Custom on fail)指定自定义错误处理办法。
对于日志监控项,日志元数据(没有值)将总是重置监控项的不支持的状态,使监控项再次受到支持,即使在从agent接收到日志值后发生了初始错误。
用户宏 在监控项值预处理参数中支持带有上下文的用户宏,包含JavaScript代码。
当宏被它的值替换时,上下文将被忽略。宏值将直接插入到代码中,在将值放入JavaScript代码之前不能添加额外的转义。请注意,在某些情况下,这可能会导致JavaScript错误。
类型 | ||
---|---|---|
转换动作 | 描述 | |
文本 | ||
正则表达式 | 将值与 <pattern> 正则表达式匹配,并将值替换为 <output>。 正则表达式支持使用 序列提取最多 10 个捕获的组。 输入值不匹配将使该监控项不受支持。 参数: pattern - 正则表达式 output - 输出格式模板。 \N(其中 N=1…9)转义序列将替换为第 N 个匹配组。 \0 转义序列将替换为匹配的文本。 请参考 正则表达式 部分现有示例。 如果你勾选了 自定义失败 复选框, 则在预处理步骤失败时,该监控项将不受支持,并且可以指定自定义错误处理选项:丢弃值、设置指定值或设置指定错误消息。 |
|
替换 | 找到搜索字符串并将其替换为另一个(或没有)。 将替换所有出现的搜索字符串。 参数: search string - 要查找和替换的字符串,区分大小写(必需) replacement - 用于替换搜索字符串的字符串。 替换字符串也可以为空,有效地允许在找到时删除搜索字符串。 可以使用转义序列来搜索或替换换行符、回车符、制表符和空格“\n \r \ t \s"; 反斜杠可以转义为“\\”,转义序列可以转义为“\\n”。 在底层自动发现期间自动完成换行符、回车、制表符的转义。 |
|
截取 | 从值的开头和结尾删除指定的字符。 | |
右截取 | 从值的末尾删除指定的字符。 | |
左截取 | 从值的开头删除指定的字符。 | |
结构化数据 | ||
XML XPath | 使用 XPath 功能从 XML 数据中提取值或片段。 要使此选项起作用,必须在编译 Zabbix server 时使用 libxml 参数。 示例: 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 will extract <item><value>10</value></item> from <document><item><value>10</value></item></document> 注意,不支持命名空间。 如果您勾选了 自定义失败 复选框,则在预处理步骤失败的情况下,该监控项将不会变得不受支持,并且可以指定自定义错误处理选项:丢弃值、设置指定值或设置指定错误信息。 |
|
JSON Path | 使用 JSONPath 功能 从 JSON 数据中提取值或片段 。 如果您勾选了 自定义失败 复选框,则在预处理步骤失败的情况下,该监控项将不会变得不受支持,并且可以指定自定义错误处理选项:丢弃值、设置指定值或设置指定错误信息。 |
|
CSV to JSON | 将CSV文件数据转换为JSON格式。 有关更多信息,请参见: CSV to JSON 预处理. |
|
XML to JSON | 将 XML 格式的数据转换为 JSON。 有关更多信息,请参见: 序列化规则。 如果您勾选了 自定义失败 复选框,则在预处理步骤失败的情况下,该监控项将不会变得不受支持,并且可以指定自定义错误处理选项:丢弃值、设置指定值或设置指定错误信息。 |
|
算术 | ||
自定义乘数 | 将该值乘以指定的整数或浮点值。 使用此选项将以 KB、MBps 等形式接收的值转换为 B、Bps。 否则 Zabbix无法正确设置(K, M, G 等) 后缀 (K, M, G etc). 注意 如果监控项类型是 数字 (无符号), 在传入自定义乘法器之前带有小数部分的传入值将被裁剪 ('0.9' 将变成 '0')。 支持: 科学记数法, 例如, 1e+70 (从2.2开始); 用户宏和LLD宏 (从4.0版本开始); 包含宏的字符串, 例如, {#MACRO}e+10 , {$MACRO1}e+{$MACRO2} (从5.2.3版本开始)宏必须解析为整数或浮点数。 如果你使用 自定义失败 复选框, 在预处理步骤失败的情况下,该项不会变得不受支持,并且可以指定自定义错误处理选项:丢弃该值、设置指定值或设置指定的错误消息。 |
|
更改 | ||
简单更改 | 计算当前值与先前值的差值。 计算为value-prev_value,其中 value - 当前值; prev_value - 以前收到的值 此设置可用于衡量不断增长的值。 如果当前值小于前一个值,Zabbix 会丢弃该差异(不存储任何内容)并等待另一个值。 每个监控项只允许进行一次更改操作。 如果您选中 Custom on fail 复选框 ,如果预处理步骤失败,该项目将不会变得不受支持,并且可以指定自定义错误处理选项:丢弃值、设置指定值或设置指定错误消息。 |
|
每秒更改 | 计算每秒速度的值变化(当前值与先前值之间的差异)。 计算为 (value-prev_value)/(time-prev_time ), 其中 value - 当前值; prev_value - 先前收到的值; time - 当前时间戳; prev_time - 前一个值的时间戳。 此设置对于获取不断增长的值的每秒速度非常有用。如果当前值小于前一个值,Zabbix 会丢弃该差异(不存储任何内容)并等待另一个值。这有助于正确处理,例如,32 位 SNMP 计数器的包装(溢出)。 注意:由于此计算可能产生浮点数,建议设置“信息类型”到 Numeric (浮点型),即使传入的原始值是整数。这对于小数部分很重要的小数尤其重要。如果浮点值很大并且可能超过 'float' 字段长度,在这种情况下整个值可能会丢失,实际上建议使用 Numeric (unsigned) 并且只修剪小数部分。 每个监控项只允许进行一次更改操作。 如果您选中 Custom on fail 复选框,则在预处理步骤失败的情况下,该监控项将不会变得不受支持,并且可以指定自定义错误处理选项:要么丢弃value,设置一个指定的值,或者设置一个指定的错误信息。 |
|
数字系统 | ||
布尔到十进制 | 将值从布尔格式转换为十进制。 文本表示被转换为 0 或 1。因此,“TRUE”存储为 1,“FALSE”存储为 0。所有值都以不区分大小写的方式匹配。 当前识别的值为: TRUE - true, t, yes, y, on, up, running, enabled, available, ok, master FALSE - false, f, no, n, off, down, unused, disabled, unavailable, err, slave 此外,任何非零数值都被视为 TRUE,而零被视为 FALSE。 如果您标记 Custom on fail 复选框 ,如果预处理步骤失败,该监控项将不会变得不受支持,并且可以指定自定义错误处理选项:丢弃值、设置指定值或设置指定错误消息。 |
|
八进制转十进制 | 将值从八进制格式转换为十进制。 如果您选中 Custom on fail 复选框,则在预处理步骤失败的情况下,该监控项将不会变得不受支持,并且可以指定自定义错误处理选项:要么丢弃 value,设置一个指定的值,或者设置一个指定的错误信息。 |
|
十六进制转十进制 | 将值从十六进制格式转换为十进制。 如果您选中 Custom on fail 复选框,则在预处理步骤失败的情况下,该监控项将不会变得不受支持,并且可以指定自定义错误处理选项:要么丢弃 value,设置一个指定的值,或者设置一个指定的错误信息。 |
|
自定义脚本 | ||
JavaScript | 在单击参数字段或铅笔图标时出现的块中输入JavaScript代码。 注意, 可用的JavaScript长度取决于所使用的 使用的数据库. 有关更多信息,请参见:Javascript 预处理. |
|
验证 | ||
在范围内 | 通过指定最小/最大值(包括)来定义值应在的范围。 接受数值(包括任意位数、可选的小数部分和可选的指数部分、负值)。 可以使用用户宏和底层自动发现宏。 最小值应小于最大值。 必须至少存在一个值。 如果您选中 Custom on fail 复选框,则在预处理步骤失败的情况下,该监控项不会变得不受支持,并且有可能 指定自定义错误处理选项:丢弃值、设置指定值或设置指定错误消息。 |
|
匹配正则表达式 | 指定一个值必须匹配的正则表达式。 如果您选中 Custom on fail 复选框,则在预处理步骤失败的情况下,该监控项将不会变得不受支持,并且可以指定自定义错误处理选项:要么丢弃值,设置一个指定的值,或者设置一个指定的错误信息。 |
|
不匹配正则表达式 | 指定一个值不能匹配的正则表达式。 如果您选中 Custom on fail 复选框,则在预处理步骤失败的情况下,该监控项将不会变得不受支持,并且可以指定自定义错误处理选项:要么 丢弃该值,设置一个指定的值,或设置一个指定的错误消息。 |
|
检查 JSON 中的错误 | 检查位于 JSONpath 的应用程序级错误消息。 如果成功并且消息不为空则停止处理; 否则,使用此预处理步骤之前的值继续处理。 请注意,这些外部服务错误会按原样报告给用户,而不添加预处理步骤信息。 如果无法解析无效 JSON,则不会报告错误。 如果您选中 Custom on fail 复选框 ,如果预处理步骤失败,该监控项将不会变得不受支持,并且可以指定自定义错误处理选项:丢弃值、设置指定值或设置指定错误消息。 |
|
检查 XML 中的错误 | 检查位于 XPath 的应用程序级错误消息。 如果成功并且消息不为空则停止处理; 否则,使用此预处理步骤之前的值继续处理。 请注意,这些外部服务错误将按原样报告给用户,而不添加预处理步骤信息。 如果无法解析无效 XML,则不会报告错误。 如果您选中 Custom on fail 复选框 ,如果预处理步骤失败,该监控项将不会变得不受支持,并且可以指定自定义错误处理选项:丢弃值、设置指定值或设置指定错误消息。 |
|
使用正则表达式检查错误 | 使用正则表达式检查应用程序级错误消息。 如果成功并且消息不为空则停止处理; 否则,使用此预处理步骤之前的值继续处理。 请注意,这些外部服务错误按原样报告给用户,无需添加预处理步骤信息。 参数: pattern - 正则表达式 output - 输出格式模板。 \N(其中 N=1…9)转义序列将替换为第 N 个匹配组。 \0 转义序列将替换为匹配的文本。 如果您选中 Custom on fail 复选框,则在预处理步骤失败的情况下,该监控项将不会变得不受支持,并且可以指定自定义错误处理选项: 要么丢弃该值,设置一个指定的值,或者设置一个指定的错误消息。 |
|
检查不支持的值 | 检查检索监控项值是否有错误。 通常这会导致监控项变得不受支持,但您可以通过指定 Custom on fail 错误处理选项来修改该行为:丢弃值,设置指定值(在这种情况下,监控项将保持支持并且 value 可以在触发器中使用)或设置指定的错误消息。 请注意,对于此预处理步骤,失败时自定义复选框灰显并始终标记。 此步骤始终作为第一个预处理步骤执行,并在保存对监控项的更改后置于所有其他步骤之上。 它只能使用一次。 从 5.2.0 开始支持。 |
|
节流 | ||
丢弃不变 | 如果一个值没有改变,则丢弃它。 如果一个值被丢弃,它不会保存在数据库中,并且 Zabbix 服务器不知道该值已被接收。 不会评估触发器表达式,因此不会创建/解决相关触发器的问题。 函数仅基于实际保存在数据库中的数据起作用。 由于趋势是基于数据库中的数据构建的,如果一个小时内没有保存任何值,则该小时也不会有趋势数据。 只能为一个监控项指定一个限制选项。 * 注意* Zabbix 代理监控的监控项有可能非常小的值差异(小于 0.000001)不会被代理正确丢弃,但如果 Zabbix 服务器数据库 尚未升级,则作为相同的值存储在历史记录中 |
|
丢弃不变的心跳 | 如果值在定义的时间段内(以秒为单位)未更改,则丢弃该值。 支持正整数值来指定秒数(最小值 - 1 秒)。该字段可以使用时间后缀(例如 30s、1m、2h、1d)。在该字段中可以使用用户宏和底层自动发现宏。 如果一个值被丢弃,它不会保存在数据库中,并且 Zabbix 服务器不知道该值已被接收。不会评估触发器表达式,因此不会创建/解决相关触发器的问题。函数仅基于实际保存在数据库中的数据起作用。由于趋势是基于数据库中的数据构建的,如果一个小时内没有保存任何值,则该小时也不会有趋势数据。 只能为一个监控项指定一个限制选项。 注意 Zabbix 代理监控的监控项有可能非常小的值差异(小于 0.000001)不会被代理正确丢弃,但如果 Zabbix 服务器数据库 尚未升级,则作为相同的值存储在历史记录中。 |
|
Prometheus | ||
Prometheus pattern | 使用以下查询从 Prometheus 指标中提取所需数据。 有关更多信息,请参考:Prometheus checks |
|
Prometheus to JSON | 将所需的 Prometheus 指标转换为 JSON。 有关更多信息,请参考:Prometheus checks |
对于更改和限制预处理步骤,需要使用以前的值来计算/比较新值。以前的值由预处理管理器处理,预处理步骤配置在进行更改或Zabbix server/proxy重新启动时重置。由于先前的值重置:
当定义了至少一个预处理步骤时,监控项的信息类型参数显示在选项卡的底部。 如果需要,可以在不离开 Preprocessing 选项卡的情况下更改信息类型。 详细参数说明见 创建监控项 。
如果您对信息类型设置为 Numeric (unsigned) 的监控项使用自定义乘数或将值存储为 Change per second 并且得到的计算值实际上是一个浮点数,通过修剪小数部分并将值存储为整数,计算值仍然被接受为正确的值。
以下列出了所有支持的转换。点击转换名称以查看详细信息。
名称 | 描述 | 类型 |
---|---|---|
正则表达式 | 将值与正则表达式匹配并替换为所需的输出。 | 文本 |
替换 | 查找搜索字符串并将其替换为另一个(或不替换)。 | |
去除空格 | 删除值开头和结尾的指定字符。 | |
右去除空格 | 删除值末尾的指定字符。 | |
左去除空格 | 删除值开头的指定字符。 | |
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 错误。
参见预处理测试。