预处理允许为接收到的监控项值定义转换规则。 在将值保存到数据库之前,可以进行一次或多次转换。 转换按照它们定义的顺序执行。 预处理是由Zabbix server或者Zabbix proxy (代理监控项)执行。
参考:
预处理规则在项目的预处理选项卡中进行配置 。
<note important>如果任何预处理步骤失败监控项将不支持, 除非在自定义失败选项中指定了自定义错误处理。
对于日志监控项,日志元数据(没有值)将总是重置监控项的不支持的状态,使监控项再次受到支持,即使在从agent接收到日志值后发生了初始错误。 :::
用户宏 在项值预处理参数中支持带有上下文的用户宏, 包含JavaScript代码。
当宏被它的值替换时,上下文将被忽略。宏值将直接插入到代码中,在将值放入JavaScript代码之前不能添加额外的转义。请注意,在某些情况下,这可能会导致JavaScript错误。
类型 转 | 方式 描述 | |
---|---|---|
文本 | ||
正则表达式 将值与& | t;pattern>正则表达式匹配,并将值替换为<output>。 正则表达式支持提取最多10个带有\N序列的捕获组. 如果不匹配输入值,则将不支持该监控项。 参数: pattern - 正则表达式 output - 输出模板格式。 \N (其中N=1…9)转义序列被替换为第N个匹配组。\0 转义序列被替换为匹配的文本. 从3.4.0开始支持。 请参考正在表达式 部分,以获取一些现有的示例。 如果你使用 自定义失败 复选框,如果预处理步骤失败,将不会不支持该项,并且可以指定自定义错误处理选项: 可以丢弃该值、设置指定的值或设置指定的错误消息。 |
|
替换 查 | 搜索字符串并将其替换为另一个字符串(或不替换)。 所有搜索到字符串都将被替换. 参数: search string - 查找和替换的字符串, 区分大小写(必需) replacement - 替换搜索到的字符串. 替换字符串也可以是空,这样可以有效的把搜索到的字符串删除。 可以使用转义序列来搜索或替换换行符, 回车, tab 和 空格 "\n \r \t \s"; 反斜杠可以转义为 "\\" 和 转义序列可以转义为 "\\n". 换行转义, 回车, 标签是在自动发现期间自动完成的。 5.0.0开始支持。 |
|
修整 删 | 值开始或者结束位置的指定字符。 | |
修整右边 删除值 | 束位置的指定字符。 | |
修整左边 删除值 | 始位置的指定字符。 | |
Structured data | ||
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 将从<document><item><value>10</value></item></document> 中提取<item><value>10</value></item> 注意,不支持名称空间。 从3.4.0开始支持。 如果你使用Custom on fail复选框, 在预处理步骤失败的情况下,该项不会变得不受支持,并且可以指定自定义错误处理选项:丢弃该值、设置指定值或设置指定的错误消息。 |
|
JSON Path | 使用JSONPath 功能从JSON数据中提取值或片段 . 如果你使用 Custom on fail 复选框, 在预处理步骤失败的情况下,该项不会变得不受支持,并且可以指定自定义错误处理选项:丢弃该值、设置指定值或设置指定的错误消息。 |
|
CSV to JSON | 将CSV文件数据转换为JSON格式。 有关更多信息,请参见: CSV转换JSON的预处理. 从4.4.0开始支持。 |
|
Arithmetic | ||
Custom multiplier | 将该值乘以指定的整数或浮点值. 使用此选项转换接收到的以等变成B、Bps、KB、MBps为单位的值。 否则 Zabbix无法正确设置(K, M, G 等)后缀 。 注意 如果监控项类型是 数字 (无符号), 在传入自定义乘法器之前带有小数部分的传入值将被裁剪 ('0.9' 将变成 '0')。 支持: 科学记数法, 例如, 1e+70 (从2.2开始); 用户宏和LLD宏 (从4.0版本开始); 包含宏的字符串, 例如, {#MACRO}e+10 , {$MACRO1}e+{$MACRO2} (从5.0.7版本开始)宏必须解析为整数或浮点数. 如果你使用 Custom on fail 复选框, 在预处理步骤失败的情况下,该项不会变得不受支持,并且可以指定自定义错误处理选项:丢弃该值、设置指定值或设置指定的错误消息。 |
|
Change | ||
简单更改 计算当 | 值与先前值的差值。 公式为 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计数器。 注意: 由于此计算可能产生浮点数,因此建议设置'类型'为浮点数, 即使传入的原始值是整数. 这对于小数部分很重要的小数字来说尤其重要。如果浮点值很大,并且可能超过“float”字段长度,在这种情况下,整个值可能会丢失, 实际上是建议使用的 整数 (无符号) 因此,只修剪小数点部分。 每个项只允许一个更改操作。 如果你使用 Custom on fail 复选框, 在预处理步骤失败的情况下,该项不会变得不受支持,并且可以指定自定义错误处理选项:丢弃该值、设置指定值或设置指定的错误消息。 |
|
Numeral systems | ||
布尔值转十进制 将值从布尔格 | 转换为十进制。文本表示被翻译成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。 自4.0.0以来支持以下值: ok, master, err, slave.\\如果你使用 Custom on fail 复选框, 在预处理步骤失败的情况下,该项不会变得不受支持,并且可以指定自定义错误处理选项:丢弃该值、设置指定值或设置指定的错误消息。 |
|
八进制转十进制 将值从八进制 | 式转换为十进制. 如果你使用 Custom on fail 复选框, 在预处理步骤失败的情况下,该项不会变得不受支持,并且可以指定自定义错误处理选项:丢弃该值、设置指定值或设置指定的错误消息。 |
|
十六进制转十进制 将十六进制转换 | 十进制. 如果你使用 Custom on fail 复选框, 在预处理步骤失败的情况下,该项不会变得不受支持,并且可以指定自定义错误处理选项:丢弃该值、设置指定值或设置指定的错误消息。 |
|
Custom scripts | ||
Javascript | 在单击参数字段或铅笔图标时出现的块中输入JavaScript代码。 注意, 可用的JavaScript长度取决于所使用的使用的数据库. 有关更多信息,请参见: Javascript预处理. |
|
Validation | ||
In range | 通过指定最小值/最大值(包括)来定义一个值的范围。 接受的数值包含(任意数字,可选的小数部分和可选的指数部分,负数)。 可以使用用户宏和低级发现宏。最小值应小于最大值。 必须至少存在一个值。 如果你使用 Custom on fail 复选框, 在预处理步骤失败的情况下,该项不会变得不受支持,并且可以指定自定义错误处理选项:丢弃该值、设置指定值或设置指定的错误消息。 |
|
Matches regular expression | 指定一个必须能匹配的正则表达式的值. 如果你使用 Custom on fail 复选框, 在预处理步骤失败的情况下,该项不会变得不受支持,并且可以指定自定义错误处理选项:丢弃该值、设置指定值或设置指定的错误消息。 |
|
Does not match regular expression | 指定一个必须不能匹配的正则表达式的值. 如果你使用 Custom on fail 复选框, 在预处理步骤失败的情况下,该项不会变得不受支持,并且可以指定自定义错误处理选项:丢弃该值、设置指定值或设置指定的错误消息。 |
|
Check for error in JSON | 检查位于JSONpath的应用程序级错误消息。如果成功且消息不为空,则停止处理;否则,继续使用此预处理步骤之前的值进行处理。 注意,没有添加预处理步骤信息的话,这些外部服务错误按原样报告给用户,. 在解析无效JSON失败的情况下不会报告错误. 如果你使用 Custom on fail 复选框, 在预处理步骤失败的情况下,该项不会变得不受支持,并且可以指定自定义错误处理选项:丢弃该值、设置指定值或设置指定的错误消息。 |
|
Check for error in XML | 检查位于XPath的应用程序级错误消息。如果成功且消息不为空,则停止处理;否则,继续使用此预处理步骤之前的值进行处理。注意,没有添加预处理步骤信息的话,这些外部服务错误按原样报告给用户。 在解析无效XML失败的情况下不会报告错误。.\\如果你使用 Custom on fail 复选框, 在预处理步骤失败的情况下,该项不会变得不受支持,并且可以指定自定义错误处理选项:丢弃该值、设置指定值或设置指定的错误消息。 |
|
Check for error using a regular expression | 使用正则表达式检查应用程序级错误消息。如果成功且消息不为空,则停止处理;否则,继续使用此预处理步骤之前的值进行处理。注意,没有添加预处理步骤信息的话,这些外部服务错误按原样报告给用户。 Parameters: pattern - 正则表达式 output - 输出模板格式。 一个\N(其中N=1…9)转义序列被替换为第N个匹配组。一个\0转义序列被替换为匹配的文本。 如果你使用 Custom on fail 复选框, 在预处理步骤失败的情况下,该项不会变得不受支持,并且可以指定自定义错误处理选项:丢弃该值、设置指定值或设置指定的错误消息。 |
|
Throttling | ||
Discard unchanged | 如果一个值没有改变,则丢弃它。 如果一个值被丢弃,它就不会保存在数据库中,Zabbix Server也不知道收到了这个值。不会对触发器表达式求值,因此,不会创建/解决相关触发器的问题。触发器函数只根据实际保存在数据库中的数据工作。由于趋势是基于数据库中的数据构建的,如果一个小时没有保存价值,那么这个小时也不会有趋势数据。一个项目只能指定一个节流选项。 |
|
Discard unchanged with heartbeat | 如果一个值在定义的时间段内(以秒为单位)没有更改,则丢弃该值。 支持正整数值来指定秒数(最小值为1秒)。该字段可使用时间后缀(如30s、1m、2h、1d)。 用户宏和低级发现宏可以在这个域中使用。 如果一个值被丢弃,它就不会保存在数据库中,Zabbix Server也不知道收到了这个值。不会对触发器表达式求值,因此,不会创建/解决相关触发器的问题。触发器函数只根据实际保存在数据库中的数据工作。由于趋势是基于数据库中的数据构建的,如果一个小时没有保存价值,那么这个小时也不会有趋势数据。 一个项目只能指定一个节流选项。 |
|
Prometheus | ||
Prometheus pattern | 使用以下查询从Prometheus指标提取所需的数据。 查看Prometheus检查更多细节。 |
|
Prometheus to JSON | 将所需的Prometheus指标转换为JSON。 查看Prometheus检查更多细节。 |
对于更改和限制预处理步骤,需要使用以前的值来计算/比较新值。以前的值由预处理管理器处理,预处理步骤配置在进行更改或Zabbix server/proxy重新启动时重置。由于先前的值重置:
如果你使用一个自定义计算改变每秒监控项信息的类型,将监控项存储类型设置为数字(无符号)但计算值实际上是一个浮点数,计算值将通过削减小数部分,存储为整数的值。
测试预处理步骤有助于确保复杂的预处理管道产生预期的结果,而无需等待项目值被接收和预处理。
可以测试:
每个预处理步骤可以单独测试,也可以一起测试所有步骤。当您分别在动作块中单击// 测试 或 Test all steps //按钮时,将打开一个测试窗口。
参数 描 | |
---|---|
Get value from host | 如果要测试假设值,请将此复选框保留为未标记。 另请参见: 测试实际值. |
Value | 输入要测试的输入值。 单击参数字段或查看/编辑按钮将打开一个文本区域窗口,用于输入值或代码。 |
Time | 显示输入值的时间: now (只读). |
Previous value | 输入要比较的前一个输入值。 仅适用于简单更改和Throttling预处理步骤。 |
Previous time | 输入之前要比较的输入时间。 仅适用于简单更改和Throttling预处理步骤。 默认值基于项的“Update interval”字段值(如果为“1m”,则此字段用“now-1m”填充)。如果未指定任何内容或用户无权访问主机,则默认值为“now-30s”。 |
Macros | 如果使用任何宏,它们将与其值一起列出。这些值是可编辑的,用于测试目的,但更改将仅保存在测试上下文中。 |
End of line sequence | 为多行输入值选择行尾序列: LF - LF(换行)序列 CRLF - CRLF(回车换行)序列。 |
Preprocessing steps | 将列出预处理步骤;单击Test按钮后,将显示每个步骤的测试结果。 如果步骤在测试中失败,将显示错误图标。错误描述显示在鼠标上。 如果为该步骤指定了“失败时自定义”并执行了操作,则在预处理测试步骤行之后立即出现新的一行,显示已执行的操作及其产生的结果(错误或值)。 |
Result | 当所有步骤一起测试时(单击Test all steps按钮),所有情况下都会显示测试预处理步骤的最终结果。 还将显示监控项的值转换类型,例如“结果转换为数字(unsigned)”。 |
单击Test查看每个预处理步骤后的结果。
测试值存储在单个步骤或所有步骤的测试会话之间,允许用户更改预处理步骤或项目配置,然后返回到测试窗口,而无需重新输入信息。但是,值在页面刷新时丢失。
该测试由Zabbix服务器完成。前端将相应的请求发送到服务器,然后等待结果。请求包含输入值和预处理步骤(使用扩展的用户宏)。对于简单更改和Throttling步骤,可以指定可选的上一个值和时间。服务器响应每个预处理步骤的结果。
所有技术错误或输入验证错误均显示在测试窗口顶部的错误框中。
要根据实际值测试预处理,请执行以下操作:
如果在项目配置窗体(“显示值”字段)中指定了值映射,则监控项测试对话框将在最终结果之后显示另一行,名为“已应用值映射的结果”。
具体从主机获取实际值的参数:
参数 描 | |
---|---|
Get value from host | 标记此复选框以从主机获取实际值。 |
Host address | 输入主机地址。 此字段由项目主机接口的地址自动填充。 |
Port | 输入主机端口。 此字段由项目主机界面的端口自动填充。 |
Proxy | 如果主机受代理监视,请指定代理。 该字段由主机的代理自动填充(如果有)。 |
对于更多的参数, 请看 测试假设值 上面.