导出到文件

概述

可以配置以换行分隔的 JSON 格式实时导出触发器事件、监控项 值和趋势数据。

导出会写入文件,其中导出文件的每一行都是一个 JSON 对象。不会应用值映射。

如果发生错误(数据无法写入导出文件,或者导出文件无法重命名,或者在重命名后无法创建新的导出文件),则该数据项会被丢弃,并且永远不会写入导出文件。它只会写入 Zabbix 数据库。当写入问题解决后,向导出文件写入数据将会恢复。

导出文件仅为文件所有者创建读写权限。此外,文件所有者所属组也可读取该文件。其他所有权限均被拒绝。

请注意,如果主机/监控项在接收到数据后、但在服务器导出数据之前被移除,则主机/监控项可能没有元数据(主机组、主机名、监控项 名称)。

配置

通过指定导出文件所在目录来配置触发器事件、监控项值和趋势数据的实时导出 - 请参见服务器配置中的 ExportDir 参数。

还提供另外两个参数:

  • ExportFileSize 可用于设置单个导出文件允许的最大大小。当某个进程需要向文件写入数据时,会先检查该文件的大小。如果超过了配置的大小限制,系统会在文件名后追加 .old 将其重命名,并创建一个使用原始名称的新文件。

每个会写入数据的进程都会创建一个文件(即大约 4-30 个文件)。由于默认每个导出文件的大小为 1G,保留较大的导出文件可能会很快耗尽磁盘空间。

  • ExportType 允许指定要导出的实体类型(事件、历史数据、趋势)。

换行分隔 JSON 导出协议

本节介绍以换行分隔的 JSON 格式实现的导出协议的详细信息,该格式用于:

所有文件都使用 .ndjson 扩展名。导出文件中的每一行都是一个 JSON 对象。

触发器事件导出

以下信息会为问题事件导出:

Field Type Description
clock number 自 Epoch 起到检测到问题时刻的秒数(整数部分)。
ns number 要加到 clock 上的纳秒数,以获得精确的问题检测时间。
value number 1(始终如此)。
eventid number 问题事件 ID。
name string 问题事件名称。
severity number 问题事件严重性(0 - 未分类,1 - 信息,2 - 警告,3 - 一般,4 - 高,5 - 灾难)。
hosts array 触发器表达式中涉及的主机列表;数组中至少应有一个元素。
- object
host string 主机名称。
name string 可见主机名称。
groups array 触发器表达式中涉及的所有主机所属的主机组列表;数组中至少应有一个元素。
- string 主机组名称。
tags array 问题标签列表(可以为空)。
- object
tag string 标签名称。
value string 标签值(可以为空)。

以下信息会为恢复事件导出:

Field Type Description
clock number 自 Epoch 起到问题解决时刻的秒数(整数部分)。
ns number 要加到 clock 上的纳秒数,以获得精确的问题解决时间。
value number 0(始终如此)。
eventid number 恢复事件 ID。
p_eventid number 问题事件 ID。
触发器事件导出示例

问题:

{"clock":1519304285,"ns":123456789,"value":1,"name":"Either Zabbix agent is unreachable on Host B or pollers are too busy on Zabbix Server","severity":3,"eventid":42, "hosts":[{"host":"Host B", "name":"Host B visible"},{"host":"Zabbix Server","name":"Zabbix Server visible"}],"groups":["Group X","Group Y","Group Z","Zabbix servers"],"tags":[{"tag":"availability","value":""},{"tag":"data center","value":"Riga"}]}

恢复:

{"clock":1519304345,"ns":987654321,"value":0,"eventid":43,"p_eventid":42}

问题(生成多个问题事件):

{"clock":1519304286,"ns":123456789,"value":1,"eventid":43,"name":"Either Zabbix agent is unreachable on Host B or pollers are too busy on Zabbix Server","severity":3,"hosts":[{"host":"Host B", "name":"Host B visible"},{"host":"Zabbix Server","name":"Zabbix Server visible"}],"groups":["Group X","Group Y","Group Z","Zabbix servers"],"tags":[{"tag":"availability","value":""},{"tag":"data center","value":"Riga"}]}

{"clock":1519304286,"ns":123456789,"value":1,"eventid":43,"name":"Either Zabbix agent is unreachable on Host B or pollers are too busy on Zabbix Server","severity":3,"hosts":[{"host":"Host B", "name":"Host B visible"},{"host":"Zabbix Server","name":"Zabbix Server visible"}],"groups":["Group X","Group Y","Group Z","Zabbix servers"],"tags":[{"tag":"availability","value":""},{"tag":"data center","value":"Riga"}]}

恢复:

{"clock":1519304346,"ns":987654321,"value":0,"eventid":44,"p_eventid":43}

{"clock":1519304346,"ns":987654321,"value":0,"eventid":44,"p_eventid":42}

监控项值导出

以下信息会针对已采集的监控项值导出:

Field < < Type Description
host < < object 监控项所属主机的主机名。
host < string 主机名。
^ name < string 可见主机名。
groups < < array 监控项所属主机的主机组列表;数组中至少应有一个元素。
- < string 主机组名称。
item_tags < < array 监控项标签列表(可以为空)。
- < < object <
^ tag string 标签名称。
^ ^ value string 标签值(可以为空)。
itemid < < number 监控项 ID。
name < < string 可见监控项名称。
clock < < number 采集值时距 Epoch 的秒数(整数部分)。
ns < < number 要加到 clock 上以获得精确采集时间的纳秒数。
timestamp
(Log only)
< < number 如果不可用,则为 0。
source
(Log only)
< < string 如果不可用,则为空字符串。
severity
(Log only)
< < number 如果不可用,则为 0。
eventid
(Log only)
< < number 如果不可用,则为 0。
value < < number (for numeric items) or
string (for text items)
采集到的监控项值。
type < < number 采集值类型:
0 - 数值浮点,1 - 字符,2 - 日志,3 - 无符号数值,4 - 文本,5 - 二进制,6 - JSON
监控项值导出示例

数值(无符号):

{"host":{"host":"Host B","name":"Host B visible"},"groups":["Group X","Group Y","Group Z"],"item_tags":[{"tag":"foo","value":"test"}],"itemid":3,"name":"Agent availability","clock":1519304285,"ns":123456789,"value":1,"type":3}

数值(浮点):

{"host":{"host":"Host B","name":"Host B visible"},"groups":["Group X","Group Y","Group Z"],"item_tags":[{"tag":"foo","value":"test"}],"itemid":4,"name":"CPU Load","clock":1519304285,"ns":123456789,"value":0.1,"type":0}

字符、文本值:

{"host":{"host":"Host B","name":"Host B visible"},"groups":["Group X","Group Y","Group Z"],"item_tags":[{"tag":"foo","value":"test"}],"itemid":2,"name":"Agent version","clock":1519304285,"ns":123456789,"value":"3.4.4","type":4}

日志值:

{"host":{"host":"Host A","name":"Host A visible"},"groups":["Group X","Group Y","Group Z"],"item_tags":[{"tag":"foo","value":"test"}],"itemid":1,"name":"Messages in log file","clock":1519304285,"ns":123456789,"timestamp":1519304285,"source":"","severity":0,"eventid":0,"value":"log file message","type":2}

趋势导出

以下信息会为计算出的趋势值导出:

Field Type Description
host object 监控项主机的主机名。
host string 主机名。
name string 可见主机名。
groups array 监控项主机的主机组列表;数组中至少应有一个元素。
- string 主机组名称。
item_tags array 监控项标签列表(可以为空)。
- object
tag string 标签名称。
value string 标签值(可以为空)。
itemid number 监控项 ID。
name string 可见监控项名称。
clock number 采集该值时距 Epoch 的秒数(整数部分)。
count number 在给定小时内采集到的值数量。
min number 给定小时内的最小监控项值。
avg number 给定小时内的平均监控项值。
max number 给定小时内的最大监控项值。
type number 值类型:
0 - 数值浮点,3 - 数值无符号
趋势导出示例

数值(无符号)值:

{"host":{"host":"Host B","name":"Host B visible"},"groups":["Group X","Group Y","Group Z"],"item_tags":[{"tag":"foo","value":"test"}],"itemid":3,"name":"Agent 可用性","clock":1519311600,"count":60,"min":1,"avg":1,"max":1,"type":3}

数值(浮点)值:

{"host":{"host":"Host B","name":"Host B visible"},"groups":["Group X","Group Y","Group Z"],"item_tags":[{"tag":"foo","value":"test"}],"itemid":4,"name":"CPU 负载","clock":1519311600,"count":60,"min":0.01,"avg":0.15,"max":1.5,"type":0}