System monitorowania Prometheus
Wraz ze wzrostem złożoności systemów i aplikacji, monitorowanie staje się niezbędne do zapewnienia optymalnej wydajności, niezawodności i skalowalności. Prometheus, zestaw narzędzi open-source do monitorowania i ostrzegania, stał się jednym z najpopularniejszych rozwiązań do zarządzania i wizualizacji metryk z różnych systemów. Pierwotnie opracowany przez SoundCloud, Prometheus jest obecnie projektem Cloud Native Computing Foundation (CNCF) i jest szeroko stosowany w różnych branżach.
W tym artykule zbadamy kluczowe cechy Prometheus, sposób jego działania oraz kroki wymagane do skonfigurowania go do monitorowania infrastruktury i aplikacji.
Czym jest Prometheus?
Prometheus to potężny system monitorowania przeznaczony do gromadzenia, przechowywania i przeszukiwania danych szeregów czasowych, które są pomiarami lub zdarzeniami śledzonymi w czasie. Dane zebrane przez Prometheus mogą być wizualizowane, analizowane i wykorzystywane do wyzwalania alertów, pomagając zespołom być na bieżąco z kondycją i wydajnością infrastruktury.
Prometheus jest znany z kilku kluczowych funkcji:
- Model danych szeregów czasowych: Prometheus przechowuje dane jako szereg czasowy, co oznacza, że metryki są rejestrowane w odstępach czasu.
- Pull-Based Monitoring: Zamiast monitorowanych systemów przesyłających metryki do serwera, Prometheus wykorzystuje model pull-based do pobierania metryk z punktów końcowych.
- Potężny język zapytań (PromQL): Prometheus zapewnia potężny język zapytań PromQL, który pozwala użytkownikom filtrować i agregować metryki w czasie rzeczywistym.
- Alertowanie: Prometheus integruje się z Alertmanager w celu definiowania reguł i wysyłania powiadomień po spełnieniu określonych warunków.
- Wykrywanie usług: Prometheus może automatycznie wykrywać i pobierać metryki z dynamicznie zmieniających się środowisk, takich jak Kubernetes.
Jak działa Prometheus
Prometheus ma prostą, ale solidną architekturę zaprojektowaną do monitorowania danych szeregów czasowych. Oto jak to działa:
- Zbieranie metryk (Scraping): Prometheus okresowo pobiera metryki z punktów końcowych HTTP (zwanych eksporterami) udostępnianych przez aplikacje lub systemy.
- Przechowywanie danych szeregów czasowych: Po zebraniu, Prometheus przechowuje metryki w bazie danych szeregów czasowych, gdzie każdy punkt danych jest powiązany ze znacznikiem czasu i zestawem etykiet.
- Zapytania za pomocą PromQL: Użytkownicy mogą wysyłać zapytania do przechowywanych metryk za pomocą języka zapytań Prometheus, PromQL, w celu generowania wykresów, pulpitów nawigacyjnych lub alertów.
- Alerty: W oparciu o predefiniowane warunki, Prometheus może wyzwalać alerty za pomocą Alertmanager, który może wysyłać powiadomienia za pośrednictwem poczty elektronicznej, Slack, PagerDuty lub innych usług.
Prometheus obsługuje model pull-based, w którym okresowo pobiera metryki z punktów końcowych, które udostępniają metryki w formacie zrozumiałym dla Prometheus. Dzięki temu idealnie nadaje się do monitorowania systemów rozproszonych i mikrousług, w których skalowanie i dynamiczne środowiska są powszechne.
Komponenty Prometheus
Prometheus składa się z kilku podstawowych komponentów, z których każdy służy innemu celowi:
- Prometheus Server: Centralny komponent odpowiedzialny za zbieranie, przechowywanie i odpytywanie metryk. Zeskrobuje docelowe punkty końcowe i przechowuje metryki w bazie danych szeregów czasowych.
- Eksporterzy: Są to aplikacje lub usługi, które udostępniają metryki w formacie zgodnym z Prometheus. Typowe eksportery obejmują:
- Node Exporter: Zbiera metryki sprzętowe i na poziomie systemu operacyjnego.
- Blackbox Exporter: Do sondowania punktów końcowych przez HTTP, DNS, TCP itp.
- Eksportery specyficzne dla aplikacji: Wiele baz danych (takich jak PostgreSQL, MySQL) i usług ma własne eksportery.
- Alertmanager: Prometheus wykorzystuje Alertmanager do obsługi alertów. Może on kierować alerty do różnych odbiorców, takich jak Slack, e-mail lub SMS, a także zarządzać regułami wyciszania i blokowania.
- PromQL (Prometheus Query Language): Potężny język zapytań używany do pobierania i manipulowania danymi szeregów czasowych.
- Pushgateway: Komponent używany do efemerycznych lub krótkotrwałych zadań, które nie mogą ujawniać metryk poprzez bezpośrednie skrobanie (np. zadania wsadowe). Pushgateway umożliwia tym zadaniom przesyłanie metryk do Prometheus.
- Grafana: Grafana, choć nie jest częścią Prometheus, jest popularnym narzędziem open-source służącym do wizualizacji danych Prometheus i tworzenia interaktywnych pulpitów nawigacyjnych.
Konfiguracja Prometheus krok po kroku
Oto jak skonfigurować Prometheus na serwerze Linux i rozpocząć monitorowanie metryk systemowych:
Krok 1: Zainstaluj Prometheus
- Pobierz Prometheus: Odwiedź stronę pobierania Prometheus, aby pobrać najnowszą wersję Prometheus. Uruchom następujące polecenia, aby pobrać i rozpakować Prometheus:wget https://github.com/prometheus/prometheus/releases/download/v2.32.1/prometheus-2.32.1.linux-amd64.tar.gz tar -xvf prometheus-2.32.1.linux-amd64.tar.gz cd prometheus-2.32.1.linux-amd64
- Uruchom Prometheus: Uruchom następujące polecenie, aby uruchomić Prometheus:./prometheus –config.file=prometheus.yml
Domyślnie Prometheus działa na porcie 9090, a dostęp do jego interfejsu internetowego można uzyskać, przechodząc do http://localhost:9090 w przeglądarce.
Krok 2: Konfiguracja programu Prometheus
Główna konfiguracja Prometheusa odbywa się za pośrednictwem pliku prometheus.yml. Plik ten informuje Prometheusa, które cele (eksportery) mają być skrobane i jak często.
Oto podstawowa konfiguracja prometheus.yml:
W razie potrzeby można dodać więcej celów lub eksporterów, a Prometheus automatycznie rozpocznie ich skrobanie.
Krok 3: Instalacja eksportera węzłów (dla metryk systemowych)
Aby monitorować metryki systemowe, takie jak użycie procesora, pamięci, dysku i sieci, można zainstalować Node Exporter.
- Pobierz Node Exporter:wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz tar -xvf node_exporter-1.3.1.linux-amd64.tar.gz cd node_exporter-1.3.1.linux-amd64
- Uruchomienie Node Exporter: Uruchom następujące polecenie, aby uruchomić Node Exporter:./node_exporter
Domyślnie Node Exporter działa na porcie 9100 i udostępnia metryki, takie jak użycie procesora, statystyki pamięci, wejścia/wyjścia dysku i metryki sieciowe.
- Konfiguracja Prometheus do skrobania Node Exporter: Dodaj następujące zadanie do pliku konfiguracyjnego prometheus.yml:scrape_configs: – job_name: ‘node_exporter’ static_configs: – targets: [‘localhost:9100’]
- Uruchom ponownie program Prometheus: Po wprowadzeniu zmian w pliku konfiguracyjnym uruchom ponownie Prometheus, aby rozpocząć skrobanie metryk z Node Exporter.
Krok 4: Wizualizacja metryk za pomocą Grafana
Grafana jest doskonałym narzędziem do wizualizacji metryk Prometheus. Płynnie integruje się z Prometheus i umożliwia tworzenie interaktywnych pulpitów nawigacyjnych.
- Zainstaluj Grafana: W systemie Linux można zainstalować Grafana, postępując zgodnie z instrukcjami na stronie internetowej Grafana.
- Skonfiguruj Prometheus jako źródło danych: Po zainstalowaniu Grafana:
- Zaloguj się do Grafany (http://localhost:3000).
- Przejdź do Configuration > Data Sources i dodaj Prometheus jako źródło danych (http://localhost:9090).
- Tworzenie pulpitów nawigacyjnych: Teraz możesz tworzyć własne niestandardowe pulpity nawigacyjne lub importować gotowe pulpity nawigacyjne z Grafana Marketplace, aby wizualizować metryki, takie jak użycie procesora, wykorzystanie pamięci, wydajność dysku i inne.
Krok 5: Konfigurowanie alertów
Prometheus umożliwia konfigurowanie alertów w oparciu o określone warunki, takie jak wysokie użycie procesora, mało miejsca na dysku lub awarie aplikacji.
- Definiowanie reguł alertów: Alerty są definiowane w oddzielnym pliku rules.yml. Oto przykładowa reguła alertu, która uruchamia się, gdy użycie procesora jest wyższe niż 80%:groups: – name: example_alerts rules: – alert: HighCPUsage expr: 100 – (avg by(instance) (rate(node_cpu_seconds_total{mode=”idle”}[5m])) * 100) > 80 for: 5m labels: severity: warning annotations: summary: “High CPU usage detected on {{ $labels.instance }}” description: “Użycie procesora przekracza 80% przez ponad 5 minut”
- Konfigurowanie usługi Alertmanager: Zainstaluj i skonfiguruj Alertmanager, aby wysyłać powiadomienia za pośrednictwem poczty e-mail, Slack lub innych kanałów po wyzwoleniu alertu.
Przypadki użycia dla Prometheus
Prometheus jest używany w szerokim zakresie scenariuszy do monitorowania różnych typów systemów, w tym:
- Monitorowanie infrastruktury: Zbieranie metryk z serwerów, baz danych i urządzeń sieciowych w celu zapewnienia sprawnego działania infrastruktury.
- Monitorowanie aplikacji: Śledzenie wskaźników wydajności, takich jak opóźnienia, częstotliwość żądań, wskaźniki błędów i zużycie zasobów przez aplikacje, zwłaszcza w architekturach mikrousług.
- Monitorowanie Kubernetes: Prometheus integruje się natywnie z Kubernetes i może automatycznie wykrywać i skrobać metryki z kapsuł i usług w klastrze Kubernetes.
- Niestandardowe metryki: Prometheus umożliwia instrumentowanie własnych aplikacji w celu ujawnienia niestandardowych metryk, zapewniając dogłębny wgląd w zachowania specyficzne dla aplikacji.
Podsumowanie
Prometheus to potężne i elastyczne rozwiązanie do monitorowania, które umożliwia gromadzenie w czasie rzeczywistym, wysyłanie zapytań i alertów na podstawie danych szeregów czasowych. Niezależnie od tego, czy monitorujesz metryki na poziomie systemu, czy wydajność aplikacji w architekturze mikrousług, Prometheus jest cennym narzędziem zapewniającym zdrowie i stabilność infrastruktury.
Postępując zgodnie z krokami opisanymi w tym artykule, można rozpocząć pracę z Prometheus, zbierać metryki z systemów i wizualizować je za pomocą Grafany. Z biegiem czasu Prometheus może pomóc w uzyskaniu wglądu w trendy wydajności, wykrywaniu anomalii i szybkim reagowaniu na incydenty, poprawiając zarówno czas pracy systemu, jak i jego niezawodność.