Konferencja Mega Sekurak Hacking Party w Krakowie – 26-27 października!
Adminie… Czy znamy Twoje grzechy? ;-) Sprawdź!
Konferencja Mega Sekurak Hacking Party w Krakowie – 26-27 października!
Adminie… Czy znamy Twoje grzechy? ;-) Sprawdź!
Czy kiedykolwiek zdarzyła Ci się sytuacja, że funkcjonalności dashboardów w Zabbix były niewystarczające? A może masz więcej systemów monitoringu lub innych źródeł danych, i chciałbyś przedstawić dane z kilku źródeł na jednym dashboardzie? Albo kadrę zarządzającą, która mimo najszczerszych chęci i przygotowania dashboardów w Zabbix “nie będą klikać w Zabbixie, bo mają ważniejsze rzeczy do roboty”?
Nad podobnymi pytaniami zastanawialiśmy się kilka lat temu w podobnym >artykule. Od tego czasu może nie zmieniły się wyzwania, z którymi musimy się mierzyć jako administratorzy monitoringu, ale na pewno technologia poszła mocno do przodu.
Zapraszam więc na odświeżoną serię artykułów związanymi z współpracy “Zabbix + Grafana” , począwszy od instalacji środowiska Grafana, podłączenia się do środowiska Zabbix, stworzenia pierwszych dashboardów, kończąc na pobieraniu danych nie tylko za pomocą oficjalnego pluginu Zabbix. Artykuły będą skupione bardziej na oprogramowaniu Grafana, wykorzystujące środowisko Zabbix jako źródło danych.
W dzisiejszym artykule przedstawiono podstawową instalację Grafany, połączenie jej z istniejącą już instancją serwera Zabbix za pomocą oficjalnego modułu.
Zaczynamy!
Jeśli kiedykolwiek analizowałeś metryki z różnych źródeł, na pewno natknąłeś się na Grafanę. To jedno z najpopularniejszych narzędzi open source do wizualizacji i monitorowania danych. Co ważne – Grafana sama nie zapisuje danych, a jedynie je pobiera i prezentuje w czytelny sposób, korzystając z takich źródeł jak Prometheus, InfluxDB, Elasticsearch lub właśnie Zabbix.
Za projektem stoi firma Grafana Labs, która – oprócz darmowej wersji open source (Grafana OSS) – oferuje też bardziej rozbudowaną wersję Enterprise oraz >Grafana Cloud, czyli w pełni zarządzane środowisko w chmurze.
Grafana jest częścią szerszego ekosystemu observability. W jego skład wchodzą m.in. Loki (logi), Tempo (trace’y – czyli śledzenie przepływu żądań w aplikacjach) oraz Mimir (metryki). Dzięki temu możliwe jest kompleksowe monitorowanie systemów. Więcej informacji oraz całe portfolio firmy można znaleźć na >na stronie projektu.
Do przygotowania tego poradnika stworzono dedykowane środowisko testowe (schemat znajdziesz na poniższym Rysunku).

W tym przykładzie założono, że posiadamy już serwer Zabbix w wersji 7.0.17 (najnowsza wersja LTS w chwili pisania artykułu – przyjęto taką wersję, by ten artykuł był jak najdłużej aktualny), jednak Grafana zadziała również z innymi wersjami Zabbix aktualnie wspieranymi przez Zabbix (6.0 oraz 7.4).
Grafana została zainstalowana na osobnym serwerze, co jest zalecaną praktyką. W tym przykładzie wykorzystano wersję 12.1, aktualną w chwili pisania artykułu (Grafana nie oferuje wersji LTS).
Najpierw upewnij się, że serwer Grafana może połączyć się z frontendem Zabbix przez HTTP lub HTTPS (np. port 80 albo 443, w zależności od konfiguracji). W dalszej części artykułu zakładamy podstawową konfigurację frontendu HTTP na porcie TCP 80 (ale oczywiście autor zachęca do używania HTTPS!).
Pierwszym krokiem w integracji jest utworzenie w Zabbix użytkownika, którego Grafana będzie używać do połączeń z API. Najprostszym sposobem byłoby utworzenie użytkownika z uprawnieniami “Super Admin”, ale chyba każdy przyzna, że nie jest to zbyt bezpieczne rozwiązanie. W tym artykule stworzymy pełnoprawnego użytkownika “Read-Only”, który będzie mógł tylko czytać informacje bez możliwości wprowadzania jakichkolwiek zmian (np. na wypadek wycieku poświadczeń do logowania).
By to zrobić, na początku należy zalogować się do GUI i wejść w zakładkę “Users” – “User Groups” i kliknąć w górnym prawym rogu “Create user group”:

Nazywamy naszą nową grupę (np. “API RO”) i wyłączamy jej możliwość logowania do GUI (“Frontend Access” ustawiamy na “Disabled”):

Następnie wchodzimy w zakładkę “Host Permissions” i dodajemy uprawnienia RO dla wszystkich maszyn – najłatwiej jest kliknąć w kontrolkę “Add”, a następnie w przycisk “Select”, wybrać wszystkie grupy hostów w nowo otwartym oknie i znowu kliknąć “Select”:

Zakładamy, że chcemy móc monitorować wszystkie hosty z środowiska Zabbix; oczywiście nic nie stoi na przeszkodzie by wybrać tylko konkretne grupy i tylko im nadać uprawnienia RO.
Wszystkie wybrane przez nas grupy powinny się pojawić w odpowiedniej sekcji “Permission”. Teraz należy wybrać opcję “Read” i kliknąć “Add”:

Jeżeli mamy już grupę użytkowników z odpowiednimi uprawnieniami, należy teraz stworzyć odpowiednią Rolę dla Grafany. Rola użytkowników służy do wskazania, do jakich obszarów środowiska Zabbix użytkownicy powinni mieć dostęp. Można pominąć ten punkt i użyć domyślnych roli np. “User role”, ale my stworzymy niestandardową rolę z minimalnymi uprawnieniami. W tym celu musimy wejść w zakładkę “Users” – “Users roles”, a potem kliknąć w przycisk “Create user role”:

Dalsza konfiguracja wygląda następująco:


Jeśli konfiguracja wygląda poprawnie, zatwierdź ją przyciskiem Add, aby utworzyć nową rolę:

Po stworzeniu roli możemy już utworzyć użytkownika, który będzie używany do pobierania danych z środowiska Zabbix.W tym celu wchodzimy w zakładkę “Users” – “Users”, a potem kliknąć w przycisk “Create user”:

Tworzymy użytkownika np. “grafana_api”, dodajemy go do stworzonej wcześniej grupy “API RO” i nadajemy hasło (nie klikamy jeszcze “Add”!):

Następnie w zakładce “Permissions” ustawiamy nową rolę “API USERS” – pokaże nam się podsumowanie wszystkich uprawnień. Jeżeli wszystko jest ustawione poprawnie, klikamy przycisk “Add”:

Kiedy już posiadamy użytkownika z odpowiednimi uprawnieniami, możemy przejść do instalacji i konfiguracji Grafany.
Grafanę możesz zainstalować na kilka sposobów (menedżer pakietów, paczka .deb/.rpm, kompilacja ze źródeł). W tym poradniku wybieramy najwygodniejszą opcję – instalację przez menedżera pakietów, bo ułatwia przyszłe aktualizacje. W tym artykule przedstawiono skróconą wersję instalacji dla systemu Ubuntu 24.04 za pomocą managera paczek – jeżeli masz inny system operacyjny lub chcesz wykorzystać inną metodę instalacji – sprawdź oficjalną >dokumentację producenta.
Logujemy się do naszego serwera (w tym przypadku jest to “grafana-12-1”) i upewniamy się, że mamy odpowiednie narzędzia do pobrania i instalacji Grafany:
sudo apt-get install -y apt-transport-https software-properties-common wget
Importujemy klucze GPG dla repozytorium Grafana, byśmy mieli pewność, że paczki pochodzą z zaufanego źródła i nie zostały zmienione po podpisaniu:
sudo mkdir -p /etc/apt/keyrings/
wget -q -O - https://apt.grafana.com/gpg.key | gpg --dearmor | sudo tee /etc/apt/keyrings/grafana.gpg > /dev/null
Dodajemy konfigurację repozytorium Grafana w wersji “Stable”:
echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
Aktualizujemy bazę możliwych paczek do ściągnięcia:
sudo apt-get update
Nadszedł czas na instalację Grafany w wersji OOS:
sudo apt-get install grafana
Po instalacji uruchamiamy usługę Grafany oraz ustawiamy jej autostart:
sudo systemctl start grafana-server.service
sudo systemctl enable grafana-server.service
Jeżeli wykonałeś powyższe kroki (lub zainstalowałeś usługę w inny sposób) i wszystko przebiegło pomyślnie to możemy wejść przez przeglądarkę na adres serwera Grafany na porcie 3000 (w tym artykule jest to: http://192.168.88.241:3000). Naszym oczom powinna ukazać się następująca strona startowa:

Teraz wystarczy wpisać domyślne dane do logowania (admin/admin), by potwierdzić poprawność naszej instalacji (jeżeli wchodzisz pierwszy raz, możesz zostać poproszony jeszcze o zmianę hasła konta “admin”):

W tym miejscu autor mocno zachęca do podstawowych zadań administracyjnych, takich jak zmiana hasła administratora, dodanie nowych użytkowników itp. by przyzwyczaić się do całego panelu Grafany. Natomiast w artykule skupimy się już nad najważniejszym – podpięciem pod Zabbixa.
Sama instalacja pluginu, który pobiera dane z serwera Zabbix, jest również bardzo prosta i składa się z kilku kliknięć na stronie WWW. Aby zainstalować plugin musimy wejść w “Administration” – “Plugins and data” – “Plugins” w menu znajdującym się po lewej stronie:

Następnie musimy znaleźć interesujący nas plugin – najlepiej w wyszukiwarce wpisać słowo “zabbix” i go kliknąć:

Gdy klikniemy w plugin “Zabbix”, należy go zainstalować w GUI:

Po instalacji najprawdopodobniej plugin będzie w stanie wyłączonym, dlatego musimy go jeszcze włączyć klikając przycisk “Enable”:

Plugin został już przez nas aktywowany, więc teraz musimy skonfigurować Grafanę, by łączyła się do naszego serwera Zabbix. W tym celu wybieramy z menu “Connections” – “Data sources”, a następnie “Add new data source”:

Wyszukujemy nasz świeżo zainstalowany plugin “Zabbix” i go klikamy:

Jest to chyba najtrudniejszy fragment w tym poradniku. Konfiguracja wygląda następująco:



Po wprowadzeniu danych i zapisaniu konfiguracji (“Save & test”) połączenia zobaczysz komunikat potwierdzający (wraz z wersją API Zabbix):

Aby zweryfikować połączenie, otwórz sekcję Explore i sprawdź, czy Grafana prawidłowo pobiera dane z Zabbix (np. wyświetlając wykres w czasie). Znajdziesz ją w menu po lewej stronie:

Następnie upewnijmy się, że źródło jest ustawione na wcześniej skonfigurowane „zabbix-7-0”, a zapytanie jest ustawione na pobieranie wartości numerycznych („Metrics”). Następnie musimy wpisać odpowiednią grupę, nazwę hosta, tag oraz pozycję, która nas interesuje. Gdy pojawi nam się wykres wartości w zależności od czasu oraz tabelka z danymi to możemy uznać, że wszystko ustawiliśmy poprawnie i możemy zacząć pobierać i przetwarzać dane np. Budując pierwszy dashboard.
Poniżej przedstawiono przykładowe wyświetlenie wartości load (średnia z jednej minuty) na domyślnej instalacji zabbix-server z domyślnym szablonem linux:
Group – Zabbix servers
Host – Zabbix server
Item tag - component: cpu (wartość ta nie jest wymagana)
Item - Load average (1m avg)

Uwaga! Jeżeli jakaś wartość dla Grafany nie jest dostępna (wielki napis “No data” zamiast liczb i wykresów), jednak Zabbix zbiera wartość poprawnie, to jedna z możliwych przyczyn to wybranie za małego przedziału czasowego w Grafanie (prawy górny róg). Na przykład kiedy pobieramy informacje o pozycji odświeżanej co godzinę, a w Grafanie wybierzemy przedział “Last 5 minutes”, to Grafana może trafić na “dziurę”, ponieważ pozycja mogła być sprawdzona 40 minut temu (a na pewno nie w ciągu ostatnich 5 minut). Wybranie przedziału czasowego większego lub równego czasowi odświeżania pozycji powinno naprawić problem.
Jednocześnie zapraszamy na nasze nowe duże szkolenie Zabbix Expert z ponad 50% rabatem! Zapisy tutaj: https://zabbix.sekurak.pl
Niniejszy artykuł miał pokazać, że integracja Zabbixa z Grafaną wcale nie jest trudna. Autor gorąco zachęca do dalszych testów, a w szczególności do podpinania innych systemów oraz do tworzenia własnych dashboardów. Nie wiesz jak do tego się zabrać? W takim razie zapraszam na następny artykuł, gdzie skupimy się na tworzeniu przykładowego dashboardu. Jeżeli jednak artykuł pomógł Ci w pierwszych krokach z Grafaną to pomyśl o wsparciu autora >dobrą kawką!
~ Albert Przybylski, zawodowo: Architekt ds. Monitoringu w firmie Aplitt, prywatnie: pełnoprawny fanatyk Zabbixa zasilany kawą
Kto używa Nagiosa ręka w górę? aNag na Androida i ack / recheck poprzez przesuwanie alertów w prawo / lewo jest nie do pobicia.
Ja , posiadam Nagios
Alerty są do rozwiązywania problemów, a nie ukrywania :)
E tam. 8/10 problemów naprawia się samo jak ruch przejdzie, procek się schłodzi, albo coś tam jeszcze. (-: Może progi alarmowe mam za niskie, ale to już wygrzane od lat i nie brzęczy bez powodu.
Dzięki z instrukcję