概 述
预处理允许为接收到的监控项值定义转换规则。在将值保存到数据库之前,可以进行一次或多次转换。
转换按照它们定义的顺序执行。预处理是由Zabbix server或者Zabbix proxy (如果监控项通过proxy进行监控)执行。
请注意,转换成所需要的值类型是在预处理步骤的后期执行的,如果有需要,转换也可以进行相应的预处理步骤。详见 preprocessing details了解更多技术细节。
还可以参考: Usage examples
配 置
预处理规则在监控项的 预处理 标签中进行 配置 。
Attention:任何预处理步骤失败都将导致监控项变成不支持的,除非使用自定义失败选项(Custom on fail)指定自定义错误处理办法。
对于日志监控项,日志元数据(没有值)将总是重置监控项的不支持的状态,使监控项再次受到支持,即使在从agent接收到日志值后发生了初始错误。
用户宏 在监控项值预处理参数中支持带有上下文的用户宏,包含JavaScript代码。
Note:当宏被它的值替换时,上下文将被忽略。宏值将直接插入到代码中,在将值放入JavaScript代码之前不能添加额外的转义。请注意,在某些情况下,这可能会导致JavaScript错误。
参数表格另见网页链接👇
https://www.zabbix.com/documentation/6.0/zh/manual/config/items/preprocessing
Attention:
对于更改和限制预处理步骤,需要使用以前的值来计算/比较新值。
以前的值由预处理管理器处理,预处理步骤配置在进行更改或Zabbix server/proxy重新启动时重置。
由于先前的值重置:
- 对于简单改变, 每秒更改 步骤 - 下一个值将被忽略,因为没有先前的值来计算更改;
- 对于 丢弃没有改变的数据. 带心跳检查丢弃不变化的数据 步骤 - 下一个值永远不会被丢弃, 即使它应该因为丢弃规则而被丢弃,也不会丢弃。
当定义了至少一个预处理步骤时,监控项的信息类型参数显示在选项卡的底部。如果需要,可以在不离开 Preprocessing 选项卡的情况下更改信息类型。详细参数说明见 创建监控项 。
Note:如果您对信息类型设置为 Numeric的监控项使用自定义乘数或将值存储为 Change per second (unsigned) 并且得到的计算值实际上是一个浮点数,通过修剪小数部分并将值存储为整数,计算值仍然被接受为正确的值。
T e s t i n g
测试预处理步骤有助于确保复杂的预处理管道产生预期的结果,而无需等待接收和预处理监控项值。
可以测试:
- 与假设值相比
- 与主机的实际值相比较
每个预处理步骤都可以单独测试,也可以一起测试所有步骤。当您分别单击 动作块中的 Test 或 Test all steps 按钮时,将打开一个测试窗口。
检 验 假 设 值
参数 | 描述 |
Get value from host | 如果您想测试假设值,请不要选中此复选框。 另请参阅:测试真实值. |
Value | 输入要测试的输入值。 单击参数字段或查看/编辑按钮将打开一个文本区域窗口,用于输入值或代码块。 |
Not supported | 选中此复选框可测试不受支持的值。 此选项可用于测试 Check for not supported value 预处理步骤。 |
Time | 显示输入值的时间: |
Previous value | 输入之前的输入值进行比较。 仅适用于 Change 和 Throttling 预处理步骤。 |
Previous time | 输入之前的输入值时间进行比较。 仅适用于 Change 和 Throttling 预处理步骤。 默认值基于监控项的“更新间隔”字段值(如果为“1m”, 然后这个字段用 |
Macros | 如果使用了任何宏,它们将与它们的值一起列出。出于测试目的,这些值是可编辑的,但更改只会保存在测试上下文中。 |
End of line sequence | 为多行输入值选择行尾序列: LF - LF(换行)序列 CRLF - CRLF(回车换行)序列。 |
Preprocessing steps | 列出了预处理步骤;单击 Test 按钮后,将显示每个步骤的测试结果。 如果该步骤测试失败,则会显示错误图标。鼠标悬停时会显示错误描述。 如果为步骤指定了“失败时自定义”并执行了该操作,则会在预处理测试步骤行之后立即出现一个新行,显示已执行的操作和结果 产生(错误或值)。 |
Result | 测试预处理步骤的最终结果在所有步骤一起测试时显示在所有情况下(当您单击测试所有步骤按钮时)。 还显示转换为监控项的值类型的类型, 例如“结果转换为数字(无符号)”。 |
单击 Test 以查看每个预处理步骤后的结果。
测试值存储在单个步骤或所有步骤的测试会话之间,允许用户更改预处理步骤或监控项配置,然后返回到测试窗口,而无需重新输入信息。但是,页面刷新时值会丢失。
测试由 Zabbix server 完成。前端向服务器发送相应的请求并等待结果。该请求包含输入值和预处理步骤(带有扩展的用户宏)。对于 Change 和 Throttling 步骤,可以指定可选的先前值和时间。服务器响应每个预处理步骤的结果。
所有技术错误或输入验证错误都显示在测试窗口顶部的错误框中。
测 试 真 实 值
根据实际值测试预处理:
- 标记 Get value from host 复选框
- 输入或验证主机参数(主机地址、端口、代理名称/否 代理)和监控项特定的详细信息(例如 SNMPv2 社区或 SNMPv3 安全凭证)。这些字段是上下文感知的:
- 这些值在可能的情况下预先填写,即对于需要代理的监控项,通过从主机的选定代理界面获取信息
- 模板项的值必须手动填写
- 解析纯文本宏值
- 值(或部分值)为机密或 Vault 宏的字段为空,必须手动输入。如果任何监控项参数包含秘密宏值,则会显示以下警告消息:“监控项包含具有秘密值的用户定义的宏。应手动输入这些宏的值。”
- 在监控项类型的上下文中不需要时禁用这些字段(例如,计算监控项的主机地址和代理字段被禁用)
- 点击 Get value and test 来测试预处理
如果您在监控项配置表单(“显示值”字段)中指定了值映射,监控项测试对话框将在最终结果之后显示另一行,名为“应用了值映射的结果”。
特定于从主机获取实际值的参数:
参数 | 描述 |
Get value from host | 标记此复选框以从主机获取实际值。 |
Host address | 输入主机地址。 此字段由监控项主机接口的地址自动填充。 |
Port | 输入主机端口。 此字段由监控项主机接口的端口自动填充。 |
Additional fields for SNMP interfaces | 有关配置 SNMP 接口(v1、v2 和 v3)的更多详细信息。请查看Configuring SNMP monitoring。 这些字段会从监控项主机接口自动填充。 |
Proxy | 如果主机由代理监控,请指定代理。 此字段由主机的代理(如果有)自动填充。 |
有关其余参数,请参考 Testing hypothetical value 。