Eksport do plików
Przegląd
Możliwe jest skonfigurowanie eksportu w czasie rzeczywistym zdarzeń wyzwalaczy, wartości pozycji i trendów w formacie JSON rozdzielanym znakami nowej linii.
Eksport jest wykonywany do plików, gdzie każda linia pliku eksportu jest obiektem JSON. Mapowania wartości nie są stosowane.
W przypadku błędów (danych nie można zapisać do pliku eksportu albo pliku eksportu nie można zmienić nazwy lub nie można utworzyć nowego po zmianie nazwy), element danych jest odrzucany i nigdy nie jest zapisywany do pliku eksportu. Jest zapisywany wyłącznie w bazie danych Zabbix. Zapisywanie danych do pliku eksportu zostaje wznowione, gdy problem z zapisem zostanie rozwiązany.
Plik eksportu jest tworzony z uprawnieniami odczytu i zapisu tylko dla właściciela pliku. Dodatkowo plik jest czytelny dla grupy właściciela. Wszystkie pozostałe uprawnienia są zabronione.
Należy pamiętać, że host/pozycja może nie mieć metadanych (grup hostów, nazwy hosta, nazwy pozycji), jeśli host/pozycja została usunięta po odebraniu danych, ale przed wyeksportowaniem danych przez serwer.
Konfiguracja
Eksport w czasie rzeczywistym zdarzeń wyzwalaczy, wartości pozycji i trendów jest konfigurowany przez wskazanie katalogu dla plików eksportu - zobacz parametr ExportDir w konfiguracji serwera.
Dostępne są dwa inne parametry:
ExportFileSizemoże służyć do ustawienia maksymalnego dozwolonego rozmiaru pojedynczego pliku eksportu. Gdy proces musi zapisać dane do pliku, najpierw sprawdza jego rozmiar. Jeśli przekracza skonfigurowany limit rozmiaru, plik jest zmieniany przez dopisanie .old do jego nazwy, a nowy plik o oryginalnej nazwie jest tworzony.
Dla każdego procesu, który będzie zapisywać dane, zostanie utworzony osobny plik (tj. około 4-30 plików). Ponieważ domyślny rozmiar pojedynczego pliku eksportu wynosi 1G, przechowywanie dużych plików eksportu może szybko wyczerpać miejsce na dysku.
ExportTypepozwala określić, które typy encji (zdarzenia, historia, trendy) będą eksportowane.
Protokół eksportu JSON z rozdzieleniem nowymi liniami
Ta sekcja przedstawia szczegóły protokołu eksportu w formacie JSON z rozdzieleniem nowymi liniami, używanego w:
Wszystkie pliki mają rozszerzenie .ndjson. Każda linia pliku eksportu jest obiektem JSON.
Eksport zdarzenia wyzwalacza
Następujące informacje są eksportowane dla zdarzenia problemu:
| Field | Type | Description | ||
|---|---|---|---|---|
| clock | number | Liczba sekund od Epoki do momentu wykrycia problemu (część całkowita). | ||
| ns | number | Liczba nanosekund, które należy dodać do clock, aby uzyskać dokładny czas wykrycia problemu. |
||
| value | number | 1 (zawsze). | ||
| eventid | number | ID zdarzenia problemu. | ||
| name | string | Nazwa zdarzenia problemu. | ||
| severity | number | Ważność zdarzenia problemu (0 - Nie sklasyfikowano, 1 - Informacja, 2 - Ostrzeżenie, 3 - Średni, 4 - Wysoki, 5 - Katastrofa). | ||
| hosts | array | Lista hostów uwzględnionych w wyrażeniu wyzwalacza; w tablicy powinien znajdować się co najmniej jeden element. | ||
| - | object | |||
| host | string | Nazwa hosta. | ||
| name | string | Widoczna nazwa hosta. | ||
| groups | array | Lista grup hostów wszystkich hostów uwzględnionych w wyrażeniu wyzwalacza; w tablicy powinien znajdować się co najmniej jeden element. | ||
| - | string | Nazwa grupy hostów. | ||
| tags | array | Lista tagów problemu (może być pusta). | ||
| - | object | |||
| tag | string | Nazwa tagu. | ||
| value | string | Wartość tagu (może być pusta). | ||
Następujące informacje są eksportowane dla zdarzenia odzyskania:
| Field | Type | Description |
|---|---|---|
| clock | number | Liczba sekund od Epoki do momentu rozwiązania problemu (część całkowita). |
| ns | number | Liczba nanosekund, które należy dodać do clock, aby uzyskać dokładny czas rozwiązania problemu. |
| value | number | 0 (zawsze). |
| eventid | number | ID zdarzenia odzyskania. |
| p_eventid | number | ID zdarzenia problemu. |
Przykłady eksportu zdarzeń wyzwalacza
Problem:
{"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"}]}
Odzyskanie:
{"clock":1519304345,"ns":987654321,"value":0,"eventid":43,"p_eventid":42}
Problem (generowanie wielu zdarzeń problemu):
{"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"}]}
Odzyskanie:
{"clock":1519304346,"ns":987654321,"value":0,"eventid":44,"p_eventid":43}
{"clock":1519304346,"ns":987654321,"value":0,"eventid":44,"p_eventid":42}
Eksport wartości pozycji
Poniższe informacje są eksportowane dla zebranej wartości pozycji:
| Field | Type | Description | ||
|---|---|---|---|---|
| host | object | Nazwa hosta hosta pozycji. | ||
| host | string | Nazwa hosta. | ||
| name | string | Widoczna nazwa hosta. | ||
| groups | array | Lista grup hosta hosta pozycji; w tablicy powinien znajdować się co najmniej jeden element. | ||
| - | string | Nazwa grupy hostów. | ||
| item_tags | array | Lista tagów pozycji (może być pusta). | ||
| - | object | |||
| tag | string | Nazwa tagu. | ||
| value | string | Wartość tagu (może być pusta). | ||
| itemid | number | ID pozycji. | ||
| name | string | Widoczna nazwa pozycji. | ||
| clock | number | Liczba sekund od początku ery Unix do momentu, w którym wartość została zebrana (część całkowita). | ||
| ns | number | Liczba nanosekund, które należy dodać do clock, aby uzyskać dokładny czas zebrania wartości. |
||
| timestamp (Log only) |
number | 0, jeśli niedostępne. | ||
| source (Log only) |
string | Pusty ciąg, jeśli niedostępne. | ||
| severity (Log only) |
number | 0, jeśli niedostępne. | ||
| eventid (Log only) |
number | 0, jeśli niedostępne. | ||
| value | number (for numeric items) or string (for text items) |
Zebrana wartość pozycji. | ||
| type | number | Typ zebranej wartości: 0 - liczba zmiennoprzecinkowa, 1 - znak, 2 - log, 3 - liczba całkowita bez znaku, 4 - tekst, 5 - binarne, 6 - JSON |
||
Przykład eksportu wartości pozycji
Wartość numeryczna (bez znaku):
{"host":{"host":"Host B","name":"Host B visible"},"groups":["Group X","Group Y","Group Z"],"item_tags":[{"tag":"foo","value":"test"}],"itemid":3,"name":"Dostępność agenta","clock":1519304285,"ns":123456789,"value":1,"type":3}
Wartość numeryczna (zmiennoprzecinkowa):
{"host":{"host":"Host B","name":"Host B visible"},"groups":["Group X","Group Y","Group Z"],"item_tags":[{"tag":"foo","value":"test"}],"itemid":4,"name":"Obciążenie CPU","clock":1519304285,"ns":123456789,"value":0.1,"type":0}
Wartość znakowa, tekstowa:
{"host":{"host":"Host B","name":"Host B visible"},"groups":["Group X","Group Y","Group Z"],"item_tags":[{"tag":"foo","value":"test"}],"itemid":2,"name":"Wersja agenta","clock":1519304285,"ns":123456789,"value":"3.4.4","type":4}
Wartość logu:
{"host":{"host":"Host A","name":"Host A visible"},"groups":["Group X","Group Y","Group Z"],"item_tags":[{"tag":"foo","value":"test"}],"itemid":1,"name":"Wiadomości w pliku logu","clock":1519304285,"ns":123456789,"timestamp":1519304285,"source":"","severity":0,"eventid":0,"value":"wiadomość z pliku logu","type":2}
Eksport trendów
Poniższe informacje są eksportowane dla obliczonej wartości trendu:
| Field | Type | Description | ||
|---|---|---|---|---|
| host | object | Nazwa hosta hosta pozycji. | ||
| host | string | Nazwa hosta. | ||
| name | string | Widoczna nazwa hosta. | ||
| groups | array | Lista grup hosta hosta pozycji; w tablicy powinien znajdować się co najmniej jeden element. | ||
| - | string | Nazwa grupy hosta. | ||
| item_tags | array | Lista tagów pozycji (może być pusta). | ||
| - | object | |||
| tag | string | Nazwa tagu. | ||
| value | string | Wartość tagu (może być pusta). | ||
| itemid | number | ID pozycji. | ||
| name | string | Widoczna nazwa pozycji. | ||
| clock | number | Liczba sekund od Ery do momentu, w którym wartość została zebrana (część całkowita). | ||
| count | number | Liczba wartości zebranych dla danej godziny. | ||
| min | number | Minimalna wartość pozycji dla danej godziny. | ||
| avg | number | Średnia wartość pozycji dla danej godziny. | ||
| max | number | Maksymalna wartość pozycji dla danej godziny. | ||
| type | number | Typ wartości: 0 - liczba zmiennoprzecinkowa, 3 - liczba całkowita bez znaku |
||
Przykłady eksportu trendów
Wartość liczbowa (bez znaku):
{"host":{"host":"Host B","name":"Host B visible"},"groups":["Group X","Group Y","Group Z"],"item_tags":[{"tag":"foo","value":"test"}],"itemid":3,"name":"Dostępność agenta","clock":1519311600,"count":60,"min":1,"avg":1,"max":1,"type":3}
Wartość liczbowa (zmiennoprzecinkowa):
{"host":{"host":"Host B","name":"Host B visible"},"groups":["Group X","Group Y","Group Z"],"item_tags":[{"tag":"foo","value":"test"}],"itemid":4,"name":"Obciążenie CPU","clock":1519311600,"count":60,"min":0.01,"avg":0.15,"max":1.5,"type":0}