Rola Grafany w obszarze SysAdmin, DevOps i Security

Monitoring na topie

Na całe szczęście, nadszedł moment taki, że nie trzeba już nikogo przekonywać co do sensowności wdrażania Monitoringu i Observability IT. Narzędzi do monitoringu jest cała masa i jak zawsze, są lepsze i gorsze. Wszystko zależy od tego do czego finalnie mają być użyte. Jest przecież Zabbix, jest Graphite, InfluxDB, Kibana i Grafana. Nie będziemy zajmować się porównywaniem teraz, rzecz jasna. Chodzi o to, że Grafana Labs jako firma poszła dużo dalej i przygotowała potężny zestaw narzędzi, które pozwalają dzisiaj na stworzenie systemu do monitoringu i observability właściwie wszystkiego.

Co jeszcze ważne to systemy te są ze sobą zintegrowane w działaniu jak i wspólnej konfiguracji. Zastanawiając się zatem co wybrać do logów, co do snmp, co na przykład do OpenTelemetry, to odpowiedź może być jedna. Grafana Labs. Na czele tej grupy stoi dumnie Grafana, która może te wszystkie systemy odpytać i wyświetlić dane w dziesiątkach możliwych sposobów. Rzecz jasna, jeśli zdecydujemy się na inne rozwiązanie jak Zabbix, lub zestaw rozwiązań od różnych producentów jak InfluxDB, Wazuh, to nie ma problemu.

Grafana jest tak elastyczna i poprzez dodatkowe pluginy, ostatnio natywnie instalowane z Grafaną, integralna i łatwa w integracjach, że ciężko znaleźć drugie takie narzędzie. Aktualnie mamy wersję 10.3 i jest bardzo dużo nowych i ciekawych funkcjonalności, których mogą użytkownicy starszych wersji nie znać. Opisem czym jest Grafana zajmowaliśmy się w poprzednich artykułach na tym blogu.

Dlatego nie chcę się powtarzać, ale i też zachwalać czy przekonywać kogoś do użycia Grafany i Grafana Labs w swoich projektach. W kolejnym paragrafie jednak i od niego, postaram się przybliżyć i opisać najważniejsze obecnie funkcje Grafany i na niej się głównie skupimy, ale i pokrewnych systemów, które to moim zdaniem czynią ją pionierem wśród aktualnych systemów tego typu.

 

Sprawdź, czego nauczysz się dzięki kursowi Grafany!

Udostępniamy darmowo ponad godzinny materiał z kursu. Przekonaj się, że jest idealny dla Ciebie!

Chcesz wziąć udział w kursie? Kliknij w link i obejrzyj co Cię czeka: https://asdevops.pl/demo-grafana/

 

 

 

 

Grafana rośnie w siłę:

Grafana rośnie w siłę, co pozwala nam na coraz więcej. Na co? To może po kolei najważniejsze punkty:

a) Integracje

Dzięki Data Source i dostępnym pluginom możemy z poziomu Grafany odpytać za pomocą różnych metod praktycznie każdy system, aplikację czy protokół. Od naszego data source, czyli dosłownie źródła danych, zależy wygląd naszych zapytań.

Ale nie tylko odpytać. Sama instalacja pozwala na użycie jako magazynu danych do Grafany na przykład MySQL czy PostgreSQL.

b) Grafana Agent

W największym skrócie. Zamiast instalować zewnętrzne exportery i agenty metryk, lub agenty parsowania logów jak Promtail, możemy skorzystać z jednego bardzo elastycznego i skalowalnego narzędzia, czyli Grafana Agent, i mieć właściwie to wszystko za darmo.

c) Grafana Cloud

Grafana Cloud oferuje hostowaną wersję aplikacji Grafana, która jest dostępna jako usługa chmurowa. Dzięki temu użytkownicy mogą korzystać z funkcjonalności Grafany bez konieczności instalacji i konfiguracji własnej infrastruktury.

d) Docker i Kubernetes

Grafana posiada kilka opcji wykorzystania i instalacji w chmurze. Mamy gotowe już obrazy dockera, operatory Kubernetes czekające tylko na wykorzystanie, przygotowane helm charty. Właściwie jedną komendą możemy postawić pełną instancję Grafany w chmurze.

e) Grafana Loki

Nie tylko metryki są ważne przy monitorowaniu systemów. Logi również pełnią kluczową rolę przy sprawdzaniu stanu środowiska, a Grafana Loki to potężny kombajn od Grafana Labs pozwalający na zbieranie i transformację logów z praktycznie każdego typu środowisk. Gdy już mamy logi, dedykowany język LogQL pozwoli na stworzenie odpowiedniego typu zapytań.

f) Grafana wysoka dostępność

Istnieją narzędzia i mechanizmy do zapewnienia wysokiej dostępności Grafany, takie jak replikacja instancji, równoważenie obciążenia, monitorowanie stanu aplikacji itp. Ważne jest również odpowiednie skonfigurowanie bazy danych oraz innych zasobów, które mogą być używane przez Grafanę, aby zapewnić spójność danych i niezawodność działania.

g) Nowoczesne panele i wizualizacje

Z każdą nową wersją Grafana udostępnia nowe typy paneli i wizualizacji lub rozwija aktualne o nowe funkcje i rozwiązania, lub naprawia błędy.

Panele i wizualizacje

Grafana stale rozwija się i wprowadza nowe, interesujące typy paneli oraz rozwiązania w dziedzinie wizualizacji danych. Te nowe typy paneli i wizualizacji dostępne w Grafanie pozwalają użytkownikom na jeszcze bardziej zaawansowane analizy i prezentację danych, dostosowane do ich potrzeb i preferencji.

Dzięki nim możliwe jest tworzenie bardziej interaktywnych i efektywnych dashboardów, które pomagają w analizie danych i podejmowaniu decyzji.

Dodatkowo istnieje cała masa komercyjnych projektów tworzących nowe pluginy i typy wizualizacji. Możemy pracować z różnymi typami danych na przykład pdf czy docx, ale co uwaga bardzo ciekawe, w Grafanie możemy bezpośrednio wyświetlać obraz z kamer CCTV!:

Mamy na przykład również panel typu geomap gdzie w czasie rzeczywistym praktycznie podglądać możemy to, co dzieje się na mapie świata czy regionu i aktywnie sprawdzać interesujące nas dane.

Kolejnym interesującym panelem są Canvas. Możemy tworzyć animacje obiektów i nadawać im ruch w zależności od danych wejściowych na przykład danych o przepływie płynów czy ruchu powietrza.

Na przykładzie poniżej ciekawa wizualizacja działania lokalnej elektrowni wiatrowej.

Grafana w chmurach

Grafana kojarzyć się może przede wszystkim z rozwiązaniami on-premise, czyli Linux, Windows itp.
Jednakże potrzeba monitorowania logów i metryk rośnie również, a dziś może przede wszystkim, na środowiskach chmurowych.

Grafanę uruchomimy bez problemu w kubernetes czy w kontenerze Docker. Community Grafany jak i sam Grafana Labs przygotowało zestaw gotowych już rozwiązań, które śmiało możesz wykorzystać. Grafana posiada własny operator, CRD (Custom Resource Definition), gotowe obrazy dockerowe, przygotowane bazowe helm charty. Bardzo ciekawą opcją są operatory tworzące pełną architekturę monitoringu opartą o Prometheus, Node Exporter i Grafana i wiele innych. A czasem również Lokim. Dodatkowo bez większego wysiłku możesz wdrożyć instancję agentów Prometheus czy Grafany na każdym węźle klastra kubernetes jako DeamonSety na przykład.

Na oficjalnej stronie dokumentacji Grafana Labs znajdziesz opis oraz dalsze odnośniki do opisu operatora:

https://grafana.com/docs/grafana-cloud/developer-resources/infrastructure-as-code/grafana-operator/

a na repozytorium artifacthub.io znajdziesz wszystkie produkty produktu Grafana dostępne do instalacji i tylko czekające na użycie:

https://grafana.com/docs/grafana-cloud/developer-resources/infrastructure-as-code/grafana-operator/

Najpopularniejsze użycia Grafany w chmurach obejmują monitorowanie infrastruktury, aplikacji oraz usług, analizę danych oraz wizualizację metryk. Jest ona często wykorzystywana przez firmy na całym świecie, takie jak Uber, Twitter czy PayPal, do monitorowania i analizy swoich systemów w chmurach.

Zalety takiego podejścia (instalacja na k8s lub chmurze) są oczywiste w porównaniu do instalacji na Linux czy Windows. Dodatkowo Grafana wspiera takie rozwiązania podczas tworzenia nowych funkcjonalności jak automaty do wykrywania konfiguracji, specjalne konfiguratory czy managery które zarządzają klastrem, możliwości skalowania i szybkiej integracji z innymi narzędziami. Kwestie zabezpieczenia czy optymalizacji i wydajności Grafany w chmurach są również nowocześniejsze i bardziej rozwijane jak na on-premise.

A czym jest Grafana Cloud?

Grafana Cloud jest nowym rozwiązaniem i pomysłem od Grafana Labs (nowym w sensie od kilku lat, a nie tygodni) i stanowi alternatywę do instancji Grafany instalowanych i zarządzanych osobiście.

Grafana Cloud oferuje dwie główne wersje: darmową i płatną. Oto różnice między nimi oraz szczegóły dotyczące korzystania z każdej z nich:

Wersja Darmowa:

Dostępne Metryki: W darmowej wersji Grafana Cloud użytkownicy mają dostęp do 10 000 serii metryk na jeden kontener oraz 50 GB dziennego transferu danych.

Funkcje: Użytkownicy mają dostęp do podstawowych funkcji monitorowania, wizualizacji i analizy danych, w tym tworzenia dashboardów, konfiguracji alarmów oraz integracji z niektórymi źródłami danych.

Konta: Każdy użytkownik może założyć jedno darmowe konto, które umożliwia dostęp do podstawowych funkcji Grafana Cloud.

Wersja Płatna:

Dostępne Metryki: W płatnej wersji Grafana Cloud użytkownicy mają dostęp do większej liczby metryk, w zależności od wybranego planu. Możliwe jest również zwiększenie limitów serii metryk i transferu danych w ramach danego planu.

Rozszerzone Funkcje: Wersja płatna oferuje rozszerzone funkcje monitorowania, wizualizacji i analizy danych, w tym zaawansowane narzędzia analizy danych, wsparcie techniczne oraz integracje z szerszym spektrum źródeł danych i usług.

Konta: W ramach płatnej wersji Grafana Cloud istnieje możliwość założenia wielu kont, w zależności od wybranego planu.

Aby założyć konto w Grafana Cloud, należy przejść na stronę internetową Grafana Cloud i wybrać opcję rejestracji. Następnie należy podać niezbędne dane osobowe oraz wybrać plan, który najlepiej odpowiada potrzebom użytkownika.

Po założeniu konta użytkownik może zalogować się do panelu administracyjnego Grafana Cloud, gdzie będzie miał dostęp do wszystkich funkcji i narzędzi dostępnych w ramach wybranego planu. Może tworzyć dashboardy, konfigurować alarmy, analizować dane oraz korzystać z innych funkcji oferowanych przez Grafana Cloud.

Grafana ma swoich agentów

Grafana Agent to otwarty narzędzie do zbierania telemetrii, które zostało stworzone w celu przesyłania metryk, logów oraz danych śledzenia do ekosystemu Grafana. Stanowi istotny element filozofii „big tent” Grafany, umożliwiając wizualizację oraz korelację różnych rodzajów danych na panelach Grafany. Grafana Agent oferuje różne tryby konfiguracji, takie jak tryb statyczny oraz tryb Flow, co ułatwia elastyczne zarządzanie danymi telemetrii. Można go zainstalować na różnych platformach, w tym macOS, Windows i innych.

Koncepcja Grafana Agent miała na celu dostarczenie lżejszej alternatywy dla Prometheusa lub Lokiego, szczególnie skoncentrowanej na Lokim. Grafana Agent działa w dwóch głównych trybach, przede wszystkim na środowiskach serwerowych, nie cloudowych. Te tryby to:

Tryb Statyczny (Static Mode)

Tryb Statyczny w Grafana Agent to oryginalny tryb działania, który jest bardziej dojrzały i stabilny. W tym trybie agent działa jako zbieracz telemetrii, który gromadzi metryki z Prometheus, logi z Grafana Promtail oraz dane śledzenia z OpenTelemetry Collector. Konfiguracja trybu Statycznego odbywa się za pomocą pliku YAML.

Tryb Przepływu (Flow Mode)

Z kolei Tryb Przepływu został wprowadzony jako nowa wersja Grafana Agent, koncentrująca się na neutralności dostawcy, łatwości użycia, lepszej możliwości debugowania oraz zdolności do dostosowania do potrzeb zaawansowanych użytkowników poprzez przyjęcie modelu konfiguracji jako kodu. Tryb Przepływu oferuje pełne wsparcie dla OpenTelemetry, w tym zbieranie metryk, logów oraz danych śledzenia. Dodatkowo, obsługuje również zasoby PrometheusRule z projektu Prometheus.

Różnice

Różnice między Trybem Statycznym a Trybem Przepływu obejmują różne metody konfiguracji, obsługiwane funkcje oraz stopień zaawansowania. Tryb Statyczny jest bardziej tradycyjny i sprawdzony, podczas gdy Tryb Przepływu oferuje nowoczesne funkcje oraz bardziej elastyczną konfigurację.

Zapewne niedługo Tryb Statyczny zostanie wycofany i nie będzie już rozwijany. Dlatego, moim zdaniem, warto skupić się na Trybie Przepływu przy nowych wdrożeniach. Główną różnicą jest to, że Tryb Statyczny wspiera nowy standard, coraz bardziej promowany, czyli OpenTelemetry, zarówno w metrykach, logach, jak i śladach. Statyczny Tryb obsługuje jedynie ślady. Klastrowanie jest również możliwe tylko w Trybie Przepływu, podobnie jak korzystanie z reguł Prometheusowych.

Loki agregatorem logów

Grafana Loki to otwarte narzędzie do zbierania, przetwarzania i wizualizacji dzienników (logów) systemowych. Jest zaprojektowane z myślą o skalowalności, wydajności i łatwości użycia, umożliwiając organizacjom skuteczne zarządzanie ogromnymi ilościami danych dzienników generowanych przez aplikacje i systemy. Swoją strukturą i sposobem zapytań przypomina Prometheusa i można powiedzieć, że jest nim wzorowany.

Grafana Loki bazuje na koncepcji „logów jako strumienia”, co oznacza, że nie przechowuje dzienników w tradycyjny sposób w bazie danych, ale traktuje je jako strumień zdarzeń. Dzięki temu podejście Loki jest bardziej efektywne i skalowalne, zwłaszcza gdy mamy do czynienia z dużą ilością danych logów.

Zazwyczaj architektura Lokiego składa się z 3 modułów:

Agent: Jest to client na przykład Promtail lub agent np. Grafana Agent. Jego zadaniem jest pobranie logów z aplikacji lub serwera, dodanie odpowiednich labelek i przerobienie danych na strumienie danych i wysłanie poprzez API.

Loki: Jest głównym serwerem, który odbiera strumień logów, zapisuje je i umożliwia odpowienie zapytania aby pobierać eventy w wybrany sposób.

Grafana lub LogCLI: Czyli interfejs do wizualizacji lub pozyskania logów w wybranej postaci. Dostępne jest również API Lokiego.

Grafana i Prometheus w służbie monitorowania

Instalacja Grafany z Prometheusem ma wiele korzyści, które przyczyniają się do lepszego monitorowania systemów i aplikacji. Oto najważniejsze informacje, zalety i nowe funkcjonalności związane z tą integracją:

Wizualizacja i Monitorowanie:

Grafana oferuje zaawansowane narzędzia do wizualizacji i monitorowania danych, co pozwala na tworzenie interaktywnych dashboardów prezentujących metryki w czytelny sposób. Prometeusz natomiast zbiera metryki zebranych przez Prometheusa i prezentuje je w Grafanie, umożliwiając administratorom łatwe śledzenie i analizowanie stanu infrastruktury.

Alertowanie i Powiadomienia:

Integracja Grafany z Prometheusem umożliwia definiowanie alertów na podstawie danych zebranych przez Prometheusa. Można konfigurować reguły alarmowania, które wyzwalają powiadomienia w przypadku przekroczenia określonych progów, co pozwala administratorom szybko reagować na ewentualne problemy.

Dynamiczne Zapytania:

Grafana oferuje możliwość dynamicznego tworzenia zapytań do bazy danych Prometheusa za pomocą języka zapytań PromQL. Dzięki temu administratorzy mogą dowolnie analizować i eksplorować zebrane metryki, co umożliwia szybkie diagnozowanie problemów i podejmowanie odpowiednich działań.

Elastyczność Konfiguracji:

Zarówno Grafana, jak i Prometheus, oferują elastyczne mechanizmy konfiguracji, co pozwala dostosować środowisko monitoringu do indywidualnych potrzeb i specyfiki środowiska. Można definiować różne typy wykresów i dashboardów, konfigurować reguły alarmowania oraz dostosowywać powiadomienia do konkretnych przypadków użycia.

Wsparcie dla Innych Narzędzi:

Integracja Grafany z Prometheusem pozwala również na wykorzystanie innych narzędzi i rozwiązań do monitorowania i zarządzania infrastrukturą IT. Na przykład, Grafana może być zintegrowana z innymi narzędziami do monitorowania, takimi jak Loki, czy też z systemami zarządzania incydentami, takimi jak PagerDuty.

Alarmowanie w Grafanie

Alarmowanie w Grafanie pozwala definiować złożone reguły alarmowania, które wyzwalają alarmy w przypadku przekroczenia określonych progów lub warunków. Można zdefiniować alarmy dla różnych metryk, takich jak obciążenie procesora, zużycie pamięci, ilość żądań HTTP itp. Grafana umożliwia również definiowanie alertów na podstawie warunków logicznych oraz wykorzystywanie danych historycznych do analizy trendów.

Alertmanager jest narzędziem odpowiedzialnym za zarządzanie alertami wygenerowanymi przez Grafanę. Alertmanager może grupować alerty, filtrować powiadomienia oraz przekierowywać je do różnych kanałów komunikacyjnych, takich jak e-mail, Slack, PagerDuty, czy też systemy ticketingowe. Dzięki temu możliwe jest zautomatyzowanie procesu reakcji na alarmy i szybkie powiadamianie odpowiednich osób lub zespołów w przypadku wystąpienia problemów.

Co ciekawe możemy użyć wewnętrznego Alertmanager Grafany jak i zewnętrznego na przykład Prometheus Alert Manager. Zatem tworząc alarmy w Prometheus możesz używać ich w Grafanie i nimi pośrednio zarządzać i przeglądać, ale i też możesz alarmy zdefiniowane jedynie w Grafanie przekazać do zewnętrznego Alert Managera. Pełna dowolność a i dodatkowo możliwość płynnego konfigurowania które elementy alarmowania będą zarządzanie przez które narzędzie.

Wnioskując, Alarmowanie i Alertmanager w Grafanie są kluczowymi narzędziami, które umożliwiają automatyzację reakcji na zdarzenia i zapewniają szybkie powiadamianie w przypadku wystąpienia problemów. Ich stosowanie pozwala na zwiększenie niezawodności i efektywności monitorowania systemów oraz infrastruktury IT.

Grafana Server HA

W dzisiejszym świecie przetwarzania danych i monitorowania systemów, niezawodność i wysoka dostępność są kluczowymi cechami, którymi powinny charakteryzować się infrastruktury IT. W takim kontekście tworzenie klastrów o wysokiej dostępności (HA – High Availability) staje się nieodzownym elementem strategii działania dla wielu firm i organizacji. Jeśli Twój projekt wymaga zastosowania rozwiązań HA, czyli wysokiej dostępności to Grafana daje taką możliwość. To jest możesz zainstalować i uruchomić serwer Grafany w klastrze. Domyślnie wszystkie niezbędne dane Grafana przetrzymuje w zewnętrznym systemie bazodanowym sqllite.

Najważniejszą i niezbędną rzeczą do uruchomienia klastra jest instalacja bazy danych MySQL lub PostgreSQL na przykład, również najlepiej w HA. Grafanę następnie trzeba również zainstalować lub zmigrować na nowej bazie danych, a nie na domyślnym sqlite.

Instalując Grafana w klastrze HA, zapewniamy, że aplikacja ta będzie dostępna nawet w przypadku awarii jednego z węzłów czy usług. Wysoka dostępność Grafany oznacza, że użytkownicy mogą stale korzystać z jej funkcji monitorowania i analizy danych, co jest kluczowe dla utrzymania sprawności systemów i szybkiego reagowania na ewentualne problemy.

Poniżej zaczerpnięty poglądowy schemat Grafana Server HA.

Ważne aby tutaj dodać jest to, że Grafana w klastrze wspiera także HA dla samego modułu alertowania. Zatem jeśli jedna instancja Grafany padnie, to nie znaczy, że stracimy możliwość otrzymywania alarmów.

Grafana, jako aplikacja, nie oferuje wbudowanych mechanizmów do tworzenia klastrów wysokiej dostępności (HA). Jednakże, można utworzyć klastry Grafana w oparciu o inne narzędzia i technologie, które zapewnią wysoką dostępność tej aplikacji. Oto kilka sposobów, w jaki można zainstalować i utworzyć klaster Grafana:

1. Kubernetes: Korzystając z platformy do zarządzania kontenerami, takiej jak Kubernetes, można łatwo utworzyć klaster Grafana w klastrze HA. Można skorzystać z gotowych obrazów Docker Grafana oraz odpowiednich manifestów Kubernetes do uruchomienia wielu instancji Grafana, a także skonfigurować usługi sieciowe i load balancer w celu dystrybucji ruchu między różnymi węzłami.

2. Docker Swarm: Inną opcją jest użycie Docker Swarm, który również umożliwia zarządzanie kontenerami Docker w klastrze. Można stworzyć serwisy Docker Grafana na różnych węzłach w klastrze Swarm i skonfigurować mechanizmy równoważenia obciążenia w celu zapewnienia wysokiej dostępności.

3. Ręczna Konfiguracja Klastra: Można również utworzyć klaster Grafana poprzez ręczną konfigurację wielu instancji Grafana na różnych serwerach. Następnie można skonfigurować mechanizmy równoważenia obciążenia (np. HAProxy, NGINX) przed tymi instancjami, aby dystrybuować ruch od klientów pomiędzy różne serwery Grafana.

4. Zarządzanie Kontenerami w Chmurze: Korzystając z usług chmurowych do zarządzania kontenerami, takich jak Amazon ECS, Google Kubernetes Engine (GKE) lub Azure Kubernetes Service (AKS), można również utworzyć klaster Grafana w klastrze HA. Platformy te oferują zarządzanie kontenerami na dużą skalę i zapewniają mechanizmy wysokiej dostępności.

Podsumowując

Żeby nie zanudzać skróciłem te informacje do minimum. Jednakże mam nadzieję udało mi się trochę chociaż przekonać Cię, że Grafana to nie tylko narzędzie do rysowania wykresów na ekranie, ale zaawansowany kombajn wizualizacyjny, który we współpracy z innymi systemami monitoringowymi tworzy zaawansowany potężny i niezawodny system do analizy i prezentacji danych, który dodatkowo odpowiednio zareaguje kiedy nasz system nie będzie działał poprawnie.

 

 

 

Sprawdź, czego nauczysz się dzięki kursowi Grafany!

Udostępniamy darmowo ponad godzinny materiał z kursu. Przekonaj się, że jest idealny dla Ciebie!

Chcesz wziąć udział w kursie? Kliknij w link i obejrzyj co Cię czeka: https://asdevops.pl/demo-grafana/

 
 
 

Lekcja demo kursu Grafany!

X