Metryki z Prometheus i Grafana
Skonfiguruj Prometheus do zbierania metryk klastra i aplikacji, a następnie wizualizuj je za pomocą Grafana.
Metryki z Prometheus i Grafana to bezpłatna lekcja DevOps Bootcamp na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej DevOps Bootcamp, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs DevOps Bootcamp zawiera 4 lekcji w sumie.
Potęga metryk
Metryki to pomiary liczbowe opisujące stan i wydajność aplikacji oraz infrastruktury. Można traktować je jak oznaki życiowe oprogramowania!
Dostarczają cennych informacji na temat:
- Wydajności: Jak szybko odpowiada aplikacja?
- Wykorzystania zasobów: Czy na serwerze zaczyna brakować pamięci?
- Dostępności: Czy usługa działa i jest dostępna dla użytkowników?
Śledząc metryki, możesz rozumieć trendy, wykrywać anomalie i proaktywnie rozwiązywać problemy.
Poznaj Prometheus
Prometheus to system monitorowania o otwartym kodzie źródłowym, zaprojektowany z myślą o niezawodności i skalowalności. Jest to kluczowe narzędzie w chmurowym stosie obserwowalności.
Jego główne zadania to:
- Pobieranie: Zbieranie metryk ze skonfigurowanych celów (takich jak aplikacje).
- Przechowywanie: Zapisywanie metryk w bazie danych szeregów czasowych.
- Wykonywanie zapytań: Umożliwianie zadawania pytań dotyczących zebranych danych.
Prometheus pomaga uzyskać przejrzysty obraz tego, co dzieje się wewnątrz klastra Kubernetes.
Model „scrapowania” Prometheus
Prometheus korzysta z modelu „pull” do zbierania metryk. Zamiast wysyłać dane do Prometheus, aplikacje udostępniają je, a Prometheus aktywnie je „scrapuje”, czyli pobiera.
Ogólnie działa to następująco:
- Aplikacja udostępnia metryki pod określonym adresem HTTP (często
/metrics). - Prometheus jest skonfigurowany z listą celów (takich jak adres IP i port aplikacji).
- W regularnych odstępach Prometheus wysyła żądanie HTTP do punktu końcowego
/metricskażdego celu. - Cel odpowiada bieżącymi metrykami, które Prometheus następnie przechowuje.
Metryki: pary klucz–wartość
Prometheus przechowuje dane jako szeregi czasowe, czyli strumienie wartości opatrzonych znacznikami czasu. Każdy szereg czasowy jest jednoznacznie identyfikowany przez nazwę metryki i zestaw par klucz–wartość nazywanych etykietami.
Przykład: http_requests_total{method="GET", path="/api"}
Prometheus udostępnia podstawowe typy metryk:
- Licznik: Metryka skumulowana, która tylko rośnie (np. łączna liczba żądań).
- Wskaźnik: Wartość, która może rosnąć lub maleć (np. bieżące wykorzystanie procesora).
- Histogram/Podsumowanie: Służy do próbkowania obserwacji i zliczania ich w konfigurowalnych przedziałach (np. czasów trwania żądań).
Sprawianie, by aplikacje „mówiły” metrykami
Aby Prometheus mógł pobierać metryki, aplikacja musi udostępniać je w formacie rozumianym przez Prometheus. Zwykle odbywa się to za pośrednictwem punktu końcowego HTTP.
Wiele języków programowania ma biblioteki klienckie, które ułatwiają instrumentowanie kodu:
- Zwiększanie liczników w reakcji na zdarzenia.
- Ustawianie wskaźników dla bieżących stanów.
- Rejestrowanie czasów trwania operacji.
Przyjrzyjmy się bardzo prostemu przykładowi aplikacji udostępniającej podstawową metrykę typu licznik.
Aplikacja Python udostępniająca metryki
Oto niewielka aplikacja Flask w języku Python, która udostępnia prostą metrykę typu licznik. Symuluje zliczanie wyświetleń stron.
Uruchom ten kod, a następnie spróbuj uzyskać dostęp do /metrics w przeglądarce lub terminalu (np. po uruchomieniu przejdź do http://localhost:5000/metrics).
from flask import Flask
from prometheus_client import Counter, generate_latest
import time
app = Flask(__name__)
c = Counter('my_app_requests_total', 'Total requests to my app')
@app.route('/')
def hello():
c.inc() # Increment the counter
return "Hello, CoddyKit!"
@app.route('/metrics')
def metrics():
return generate_latest().decode('utf-8')
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)Prometheus w klastrze
W Kubernetesie efektywne wdrażanie Prometheus często obejmuje użycie Prometheus Operator. Operator ten pomaga zarządzać instancjami Prometheus i ich konfiguracjami.
Najważniejsze zasoby Kubernetes związane z Prometheus:
- ServiceMonitor: Informuje Prometheus, gdzie znaleźć punkty końcowe metryk (np. które Services i Pody scrapować).
- PodMonitor: Działa podobnie do ServiceMonitor, ale bezpośrednio wskazuje Pody.
Zasoby te pozwalają Prometheus automatycznie wykrywać aplikacje i pobierać z nich metryki.
Grafana: mistrz pulpitów nawigacyjnych
Podczas gdy Prometheus zbiera i przechowuje metryki, Grafana jest podstawowym narzędziem do ich wizualizacji. To internetowa aplikacja analityczna i interaktywna do wizualizacji danych o otwartym kodzie źródłowym.
Grafana umożliwia:
- Tworzenie atrakcyjnych i przejrzystych pulpitów nawigacyjnych.
- Wykonywanie zapytań do wielu źródeł danych (takich jak Prometheus).
- Konfigurowanie alertów na podstawie progów metryk.
Przekształca surowe dane metryczne w informacje, na podstawie których można podejmować działania.
Grafana i Prometheus: potężny duet
Grafana nie przechowuje samodzielnie danych metrycznych — pobiera je z zewnętrznych źródeł danych. Aby wizualizować metryki Kubernetes, skonfiguruj Prometheus jako źródło danych w Grafanie.
Etapy:
- W Grafanie dodaj nowe źródło danych.
- Wybierz „Prometheus” jako typ.
- Podaj adres URL serwera Prometheus.
- Zacznij tworzyć pulpity nawigacyjne, korzystając z języka zapytań Prometheus — PromQL!
To połączenie daje pełną kontrolę nad monitorowaniem klastra.
Sprawdź swoją wiedzę!
Czas sprawdzić, jak dobrze rozumiesz Prometheus i Grafana!
Podsumowanie: metryki i wizualizacja
Świetna praca! W tej lekcji poznano:
- Znaczenie metryk dla obserwowalności.
- Prometheus jako zaawansowany system pobierania i przechowywania metryk szeregów czasowych.
- Sposób, w jaki aplikacje udostępniają metryki do zebrania przez Prometheus.
- Grafanę służącą do tworzenia przejrzystych pulpitów nawigacyjnych i wizualizacji danych metrycznych.
Zrozumienie tych narzędzi ma kluczowe znaczenie dla utrzymania aplikacji Kubernetes w dobrym stanie i zapewnienia ich wydajnego działania. Warto dalej poznawać sposoby instrumentowania własnych aplikacji!
Często zadawane pytania
Czy lekcja „Metryki z Prometheus i Grafana” jest bezpłatna?
Tak — pełny tekst „Metryki z Prometheus i Grafana” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu DevOps Bootcamp, przejdź na CoddyKit PRO. Kurs DevOps Bootcamp zawiera 4 lekcji w sumie.
Co nauczysz się w „Metryki z Prometheus i Grafana”?
Skonfiguruj Prometheus do zbierania metryk klastra i aplikacji, a następnie wizualizuj je za pomocą Grafana. Ćwiczysz DevOps Bootcamp z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć DevOps Bootcamp?
Nie wymagamy żadnego doświadczenia. DevOps Bootcamp w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „Metryki z Prometheus i Grafana”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji DevOps Bootcamp?
Tak. Każda lekcja DevOps Bootcamp zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Logowanie za pomocą kubectl logs
- Metryki z Prometheus i Grafana
- Kontrole stanu: sondy liveness i readiness
- Śledzenie rozproszone i zdarzenia