Sobes.tech
Middle

Jak skonfigurować klientów do przesyłania metryk do Prometheus?

sobes.tech AI

Odpowiedź od AI

Aby przesłać metryki do Prometheus, konieczne jest użycie exporterów. Exportery to małe usługi, które otwierają punkt końcowy HTTP zawierający metryki w formacie zrozumiałym dla Prometheus.

Główne metody:

  1. Użycie oficjalnych i zewnętrznych exporterów:

    • Istnieją gotowe exporter’y dla wielu popularnych usług i systemów: node_exporter (metryki systemu operacyjnego), mysqld_exporter (metryki MySQL), kube-state-metrics (metryki Kubernetes) itd.
    • Konfiguracja polega na zainstalowaniu exportera na docelowym serwerze i wskazaniu jego adresu w konfiguracji Prometheus.
  2. Instrumentacja aplikacji:

    • Programiści mogą dodawać kod do swoich aplikacji, aby bezpośrednio wystawiały metryki.
    • Prometheus udostępnia biblioteki klienckie dla różnych języków programowania (Go, Java, Python, Ruby itd.).
    • Biblioteki te pozwalają tworzyć liczniki (counters), mierniki (gauges), histogramy (histograms) i podsumowania (summaries), a następnie otwierać punkt końcowy HTTP do zbierania danych przez Prometheus.
  3. Textfile Collector (dla node_exporter):

    • node_exporter ma kolektor textfile, który może odczytywać metryki z plików w określonym formacie.
    • Jest to przydatne dla skryptów okresowych lub zadań generujących metryki.
  4. Pushgateway:

    • Pushgateway jest używany dla krótkotrwałych lub wsadowych zadań, które nie mogą być zbierane bezpośrednio przez Prometheus (ponieważ mogą nie istnieć w momencie zbierania).
    • Aplikacja wysyła swoje metryki do Pushgateway, a Prometheus zbiera dane z Pushgateway.
# Przykład konfiguracji Prometheus (prometheus.yml)
scrape_configs:
  - job_name: 'node_exporter_servers' # Nazwa zadania zbierania
    static_configs:
      - targets: ['server1:9100', 'server2:9100'] # Lista hostów/portów, na których uruchomiony jest node_exporter

  - job_name: 'application_metrics' # Zadanie zbierania metryk aplikacji
    metrics_path: /metrics # Ścieżka, pod którą aplikacja wystawia metryki
    static_configs:
      - targets: ['application-host:8080'] # Adres aplikacji

  - job_name: 'pushgateway' # Zadanie zbierania metryk z Pushgateway
    honor_labels: true # Ważne dla poprawnego przetwarzania etykiet z Pushgateway
    static_configs:
      - targets: ['pushgateway-host:9091'] # Adres Pushgateway

Po skonfigurowaniu exporterów lub zainstrumentowaniu aplikacji, Prometheus będzie okresowo odpytywał (scraping) wskazane endpointy w celu zbierania metryk.