导出到文件
概述
可以配置以换行分隔的 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}