19 Rozszerzenia
Przegląd
Chociaż Zabbix oferuje wiele funkcji, zawsze istnieje miejsce na dodatkową funkcjonalność. Rozszerzenia są wygodnym sposobem modyfikowania i zwiększania możliwości monitorowania w Zabbix bez zmiany jego kodu źródłowego.
Możesz rozszerzyć funkcjonalność Zabbix, korzystając albo z wbudowanych opcji rozszerzeń (pozycje trapper, parametry użytkownika itp.), albo używając lub tworząc własne rozszerzenia (moduły ładowalne, wtyczki itp.).
Ta sekcja zawiera przegląd wraz z odwołaniami do wszystkich opcji rozszerzania Zabbix.
Zbieranie danych za pomocą niestandardowych poleceń
Pozycje trapper
Pozycje trapper to pozycje, które przyjmują dane przychodzące zamiast je odpytywać.
Pozycje trapper są przydatne do wysyłania określonych danych do serwera lub proxy Zabbix, na przykład okresowych danych o dostępności i wydajności w przypadku długotrwale działających skryptów użytkownika.
Wysyłanie danych do serwera lub proxy Zabbix jest możliwe przy użyciu narzędzia Zabbix sender lub protokołu Zabbix sender.
Wysyłanie danych do serwera Zabbix jest również możliwe przy użyciu metody API history.push.
Kontrole zewnętrzne
Kontrola zewnętrzna to pozycja służąca do wykonywania kontroli przez uruchomienie pliku wykonywalnego, na przykład skryptu powłoki lub pliku binarnego.
Kontrole zewnętrzne są wykonywane przez serwer Zabbix lub proxy (gdy host jest monitorowany przez proxy) i nie wymagają uruchomionego agenta na monitorowanym hoście.
Parametry użytkownika
Parametr użytkownika to polecenie zdefiniowane przez użytkownika (powiązane z kluczem zdefiniowanym przez użytkownika), które po wykonaniu może pobrać dane potrzebne z hosta, na którym działa agent Zabbix. Parametry użytkownika są przydatne do konfigurowania pozycji agenta lub agenta 2, które nie są predefiniowane w Zabbix.
Pozycje system.run[] Zabbix agent
system.run[] Zabbix agent item
to pozycja dla polecenia zdefiniowanego przez użytkownika (powiązana ze wstępnie zdefiniowanym kluczem system.run[],
na przykład system.run[myscript.sh]), które może być wykonywane na hoście, na którym działa Zabbix agent.
Uwaga: pozycje system.run[] są domyślnie wyłączone i, jeśli są używane,
muszą zostać włączone (dozwolone) oraz zdefiniowane
w pliku konfiguracyjnym Zabbix agent lub agent 2 (parametr konfiguracyjny AllowKey).
Polecenia zdefiniowane przez użytkownika w pozycjach, takich jak sprawdzenia zewnętrzne, parametry użytkownika i pozycje agenta Zabbix system.run[],
są wykonywane przez użytkownika systemu operacyjnego używanego do uruchamiania komponentów Zabbix.
Aby wykonać te polecenia, ten użytkownik musi mieć niezbędne uprawnienia.
Pozycje HTTP agent
HTTP agent to pozycja służąca do wykonywania żądań danych przez HTTP/HTTPS. Pozycje HTTP agent są przydatne do wysyłania żądań do punktów końcowych HTTP w celu pobierania danych z usług takich jak Elasticsearch i OpenWeatherMap, sprawdzania stanu API Zabbix lub stanu serwera WWW Apache albo Nginx itp. Pozycje HTTP agent (z włączonym trapowaniem) mogą również działać jako pozycje trapper.
Pozycje skryptowe
Pozycja skryptowa to pozycja służąca do wykonywania zdefiniowanego przez użytkownika kodu JavaScript, który pobiera dane przez HTTP/HTTPS. Pozycje skryptowe są przydatne, gdy funkcjonalność zapewniana przez pozycje agenta HTTP nie jest wystarczająca. Na przykład w wymagających scenariuszach zbierania danych, które wymagają wielu kroków lub złożonej logiki, pozycję skryptową można skonfigurować tak, aby wykonała wywołanie HTTP, następnie przetworzyła otrzymane dane, a potem przekazała przekształconą wartość do drugiego wywołania HTTP.
Pozycje HTTP agent oraz pozycje skryptowe są obsługiwane przez serwer Zabbix i proxy i nie wymagają uruchomionego agenta na monitorowanym hoście.
Zaawansowane rozszerzenia
Moduły ładowalne
Moduły ładowalne, napisane w C, są wszechstronną i wydajnościowo zoptymalizowaną opcją rozszerzania funkcjonalności komponentów Zabbix (serwer, proxy, agent) na platformach UNIX. Moduł ładowalny jest zasadniczo biblioteką współdzieloną używaną przez demon Zabbix i ładowaną podczas uruchamiania. Biblioteka powinna zawierać określone funkcje, aby proces Zabbix mógł wykryć, że plik jest rzeczywiście modułem, który może załadować i z którym może pracować.
Moduły ładowalne mają szereg zalet, w tym możliwość dodawania nowych metryk lub implementowania dowolnej innej logiki (na przykład eksportu danych historii Zabbix), wysoką wydajność oraz możliwość tworzenia, używania i udostępniania zapewnianej przez nie funkcjonalności. Przyczynia się to do bezproblemowego utrzymania i pomaga łatwiej dostarczać nową funkcjonalność niezależnie od bazowego kodu Zabbix.
Moduły ładowalne są szczególnie przydatne w złożonych środowiskach monitorowania.
Podczas monitorowania systemów wbudowanych, przy dużej liczbie monitorowanych parametrów
lub przy użyciu ciężkich skryptów ze złożoną logiką albo długim czasem uruchamiania,
rozszerzenia takie jak parametry użytkownika, pozycje agenta Zabbix system.run[] oraz kontrole zewnętrzne
będą miały wpływ na wydajność.
Moduły ładowalne oferują sposób rozszerzania funkcjonalności Zabbix bez poświęcania wydajności.
Wtyczki
Wtyczki rozszerzają możliwości monitorowania Zabbix agent 2. Napisane w języku programowania Go, stanowią alternatywę dla modułów ładowalnych (napisanych w C).
Wtyczka to pakiet Go, który definiuje strukturę i implementuje jeden lub kilka interfejsów wtyczek (Exporter, Collector, Configurator, Runner, Watcher). Obsługiwane są dwa typy wtyczek Zabbix agent 2:
- Wbudowane wtyczki (obsługiwane od Zabbix 4.4.0)
- Wtyczki ładowalne (obsługiwane od Zabbix 6.0.0)
Zobacz listę wtyczek dostarczanych przez Zabbix.
Instrukcje i samouczki dotyczące tworzenia własnych wtyczek można znaleźć w Developer center.
Dostosowywanie alertów
Webhooki
Webhook to typ mediów w Zabbix, który umożliwia rozszerzenie możliwości alertowania Zabbix na zewnętrzne oprogramowanie, takie jak systemy helpdesk, czaty lub komunikatory. Podobnie jak pozycje skryptowe, webhooki są przydatne do wykonywania wywołań HTTP przy użyciu niestandardowego kodu JavaScript, na przykład do wysyłania powiadomień do różnych platform, takich jak Microsoft Teams, Discord i Jira. Możliwe jest również zwrócenie pewnych danych (na przykład o utworzonych zgłoszeniach helpdesk), które są następnie wyświetlane w Zabbix.
Istniejące webhooki są dostępne w repozytorium Git Zabbix. Informacje dotyczące tworzenia niestandardowych webhooków można znaleźć w dokumencie Wytyczne dotyczące tworzenia webhooków.
Skrypty alertów
Skrypt alertu to typ mediów w Zabbix, który umożliwia utworzenie alternatywnego sposobu (skryptu) obsługi alertów Zabbix. Skrypty alertów są przydatne, jeśli istniejące typy mediów do wysyłania alertów w Zabbix nie spełniają Twoich oczekiwań.
Dostosowanie frontendu
Własne motywy
Można zmienić wygląd wizualny frontendu Zabbix, używając własnych motywów. Zobacz instrukcje dotyczące tworzenia i stosowania własnych motywów.
Moduły frontend
Moduły frontend zapewniają możliwość rozszerzenia funkcjonalności frontend Zabbix przez dodawanie modułów innych firm lub tworzenie własnych. Za pomocą modułów frontend można dodawać nowe pozycje menu, odpowiadające im widoki, akcje itp.
Skrypty globalne
Skrypt globalny to zdefiniowany przez użytkownika zestaw poleceń, które mogą być wykonywane na monitorowanym celu (przez interpreter powłoki (/bin/sh)), w zależności od skonfigurowanego zakresu i uprawnień użytkownika. Skrypty globalne można skonfigurować dla następujących działań:
Skrypty globalne są przydatne w wielu przypadkach.
Na przykład, jeśli są skonfigurowane dla operacji akcji lub ręcznych działań na hoście, można używać skryptów globalnych
do automatycznego lub ręcznego wykonywania zdalnych poleceń,
takich jak ponowne uruchamianie aplikacji (serwera WWW, middleware, CRM itp.)
lub zwalnianie miejsca na dysku (usuwanie starszych plików, czyszczenie /tmp itp.).
Inny przykład: jeśli są skonfigurowane dla ręcznych działań na zdarzeniach,
można używać skryptów globalnych do zarządzania zgłoszeniami problemów w systemach zewnętrznych.
Skrypty globalne mogą być wykonywane przez serwer Zabbix, proxy lub agent.
Polecenia zdefiniowane przez użytkownika są wykonywane z poziomu użytkownika systemu operacyjnego używanego do uruchamiania komponentów Zabbix. Aby wykonać te polecenia, ten użytkownik musi mieć niezbędne uprawnienia.
Zabbix API
Zabbix API to API oparte na HTTP, będące częścią frontend Zabbix. Za pomocą Zabbix API można wykonywać następujące operacje:
- Programowo pobierać i modyfikować konfigurację Zabbix.
- Importować i eksportować konfigurację Zabbix.
- Uzyskiwać dostęp do danych historycznych i trendów Zabbix.
- Konfigurować aplikacje do współpracy z Zabbix.
- Integrować Zabbix z oprogramowaniem firm trzecich.
- Automatyzować rutynowe zadania.
Zabbix API składa się z wielu metod, które są umownie pogrupowane w oddzielne API. Każda metoda wykonuje określone zadanie. Informacje o dostępnych metodach, a także przegląd funkcji udostępnianych przez Zabbix API, można znaleźć w referencji metod Zabbix API.