0Pricing
DevOps Bootcamp · Lekcja

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:

  1. Aplikacja udostępnia metryki pod określonym adresem HTTP (często /metrics).
  2. Prometheus jest skonfigurowany z listą celów (takich jak adres IP i port aplikacji).
  3. W regularnych odstępach Prometheus wysyła żądanie HTTP do punktu końcowego /metrics każdego celu.
  4. 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:

  1. W Grafanie dodaj nowe źródło danych.
  2. Wybierz „Prometheus” jako typ.
  3. Podaj adres URL serwera Prometheus.
  4. 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

  1. Logowanie za pomocą kubectl logs
  2. Metryki z Prometheus i Grafana
  3. Kontrole stanu: sondy liveness i readiness
  4. Śledzenie rozproszone i zdarzenia
← Powrót do DevOps Bootcamp