Blog JSystems - uwalniamy wiedzę!

Szukaj

Jeśli słyszałeś, że Grafana to narzędzie, w którym zespoły DevOps oglądają kolorowe wykresy obciążenia serwerów, to dobry punkt startu, ale zaledwie ułamek prawdy. W tym przewodniku wyjaśnimy od zera, co to jest Grafana, do czego służy i jak działa, a wszystko pokażemy na przykładach. I nie na diagramach z internetu, tylko na prawdziwych zrzutach z działającej instalacji, którą specjalnie na potrzeby tego artykułu postawiliśmy na własnym serwerze: Grafana, Prometheus oraz kilka źródeł metryk.

Grafana - gotowy dashboard Node Exporter Full z realnymi metrykami serwera: CPU, pamięć, dysk i sieć
Tak wygląda gotowy dashboard w Grafanie. To popularny "Node Exporter Full", który zaraz zbudujemy razem od podstaw. Wszystkie liczby są prawdziwe, pochodzą z monitorowanego serwera. Kliknij zrzut, aby powiększyć.

Grafana w pigułce: darmowe, otwartoźródłowe narzędzie do wizualizacji danych i monitoringu w czasie rzeczywistym. Samo nie przechowuje danych. Łączy się ze źródłami (na przykład z Prometheusem), odpytuje je i rysuje z nich dashboardy oraz wysyła alerty, gdy coś działa nie tak.

Z tego artykułu dowiesz się:

  • co to jest Grafana, do czego służy i dlaczego sama nie przechowuje danych,
  • czym Grafana różni się od Power BI, Prometheusa, Kibany i Zabbixa,
  • jak Grafana współpracuje ze źródłami danych i czym jest stos LGTM,
  • co to jest dashboard, panel, zmienna, alert i transformacja,
  • jak krok po kroku, na osiem kroków, zbudować pierwszy dashboard,
  • jak zaimportować gotowy dashboard i jak ustawić alert,
  • jak zainstalować Grafanę w minutę i ile to kosztuje.

Co to jest Grafana?

Grafana to otwartoźródłowa (open source, czyli o publicznie dostępnym kodzie) platforma do wizualizacji danych, monitorowania systemów i alertowania. Mówiąc prościej: Grafana zamienia surowe liczby, które produkują Twoje serwery, aplikacje i bazy danych, w czytelne wykresy, liczniki i tabele zebrane na jednej stronie zwanej dashboardem.

Kluczowa rzecz, którą warto zrozumieć od razu, bo odróżnia Grafanę od większości innych narzędzi: Grafana nie przechowuje danych. Nie jest bazą danych. Zamiast tego łączy się z zewnętrznymi źródłami danych (ang. data source), odpytuje je na bieżąco i rysuje wyniki. Dane fizycznie leżą gdzie indziej, a Grafana odpowiada wyłącznie za to, żeby ładnie i użytecznie je pokazać. To trochę jak deska rozdzielcza w samochodzie: sama nie produkuje prędkości ani obrotów, tylko odczytuje je z czujników i pokazuje kierowcy.

Krótka historia Grafany

Grafana powstała w 2014 roku. Stworzył ją szwedzki programista Torkel Ödegaard, a projekt wyrósł jako odgałęzienie interfejsu Kibany. Dziś rozwija ją firma Grafana Labs, a narzędzie stało się faktycznym standardem monitoringu w świecie DevOps. Używają go zespoły od małych startupów po największe firmy technologiczne, właśnie dlatego, że jest darmowe, elastyczne i potrafi połączyć w jednym miejscu dane z wielu różnych systemów naraz.

Grafana a Power BI, czym się różnią?

To jedno z najczęstszych nieporozumień, dlatego poświęćmy mu osobną sekcję. Grafana i Power BI na pierwszy rzut oka robią to samo, czyli pokazują dane na wykresach, ale służą do dwóch różnych rzeczy. Grafana to narzędzie do monitoringu i danych na żywo: patrzysz w nią, żeby wiedzieć, czy system działa w tej chwili, i dostać alert, gdy coś się psuje. Power BI to narzędzie do raportowania i analityki biznesowej: sięgasz po nie, żeby przeanalizować, jak szła sprzedaż w minionym kwartale. Poniżej najważniejsze różnice:

Cecha Grafana Power BI
Główny celMonitoring i dane na żywoRaporty i analityka biznesowa
Rodzaj danychMetryki i szeregi czasowe (na bieżąco)Dane biznesowe, głównie historyczne
OdświeżanieSekundy, czas rzeczywistyZwykle okresowe (godziny, dni)
Typowy użytkownikDevOps, SRE, administratorAnalityk biznesowy, controlling
Model i cenaOpen source, darmowe, własny serwerKomercyjne, licencja Microsoftu
Mocna stronaAlerty i monitoring 24 godziny na dobęModelowanie danych i raporty (DAX)

Nie musisz zresztą wybierać jednego kosztem drugiego. W wielu firmach działają obok siebie: Grafana pilnuje infrastruktury na żywo, a Power BI służy działowi biznesowemu do raportów. Co ciekawe, Grafana też potrafi rysować wykresy wprost z baz SQL, więc część zadań analitycznych obrobi, ale to nie jest jej główne przeznaczenie. Prosta zasada na koniec: jeśli pytasz "czy to działa w tej chwili", wybierasz Grafanę; jeśli pytasz "jak nam poszło w zeszłym miesiącu", sięgasz po Power BI.

Do czego służy Grafana? Najczęstsze zastosowania

Choć Grafana kojarzy się głównie z IT, jej zastosowania są znacznie szersze. Oto obszary, w których sprawdza się najlepiej:

Obszar Przykłady użycia
IT i DevOpsMonitoring serwerów, kontenerów, Kubernetesa, baz danych i aplikacji. Szybkie wykrywanie awarii.
SRE i niezawodnośćŚledzenie dostępności usług, celów SLO i czasów odpowiedzi.
Monitoring aplikacji (APM)Liczba żądań, błędy, opóźnienia, wąskie gardła w kodzie.
Analityka biznesowaSprzedaż, liczba zamówień, ruch na stronie, wprost z baz danych firmy.
IoT (internet rzeczy)Odczyty z czujników: temperatura, wilgotność, zużycie energii.

Jak działa Grafana? Architektura krok po kroku

Żeby Grafana miała co pokazać, ktoś musi najpierw te dane zebrać i gdzieś zapisać. Najpopularniejszy zestaw w monitoringu wygląda tak: metryki zbiera Prometheus (baza szeregów czasowych, czyli danych zapisywanych ze znacznikiem czasu), a Grafana je z niego wyciąga i rysuje. Oto cała ścieżka danych, którą warto zapamiętać:

1

Źródła danych

Serwery, aplikacje i bazy produkują metryki: zużycie CPU, pamięci, liczbę żądań.

2

Eksportery

Programy takie jak node_exporter udostępniają metryki pod adresem /metrics.

3

Prometheus

Co kilkanaście sekund pobiera metryki (tzw. scrape) i zapisuje je z czasem pomiaru.

4

Grafana

Odpytuje Prometheus językiem PromQL i rysuje panele, dashboardy oraz alerty.

Prometheus pilnuje, żeby faktycznie pobierać dane ze wszystkich celów (ang. targets). Na naszym środowisku widać to jak na dłoni: Prometheus odpytuje trzy zestawy metryk (node, cadvisor i samego siebie) i wszystkie są w stanie UP, czyli zdrowe.

Prometheus jako źródło danych dla Grafany - cele node, cadvisor i prometheus w stanie UP
Prometheus zbiera metryki z trzech celów. To on jest źródłem danych, z którego korzysta Grafana.

Stos LGTM, czyli Grafana i observability

W większych systemach nie wystarczą same metryki. Chcemy widzieć też logi (zapisy zdarzeń) oraz ślady (ang. traces, czyli droga pojedynczego żądania przez system). To podejście nazywa się observability (obserwowalność) i Grafana Labs ma na nie komplet własnych narzędzi, w skrócie LGTM:

  • L jak Loki to baza logów, czyli "Prometheus dla logów".
  • G jak Grafana to warstwa, w której wszystko oglądasz.
  • T jak Tempo to baza śladów żądań.
  • M jak Mimir to skalowalne przechowywanie metryk na dużą skalę.

Dla początkującego wniosek jest prosty: Grafana to nie tylko wykresy z jednego Prometheusa. To centrum dowodzenia, w którym w jednym miejscu łączysz metryki, logi i ślady z całej infrastruktury.

Interfejs Grafany, czyli co widzisz po zalogowaniu

Grafana działa w przeglądarce. Po jej uruchomieniu (domyślnie pod adresem serwera na porcie 3000) wita nas ekran startowy. Za pierwszym razem logujemy się kontem administratora.

Ekran startowy Grafany z formularzem: pole użytkownika oraz pole hasła
Ekran startowy Grafany. Charakterystyczne pomarańczowe tło i znak w kształcie kompasu poznasz od razu.

Po zalogowaniu trafiamy na stronę główną. Najważniejszy jest lewy pasek nawigacji, bo to z niego korzystamy przez cały czas pracy. Znajdziesz w nim kilka stałych pozycji:

  • Dashboards to lista wszystkich dashboardów, czyli gotowych zestawów wykresów.
  • Explore pozwala szybko zadać jedno zapytanie i zobaczyć wynik, bez budowania całego dashboardu.
  • Alerting to reguły alertów oraz powiadomienia.
  • Connections to miejsce, gdzie podłączamy źródła danych.
  • Administration to ustawienia, użytkownicy, uprawnienia i wtyczki.
Interfejs Grafany - strona główna z panelem powitalnym i lewym menu nawigacji
Strona główna świeżo zainstalowanej Grafany. Po lewej widać całe menu, po którym będziemy się poruszać.

Źródła danych, czyli serce Grafany

Skoro Grafana sama nie ma danych, pierwsza rzecz, jaką się w niej robi, to podłączenie źródła danych. W menu Connections znajdziemy katalog obsługiwanych źródeł. Grafana wspiera kilkadziesiąt z nich od razu po instalacji, a kolejne setki można dodać przez wtyczki.

Grafana - katalog źródeł danych: Prometheus, Graphite, InfluxDB, Loki, Elasticsearch
Fragment katalogu źródeł danych. Widać między innymi Prometheus, Graphite, InfluxDB, Loki i Elasticsearch.

Oto najczęściej używane źródła danych i to, do czego się nadają:

Źródło danych Do czego służy
PrometheusMetryki systemów i aplikacji. Standard w monitoringu infrastruktury.
InfluxDBMetryki i dane z czujników (IoT). Kolejna popularna baza szeregów czasowych.
LokiLogi aplikacji. Rozwiązanie od Grafana Labs, "Prometheus dla logów".
ElasticsearchLogi i pełnotekstowe wyszukiwanie dużych zbiorów danych.
PostgreSQL / MySQL / MS SQLDane biznesowe wprost z baz relacyjnych, odpytywane językiem SQL.
CloudWatch / Azure MonitorMetryki usług chmurowych AWS oraz Azure.

My podłączamy Prometheus. Konfiguracja jest prosta: podajemy adres, pod którym działa nasze źródło, i zapisujemy. W tym przypadku Prometheus siedzi pod adresem http://prometheus:9090.

Grafana - konfiguracja źródła danych Prometheus z polem adresu serwera
Konfiguracja źródła Prometheus. W polu adresu wpisujemy, gdzie działa nasze źródło danych.

Po zapisaniu i przetestowaniu połączenia źródło pojawia się na liście jako aktywne i domyślne. Od tej chwili Grafana ma z czego rysować.

Grafana - lista źródeł danych z podłączonym i domyślnym źródłem Prometheus
Prometheus podłączony i oznaczony jako domyślne źródło danych.

Wtyczki, czyli jak rozszerzyć Grafanę

Jeśli jakiegoś źródła albo wykresu nie ma w Grafanie od razu, prawie na pewno znajdziesz je jako wtyczkę (ang. plugin). To dzięki wtyczkom Grafana obsługuje setki systemów, od baz danych, przez chmury, po narzędzia biznesowe. Wszystkie zebrane są w katalogu na grafana.com i widać je też bezpośrednio w Grafanie, w sekcji Administracja. Katalog liczy setki pozycji, więc naprawdę trudno trafić na system, którego nie da się podłączyć.

Grafana - katalog wtyczek (plugins) z filtrami po typie: źródła danych, panele i aplikacje
Katalog wtyczek wprost w Grafanie. Można filtrować po typie i jednym kliknięciem zainstalować wybraną wtyczkę.

Wtyczki dzielą się na trzy rodzaje:

  • Wtyczki źródeł danych (data source) dokładają nowe źródła, na przykład Zabbixa, Arkusze Google albo dowolne API zwracające dane w formacie JSON.
  • Wtyczki paneli (panel) dokładają nowe typy wizualizacji, na przykład rozbudowane wykresy, zegary czy mapy, których nie ma w standardowym zestawie.
  • Wtyczki aplikacji (app) to całe gotowe pakiety, które dodają do Grafany osobne strony i funkcje, na przykład rozwiązania do zarządzania alertami na dyżurze.

Instalacja jest prosta: w katalogu wybierasz wtyczkę i klikasz Install, a Grafana pobiera ją sama. Na własnym serwerze można też użyć polecenia grafana-cli plugins install albo wpisać listę wtyczek do konfiguracji, żeby instalowały się automatycznie przy starcie. Jedna ważna rada dotycząca bezpieczeństwa: instaluj przede wszystkim wtyczki podpisane (oznaczone jako Signed), pochodzące z oficjalnego katalogu, bo działają wewnątrz Twojej Grafany i mają dostęp do danych.

Dashboardy i panele, czyli z czego składa się Grafana

W Grafanie pracujemy na dwóch pojęciach:

  • Panel to pojedynczy kafelek, na przykład wykres, licznik albo tabela. Panel pokazuje wynik jednego lub kilku zapytań do źródła danych.
  • Dashboard to zestaw paneli ułożonych na jednej stronie, na przykład komplet wykresów opisujących kondycję jednego serwera.

Na liście dashboardów widać te, które już mamy. Część zbudowaliśmy sami, część zaimportowaliśmy gotowe. Dashboardy można porządkować w folderach i opisywać tagami, co bardzo pomaga, gdy w firmie jest ich kilkaset.

Grafana - lista dashboardów z tagami i nazwami
Lista dashboardów. Każdy można oznaczyć tagami, co ułatwia odnajdywanie ich w większych zespołach.

Typy wizualizacji w Grafanie

Grafana daje kilkanaście typów paneli i to samo zapytanie można pokazać na wiele sposobów: jako wykres, licznik, wskaźnik, tabelę albo mapę ciepła. Najczęściej używane typy to:

Typ panelu Kiedy się przydaje
Time series (wykres w czasie)Zmiana wartości w czasie, na przykład obciążenie CPU minuta po minucie.
Stat (licznik)Jedna duża liczba, na przykład bieżące zużycie pamięci w procentach.
Gauge (wskaźnik)Wartość na skali z progami, na przykład zapełnienie dysku ze strefą czerwoną.
Bar chart (słupki)Porównanie wartości między kategoriami.
Table (tabela)Wiele wartości i etykiet naraz, do przeglądania szczegółów.
Heatmap (mapa ciepła)Rozkład wartości, na przykład czasy odpowiedzi aplikacji.

Zmienne, transformacje i adnotacje

Trzy funkcje, które szybko zamieniają początkującego w sprawnego użytkownika Grafany.

Zmienne (ang. variables, templating) to listy rozwijane u góry dashboardu. Dzięki nim jeden dashboard obsłuży wiele serwerów albo środowisk: wybierasz wartość z listy, a wszystkie panele przeliczają się dla wybranej opcji. Nie musisz budować osobnego dashboardu na każdy serwer. Poniżej dodaliśmy do naszego dashboardu prostą zmienną "Serwer", która pojawia się jako lista wyboru u góry.

Grafana - zmienna dashboardu jako lista wyboru Serwer u góry pulpitu
Zmienna "Serwer" (zaznaczona ramką) jako lista rozwijana u góry dashboardu. Zmieniasz wybór, a panele przeliczają się same.

Zmienne definiuje się w ustawieniach dashboardu, w zakładce Variables. Podajesz nazwę, typ (na przykład lista własnych wartości albo wynik zapytania) i gotowe.

Grafana - ustawienia zmiennych dashboardu (Variables) z definicją zmiennej
Ustawienia zmiennych dashboardu. Tu definiujemy nazwę i typ zmiennej.

Transformacje (ang. transformations) to obróbka danych już w Grafanie, bez ruszania źródła. W zakładce Transformations w edytorze panelu możesz połączyć wyniki, policzyć sumy, zmienić nazwy kolumn albo odfiltrować wiersze, zanim trafią na wykres.

Grafana - zakładka Transformations w edytorze panelu z listą dostępnych transformacji
Zakładka Transformations. Dane obrabiasz tu w Grafanie, nie ruszając źródła.

Adnotacje (ang. annotations) to pionowe znaczniki na wykresie opisujące zdarzenia, na przykład wdrożenie nowej wersji albo restart usługi. Od razu widać, czy skok obciążenia zbiegł się z jakąś zmianą. Konfiguruje się je w ustawieniach dashboardu, w zakładce Annotations.

Grafana - ustawienia adnotacji dashboardu (Annotations)
Ustawienia adnotacji. Tu włączamy znaczniki zdarzeń nanoszone na wykresy.

Import, eksport i wersjonowanie dashboardów

Każdy dashboard w Grafanie to tak naprawdę plik w formacie JSON. Możesz go wyeksportować, wysłać koledze albo trzymać w repozytorium kodu razem z resztą projektu. To otwiera bardzo wygodną praktykę: trzymanie konfiguracji jako kod. Zamiast klikać wszystko ręcznie po nowej instalacji, wgrywasz gotowe pliki źródeł danych i dashboardów (tak zwany provisioning), a Grafana sama je wczytuje. Grafana zapisuje też historię zmian dashboardu, więc w razie pomyłki wrócisz do wcześniejszej wersji.

Budujemy pierwszy dashboard w Grafanie krok po kroku

Teraz najważniejsza część, czyli praktyka. Zbudujemy od zera wskaźnik pokazujący zużycie procesora. Przejdziemy przez to na osiem kroków, a każdy pokażemy na prawdziwym zrzucie z Grafany, dokładnie w takiej kolejności, w jakiej zobaczysz to u siebie.

Krok 1. Utwórz nowy, pusty dashboard

W lewym menu wybieramy Dashboards, a następnie przycisk New i opcję New dashboard. Grafana otwiera pusty dashboard w trybie edycji. To nasza czysta kartka, na której zaraz ułożymy panele.

Grafana - nowy, pusty dashboard w trybie edycji gotowy do dodania paneli
Krok 1. Nowy, pusty dashboard w trybie edycji. Na górze przyciski do zapisu i dodawania paneli.

Krok 2. Dodaj panel i wybierz źródło danych

Klikamy przycisk Add u góry i wybieramy Visualization. Grafana zapyta o źródło danych, wskazujemy nasz Prometheus. Otwiera się edytor nowego, jeszcze pustego panelu. Na dole widać wybrane źródło danych oraz pole na zapytanie, a po prawej listę typów wizualizacji.

Grafana - edytor nowego, pustego panelu z wybranym źródłem danych Prometheus i pustym zapytaniem
Krok 2. Edytor nowego panelu. Czerwona ramka wskazuje wybór źródła danych (nasz Prometheus). Po prawej mamy typy wizualizacji.

Krok 3. Wybierz typ wizualizacji (wskaźnik)

Po prawej stronie klikamy listę wizualizacji i wybieramy Gauge, czyli wskaźnik. Wybraliśmy go, bo od razu pokaże, czy obciążenie jest w strefie zielonej, żółtej czy czerwonej. Ten sam wynik można oczywiście pokazać jako wykres, licznik albo tabelę, o czym mówiliśmy wyżej.

Grafana - lista typów wizualizacji: Time series, Bar chart, Stat, Gauge, Table, Heatmap
Krok 3. Wybór typu wizualizacji. Czerwona ramka wskazuje pozycję Gauge (wskaźnik), którą wybieramy.

Krok 4. Wpisz zapytanie i zrozum PromQL

W polu zapytania (w trybie Code) wpisujemy zapytanie w języku PromQL, czyli w języku zapytań Prometheusa:

100 - (avg(rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)

To zapytanie wygląda groźnie, ale mówi prostą rzecz: policz, jaki procent czasu procesor spędził bezczynnie, i odejmij to od stu. Wynik to procent realnego obciążenia CPU. Rozłóżmy je na części, bo to najlepsza okazja, żeby zrozumieć składnię PromQL:

Fragment Co oznacza
node_cpu_seconds_totalMetryka z node_exportera: łączny czas pracy procesora w sekundach.
{mode="idle"}Filtr etykiety. Bierzemy tylko czas, w którym procesor był bezczynny (tryb idle).
[5m]Okno czasu. Patrzymy na ostatnie 5 minut historii tej metryki.
rate(...)Tempo przyrostu na sekundę w tym oknie, czyli ile "bezczynności" przybywa co sekundę.
avg(...)Uśrednienie po wszystkich rdzeniach procesora do jednej liczby.
* 100Zamiana ułamka na procent.
100 - (...)Odejmujemy procent bezczynności od stu i dostajemy procent obciążenia.

Po wpisaniu zapytania wskaźnik od razu pokazuje bieżące obciążenie procesora.

Grafana - wskaźnik gauge dla CPU z wpisanym zapytaniem PromQL
Krok 4. Wskaźnik CPU z wpisanym zapytaniem. Czerwona ramka wskazuje pole zapytania PromQL, u góry widać gotowy wskaźnik.

Krok 5. Ustaw progi kolorów (thresholds)

Teraz sprawimy, żeby wskaźnik sam zmieniał kolor, gdy robi się gorąco. Służą do tego progi (ang. thresholds). Znajdziesz je w prawym panelu opcji, po przewinięciu w dół do sekcji Thresholds. Domyślnie jest tam jeden próg Base w kolorze zielonym. Klikamy Add threshold i dodajemy dwa progi: wartość 70 w kolorze żółtym i wartość 85 w kolorze czerwonym. Od teraz wskaźnik jest zielony do 70 procent, żółty od 70 do 85 i czerwony powyżej 85.

Grafana - sekcja Thresholds w opcjach panelu z przyciskiem Add threshold i progami kolorów
Krok 5. Sekcja Thresholds w prawym panelu opcji. Czerwona ramka wskazuje przycisk Add threshold, którym dodajemy progi 70 (żółty) i 85 (czerwony).

Krok 6. Zapisz i nazwij dashboard

Panel gotowy, więc zapisujemy całość przyciskiem Save dashboard. Grafana poprosi o nazwę i folder. Nazywajmy dashboardy po ludzku, na przykład "Kondycja serwera", bo za tydzień nikt nie będzie pamiętał, co znaczy skrót z trzech liter.

Grafana - okno zapisu dashboardu z polem nazwy i wyborem folderu
Krok 6. Zapis dashboardu. Podajemy nazwę i folder, w którym ma się znaleźć.

Krok 7. Gotowy dashboard

Dokładamy jeszcze dwa panele (licznik pamięci i wykres obciążenia w czasie) w ten sam sposób i mamy pierwszy, w pełni działający dashboard. Wskaźnik CPU pokazuje bieżące obciążenie, licznik zużycie pamięci, a wykres na dole to samo obciążenie w czasie.

Grafana - gotowy pierwszy dashboard: wskaźnik CPU, licznik RAM, obciążenie i wykres w czasie
Krok 7. Nasz pierwszy dashboard w Grafanie, zbudowany od zera.

Krok 8. Zmień zakres czasu

Na koniec rzecz, której używa się bez przerwy: selektor zakresu czasu w prawym górnym rogu. Jednym kliknięciem przełączamy widok z ostatnich 30 minut na ostatnią godzinę, dobę albo dowolny własny przedział, a wszystkie panele odświeżają się razem.

Grafana - selektor zakresu czasu z gotowymi zakresami: ostatnie 5 minut, godzina, doba
Krok 8. Selektor zakresu czasu. Zmiana przedziału od razu przelicza wszystkie panele.

Gotowe dashboardy ze społeczności (import krok po kroku)

Nie wszystko trzeba budować samemu. Największa siła Grafany to społeczność, która dzieli się gotowymi dashboardami. Na stronie grafana.com/dashboards jest ich kilka tysięcy: dla serwerów, baz danych, Kubernetesa, Dockera, kolejek, aplikacji i setek innych systemów. Każdy dashboard ma swój numer (ID), a wystarczy podać ten numer w Grafanie, żeby wgrać komplet gotowych wykresów.

Import przebiega tak:

  1. Na grafana.com/dashboards znajdujesz dashboard, który Cię interesuje, i zapisujesz jego numer. Dla monitoringu serwera to najczęściej Node Exporter Full o numerze 1860.
  2. W Grafanie wybierasz Dashboards, potem New i Import.
  3. Wpisujesz numer dashboardu (1860) w pole "Grafana.com dashboard URL or ID" i klikasz Load.
  4. Grafana pobiera definicję i prosi o wskazanie źródła danych. Wybierasz swój Prometheus i klikasz Import.
Grafana - ekran importu dashboardu z polem na numer z grafana.com i przyciskiem Load
Ekran importu. W zaznaczone pole wpisujemy numer dashboardu (tu 1860) i klikamy Load.

Po kilku sekundach mamy gotowy, rozbudowany dashboard, taki jak Node Exporter Full z początku artykułu. Jego górna część to zestaw wskaźników z najważniejszymi liczbami: obciążenie CPU, zużycie pamięci i zapełnienie dysku w jednym rzucie oka.

Grafana - górny pas wskaźników w dashboardzie Node Exporter Full: CPU, pamięć, dysk
Zaimportowany Node Exporter Full. Kilka wskaźników i od razu wiadomo, czy z serwerem jest wszystko w porządku.

Grafana nie ogranicza się do metryk pojedynczego serwera. Równie łatwo zaimportować dashboard do monitoringu kontenerów. Poniższy pokazuje zużycie procesora, pamięci i ruch sieciowy w rozbiciu na poszczególne kontenery Dockera, każdy jako osobna linia z etykietą.

Grafana - dashboard cAdvisor: zużycie CPU, pamięci i sieci w rozbiciu na kontenery Docker
Zaimportowany dashboard do monitoringu kontenerów. Każdy kontener to osobna linia.

Explore, czyli zapytania na szybko

Nie zawsze chcemy od razu budować dashboard. Czasem trzeba tylko szybko coś sprawdzić. Do tego służy widok Explore. Wpisujemy jedno zapytanie, uruchamiamy je i od razu dostajemy wykres. To idealne miejsce do nauki języka zapytań i do doraźnego przeglądania danych podczas awarii.

Grafana - widok Explore z zapytaniem PromQL i wykresem wyniku
Widok Explore. Jedno zapytanie, natychmiastowy wykres, bez budowania całego dashboardu.

Alerty w Grafanie, czyli monitoring, który sam Cię zawiadamia (tutorial)

Same wykresy to nie wszystko. Nikt nie będzie wpatrywał się w ekran przez całą dobę. Dlatego Grafana ma wbudowane alertowanie: sama pilnuje warunków i wysyła powiadomienie, gdy coś jest nie tak. Zobaczmy, jak ustawić prosty alert "obciążenie CPU powyżej 90 procent". Regułę tworzymy w menu Alerting, przyciskiem New alert rule.

Grafana - formularz tworzenia reguły alertu: nazwa, zapytanie, warunek i folder
Formularz nowej reguły alertu. Przechodzimy przez kolejne ponumerowane sekcje.

Formularz prowadzi nas przez kolejne, ponumerowane sekcje:

  1. Nazwa reguły. Wpisujemy coś czytelnego, na przykład "Wysokie obciążenie CPU".
  2. Zapytanie i warunek. Wybieramy źródło (Prometheus) i zapytanie liczące obciążenie CPU, a niżej ustawiamy warunek, na przykład WHEN QUERY IS ABOVE 90. To znaczy: uruchom alert, gdy wynik przekroczy 90.
  3. Ocena reguły (evaluation). Wskazujemy folder i grupę, jak często Grafana ma sprawdzać warunek (na przykład co minutę) oraz jak długo musi być spełniony, zanim alert się odpali (na przykład przez 5 minut). Dzięki temu pojedynczy chwilowy skok nie budzi wszystkich w nocy.
  4. Etykiety i powiadomienia. Dodajemy etykiety i wskazujemy, gdzie ma trafić powiadomienie. Kanały (e-mail, Slack, Microsoft Teams) definiuje się w sekcji Contact points, a reguły ich doboru w Notification policies.
  5. Zapis. Zapisujemy regułę i od tej chwili Grafana pracuje za nas: sprawdza warunek w tle i sama wyśle wiadomość, gdy obciążenie przekroczy próg.

To jest właśnie sedno monitoringu. Dashboard pokazuje stan na życzenie, a alert sam zawiadamia, gdy dzieje się coś złego, nawet gdy nikt nie patrzy na ekran.

Grafana a inne narzędzia (Prometheus, Kibana, Zabbix, Datadog)

Grafana nie jest jedynym narzędziem tego typu, ale zajmuje wyjątkowe miejsce, bo jest niezależna od źródła danych i darmowa. Oto jak wypada na tle innych popularnych rozwiązań:

Narzędzie Czym się wyróżnia w porównaniu z Grafaną
PrometheusZbiera i przechowuje metryki, ale sam rysuje je bardzo skromnie. Grafana jest jego naturalnym uzupełnieniem do wizualizacji.
KibanaMocna przy logach, ale przywiązana do ekosystemu Elastic. Grafana łączy wiele źródeł naraz.
ZabbixKompletny system monitoringu z własnym zbieraniem danych. Często łączy się go z Grafaną dla ładniejszych wykresów.
Datadog / New RelicPłatne platformy w chmurze, wygodne, ale kosztowne. Grafanę uruchomisz za darmo na własnym serwerze.

Grafana a Prometheus

To para, którą najłatwiej pomylić, a różnica jest prosta. Prometheus zbiera i przechowuje dane, Grafana je pokazuje. Prometheus ma własny, bardzo skromny interfejs, więc do codziennego oglądania metryk i tak sięga się po Grafanę. Prawie zawsze działają razem: Prometheus w roli źródła, Grafana w roli deski rozdzielczej.

Grafana a Kibana

Kibana i Grafana wyrosły z tego samego korzenia, ale poszły w różne strony. Kibana jest najlepsza do logów w Elasticsearch i jest z tym ekosystemem mocno związana. Grafana jest uniwersalna: w jednym dashboardzie połączysz metryki z Prometheusa, logi z Lokiego i dane z bazy SQL. W monitoringu metryk to Grafana wygrała rynek.

Jak zainstalować Grafanę i ile to kosztuje

Grafanę uruchomisz na kilka sposobów. Najszybszy to Docker. Jedno polecenie i po chwili Grafana działa pod adresem http://localhost:3000 (login i hasło: admin):

docker run -d -p 3000:3000 --name grafana grafana/grafana

W realnym monitoringu Grafana rzadko działa sama. Zwykle idzie w parze z Prometheusem i eksporterami. Właśnie taki komplet postawiliśmy na potrzeby tego artykułu, opisany w jednym pliku docker-compose.yml:

services:
  prometheus:
    image: prom/prometheus:latest
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml:ro
    ports: ["9090:9090"]

  node-exporter:
    image: prom/node-exporter:latest
    ports: ["9100:9100"]

  grafana:
    image: grafana/grafana:latest
    ports: ["3000:3000"]

Jeśli nie chcesz niczego instalować, jest jeszcze Grafana Cloud, czyli hostowana wersja w chmurze z darmowym planem na start (zakładasz konto na grafana.com/products/cloud). A jak z kosztami? W skrócie:

  • Grafana open source jest w pełni darmowa, także do zastosowań komercyjnych. Uruchamiasz ją na własnym serwerze bez opłat.
  • Grafana Cloud ma darmowy plan dla małych projektów, a większe plany rozliczane są za ilość danych.
  • Grafana Enterprise to płatna wersja z dodatkowymi funkcjami i wsparciem, kierowana do dużych organizacji.

Bezpieczeństwo, użytkownicy i uprawnienia

W firmie Grafany zwykle używa wiele osób, więc od początku warto zadbać o dostęp. Grafana ma wbudowane konta użytkowników i trzy podstawowe role: Viewer (tylko podgląd), Editor (tworzenie i edycja dashboardów) oraz Admin (pełna kontrola). Użytkowników można grupować w zespoły i przydzielać im dostęp do konkretnych folderów z dashboardami. Da się też podłączyć logowanie firmowe, na przykład przez Google, GitHub czy LDAP, żeby nie zakładać osobnych kont. To ważne, bo dashboardy często pokazują wrażliwe dane o infrastrukturze.

Dobre praktyki dla początkujących

  • Zacznij od gotowych dashboardów. Zaimportuj Node Exporter Full (numer 1860), zobacz, jak jest zbudowany, i ucz się na jego panelach.
  • Nazywaj panele po ludzku. "Zużycie CPU" mówi więcej niż surowa nazwa metryki. Dashboard ma być czytelny także dla kogoś, kto widzi go pierwszy raz.
  • Używaj zmiennych. Dzięki nim jeden dashboard obsłuży wiele serwerów, wybieranych z listy rozwijanej u góry.
  • Ustaw progi i kolory. Zielony, żółty i czerwony sprawiają, że problem widać, zanim zdążysz przeczytać liczbę.
  • Trzymaj konfigurację jako kod. Źródła danych i dashboardy da się zapisać w plikach (provisioning) i wersjonować w repozytorium, tak jak resztę infrastruktury.

Najczęstsze problemy i jak je rozwiązać

  • Panel pokazuje "No data". Najczęściej źródło danych nie ma jeszcze metryk albo zapytanie dotyczy nazwy, która nie istnieje. Sprawdź w Explore, czy metryka w ogóle jest zbierana.
  • Błąd "Bad Gateway" przy teście źródła. Grafana nie widzi adresu źródła. Upewnij się, że podałeś poprawny adres i port oraz że oba kontenery są w tej samej sieci.
  • Wykresy przesunięte w czasie. To zwykle kwestia strefy czasowej. Ustaw ją w opcjach dashboardu lub w profilu użytkownika.
  • Pusty wykres mimo danych. Sprawdź zakres czasu u góry. Bardzo często okazuje się, że po prostu patrzymy na złe minuty.

Słownik pojęć Grafany

Pojęcie Co oznacza
Źródło danychSystem, z którego Grafana pobiera dane (np. Prometheus, baza SQL, Loki).
PanelPojedynczy kafelek z wykresem, licznikiem lub tabelą.
DashboardStrona z zestawem paneli opisujących jeden temat.
MetrykaLiczbowy pomiar zapisywany w czasie, na przykład zużycie CPU.
PromQLJęzyk zapytań Prometheusa, którym mówimy, co narysować.
EksporterProgram udostępniający metryki systemu pod adresem /metrics.
Próg (threshold)Wartość graniczna, po której panel zmienia kolor (zielony, żółty, czerwony).
AlertReguła, która wysyła powiadomienie po spełnieniu warunku.
ObservabilityObserwowalność: metryki, logi i ślady razem dają pełny obraz systemu.

Podsumowanie

Grafana to darmowe, otwartoźródłowe narzędzie, które zamienia rozproszone dane z serwerów, aplikacji i baz w czytelne, żyjące na bieżąco dashboardy, a do tego samo pilnuje warunków i wysyła alerty. Sama nie przechowuje danych, tylko łączy się ze źródłami takimi jak Prometheus, odpytuje je i pokazuje wyniki. W odróżnieniu od Power BI patrzy na dane na żywo, a nie na raporty historyczne, i to właśnie czyni ją królową monitoringu. Największe atuty to elastyczność (jeden dashboard łączy wiele źródeł naraz), ogromna społeczność z tysiącami gotowych dashboardów oraz to, że zaczniesz z nią za darmo w kilka minut.

Najlepszy sposób nauki to praktyka: postaw Grafanę i Prometheus przez Docker Compose, zaimportuj dashboard 1860 i spróbuj zbudować własny panel, dokładnie tak, jak pokazaliśmy w tym artykule. A jeśli chcesz przejść przez to z trenerem praktykiem i nauczyć się Grafany oraz całego monitoringu szybciej i w dobrze poukładanej kolejności, mamy dla Ciebie dwa szkolenia.

Najczęściej zadawane pytania (FAQ)

Do czego służy Grafana?

Grafana służy do monitorowania i wizualizacji danych w czasie rzeczywistym. Najczęściej pokazuje kondycję serwerów, kontenerów, aplikacji i baz danych, ale sprawdza się też w analityce biznesowej i w internecie rzeczy (IoT). Do tego pilnuje ustawionych progów i wysyła alerty, gdy coś działa nie tak.

Czy Grafana jest darmowa?

Tak. Grafana w wersji open source jest bezpłatna, także do zastosowań komercyjnych, i uruchomisz ją na własnym serwerze bez opłat. Płatne są dodatkowe usługi: hostowana Grafana Cloud (ma jednak darmowy plan) oraz Grafana Enterprise z funkcjami dla dużych firm i wsparciem.

Czy Grafana przechowuje dane?

Nie. Grafana nie jest bazą danych. Łączy się ze źródłami danych, na przykład z Prometheusem, InfluxDB, Lokim czy PostgreSQL, odpytuje je na bieżąco i rysuje wykresy. Dane fizycznie leżą w tych źródłach, a Grafana odpowiada tylko za wizualizację i alertowanie.

Czym różni się Grafana od Power BI?

Grafana służy do monitoringu i danych na żywo (metryki, szeregi czasowe), jest darmowa i uruchamiana na własnym serwerze, a jej mocną stroną są alerty. Power BI to komercyjne narzędzie Microsoftu do raportowania i analityki biznesowej, nastawione na dane historyczne i modelowanie w języku DAX. W skrócie: Grafana odpowiada na pytanie, czy system działa teraz, a Power BI, jak szła sprzedaż w kwartale.

Czym różni się Grafana od Prometheusa?

Prometheus zbiera i przechowuje metryki w bazie szeregów czasowych. Grafana ich nie zbiera, tylko pokazuje. W praktyce często pracują razem: Prometheus jest źródłem danych, a Grafana rysuje z nich dashboardy i wysyła alerty.

Czym różni się Grafana od Kibany?

Kibana jest przywiązana do ekosystemu Elastic i najlepiej sprawdza się przy logach w Elasticsearch. Grafana jest niezależna od źródła i potrafi w jednym dashboardzie połączyć dane z wielu różnych systemów naraz. Dlatego w monitoringu metryk to Grafana jest standardem.

Grafana a Zabbix, czym się różnią?

Zabbix to kompletny system monitoringu, który sam zbiera dane i sam je pokazuje. Grafana danych nie zbiera, tylko je wizualizuje. Często łączy się je razem: Zabbix zbiera metryki, a Grafana rysuje z nich ładniejsze i bardziej elastyczne dashboardy.

Jak zainstalować Grafanę?

Najszybciej przez Dockera poleceniem docker run -d -p 3000:3000 grafana/grafana. Grafana ruszy na porcie 3000, logujesz się jako admin z hasłem admin. Można ją też zainstalować z pakietu systemowego na Linuksie albo skorzystać z hostowanej Grafana Cloud bez instalacji.

Skąd wziąć gotowe dashboardy do Grafany?

Ze strony grafana.com, z katalogu dashboardów społeczności. Każdy dashboard ma numer, który wystarczy podać w opcji importu. Popularne przykłady to Node Exporter Full (numer 1860) do monitoringu serwera oraz gotowe dashboardy dla kontenerów, baz danych i Kubernetesa.

Chcesz nauczyć się Grafany od praktyka?

Poniżej dwa szkolenia JSystems. Pierwsze skupia się w całości na Grafanie, drugie to szeroki monitoring i observability z Grafaną, Prometheusem, Lokim i Zabbixem. Oba mają termin gwarantowany, czyli odbywają się na pewno.

Szkolenie Grafana - monitoring, wizualizacja danych i alerting w JSystems

Szkolenie Grafana - monitoring, wizualizacja danych i alerting ->

Szkolenie Monitoring i Observability w praktyce: Grafana, Prometheus, Loki i Zabbix w JSystems

Szkolenie Monitoring i Observability: Grafana, Prometheus, Loki i Zabbix ->

Komentarze (0)

Musisz być zalogowany by móc dodać komentarz. Zaloguj się przez Google

Brak komentarzy...