Экспорт в файлы
Обзор
Можно настроить экспорт в реальном времени событий триггеров, значений элементов данных и трендов в формате JSON, где каждый объект отделен новой строкой.
Экспорт выполняется в файлы, где каждая строка файла экспорта является объектом JSON. Преобразования значений не применяются.
В случае ошибок (данные не могут быть записаны в файл экспорта, файл экспорта не может быть переименован или после переименования не может быть создан новый файл), элемент данных отбрасывается и никогда не записывается в файл экспорта. Он записывается только в базу данных Zabbix. Запись данных в файл экспорта возобновляется, когда проблема с записью будет устранена.
Файл экспорта создается с правами на чтение и запись только для владельца файла. Кроме того, файл доступен для чтения группе владельца. Все остальные права запрещены.
Обратите внимание, что узел сети/элемент данных может не иметь метаданных (группы узлов сети, имя узла сети, имя элемента данных), если узел сети/элемент данных был удален после получения данных, но до того, как сервер экспортировал данные.
Настройка
Экспорт событий триггеров, значений элементов данных и трендов в режиме реального времени настраивается путем указания каталога для файлов экспорта - см. параметр ExportDir в конфигурации сервера.
Доступны еще два параметра:
ExportFileSizeпозволяет задать максимально допустимый размер отдельного файла экспорта. Когда процессу необходимо записать данные в файл, сначала проверяется размер файла. Если он превышает настроенный предел, файл переименовывается путем добавления к его имени.old, а затем создается новый файл с исходным именем.
Для каждого процесса, который будет записывать данные, создается отдельный файл (то есть примерно 4-30 файлов). Поскольку размер файла экспорта по умолчанию составляет 1G, хранение больших файлов экспорта может быстро заполнить дисковое пространство.
ExportTypeпозволяет указать, какие типы сущностей (события, история, тренды) будут экспортироваться.
Протокол экспорта JSON с разделением по строкам
В этом разделе приведены сведения о протоколе экспорта в формате JSON с разделением по строкам, который используется в:
Все файлы имеют расширение .ndjson. Каждая строка файла экспорта представляет собой объект JSON.
Экспорт события триггера
Для события проблемы экспортируется следующая информация:
| Field | Type | Description | ||
|---|---|---|---|---|
| clock | number | Количество секунд с начала эпохи на момент обнаружения проблемы (целая часть). | ||
| 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 | Количество секунд с начала эпохи на момент, когда проблема была решена (целая часть). |
| 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 | Количество секунд с начала эпохи на момент, когда было собрано значение (целая часть). | ||
| 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 - numeric float, 1 - character, 2 - log, 3 - numeric unsigned, 4 - text, 5 - binary, 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":"Доступность агента","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","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":"Версия агента","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":"Сообщения в файле журнала","clock":1519304285,"ns":123456789,"timestamp":1519304285,"source":"","severity":0,"eventid":0,"value":"сообщение файла журнала","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 | Количество секунд с начала эпохи на момент, когда было собрано значение (целая часть). | ||
| count | number | Количество значений, собранных за данный час. | ||
| min | number | Минимальное значение элемента данных за данный час. | ||
| avg | number | Среднее значение элемента данных за данный час. | ||
| max | number | Максимальное значение элемента данных за данный час. | ||
| type | number | Тип значения: 0 - numeric float, 3 - numeric unsigned |
||
Примеры экспорта трендов
Числовое значение (без знака):
{"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":1519311600,"count":60,"min":1,"avg":1,"max":1,"type":3}
Числовое значение (float):
{"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":1519311600,"count":60,"min":0.01,"avg":0.15,"max":1.5,"type":0}