Przejdź do treści

Monitoring - podejście agent-based vs agentless

Wprowadzenie

Systemy monitoringu oferują różne podejścia do zbierania metryk. Skupię się na dwóch - opartym na agentach (agent-based) i bezagentowym (agentless). W tym artykule przeanalizuję oba podejścia, ich zalety i wady.


Agent-based: jak to działa

Monitoring oparty na agentach opiera się na prostej koncepcji: instalujemy dedykowaną aplikację (agenta) na każdym monitorowanym urządzeniu, która zbiera dane i wysyła je do centralnego serwera.

Tip

Serwer odbierający dane może składać się z wielu serwerów, które równoważą obciążenie między sobą

graph LR
    A[Agent na serwerze 1] --> C[Centralny serwer monitorujący]
    B[Agent na serwerze 2] --> C
    D[Agent na serwerze 3] --> C
    C --> E[Dashboard/Alerty]

Zalety

Kluczowe korzyści

  • Bogaty zestaw metryk - dostęp do szczegółowych danych systemowych
  • Dokładność - dane zbierane bezpośrednio u źródła
  • Mniejsze obciążenie sieci - dane mogą być wstępnie przetwarzane i agregowane
  • Bezpieczeństwo - zazwyczaj oferuje szyfrowaną komunikację
  • Działanie offline - niektóre systemy mogą buforować dane, gdy połączenie z serwerem zostanie przerwane

Wady

Wyzwania

  • Zarządzanie infrastrukturą agentów - instalacja, aktualizacje i konfiguracja na każdym urządzeniu
  • Obciążenie monitorowanego systemu - każdy agent zużywa zasoby systemowe
  • Kompatybilność - agent nie zawsze jest dostępny dla wszystkich systemów operacyjnych
  • Skalowalność - zarządzanie agentami w bardzo dużych środowiskach może być trudne

Agentless: jak to działa

Monitoring bezagentowy, jak sama nazwa wskazuje, nie wymaga instalowania dedykowanego oprogramowania na monitorowanych urządzeniach. Zamiast tego wykorzystuje istniejące protokoły i interfejsy dostępne w monitorowanych systemach.

graph LR
    C[Centralny serwer monitorujący] -- SNMP --> A[Serwer 1]
    C -- SSH --> B[Serwer 2]
    C -- API/HTTP --> D[Serwer 3]
    C --> E[Dashboard/Alerty]

Zalety

Kluczowe korzyści

  • Łatwe wdrożenie - brak potrzeby instalacji dodatkowego oprogramowania
  • Mniejszy wpływ na wydajność - nie zużywa tak wielu zasobów
  • Centralne zarządzanie - konfiguracja z poziomu serwera monitorującego
  • Uniwersalność - łatwiejsze monitorowanie heterogenicznych środowisk
  • Natychmiastowe wdrożenie - możliwość szybkiego dodawania nowych systemów do monitoringu

Wady

Wyzwania

  • Ograniczony dostęp do metryk - tylko te dostępne przez standardowe interfejsy
  • Większe obciążenie sieci - częstsze odpytywanie przez sieć
  • Wymaga dojrzałej infrastruktury - przemyślane zarządzanie portami lub kontami dostępu
  • Zależność od sieci - brak buforowania danych podczas problemów z siecią

Udostępnianie statystyk przez HTTP/JSON

W architekturach mikroserwisowych często spotykamy podejście, w którym aplikacje udostępniają swoje metryki w ustandaryzowanym formacie przez HTTP, zazwyczaj w formacie JSON.

Przykładowy format metryk JSON

{
  "application": "user-service",
  "version": "1.2.3",
  "metrics": {
"http_requests_total": 1242,
"http_request_duration_ms": {
  "mean": 15.6,
  "p95": 42.1,
  "p99": 137.4
},
"active_users": 317,
"memory_usage_mb": 128.5,
"cpu_usage_percent": 12.3
  },
  "timestamp": "2025-05-10T14:30:00Z"
}

Zalety podejścia HTTP/JSON

  • Standaryzacja - uniwersalny format rozumiany przez większość narzędzi
  • Łatwa integracja - praktycznie każdy język programowania może generować JSON
  • Elastyczność - możliwość definiowania niestandardowych metryk specyficznych dla aplikacji
  • Bezpieczeństwo - możliwość zabezpieczenia punktów końcowych standardowymi mechanizmami (TLS, autoryzacja)
  • Skalowalność - działa dobrze zarówno dla małych, jak i dużych infrastruktur

Popularne systemy monitorujące

Zabbix

Zabbix to kompleksowe rozwiązanie do monitoringu typu open-source, które oferuje zarówno monitoring oparty na agentach, jak i bezagentowy.

Tryb z agentem:

  • Dedykowany agent Zabbix zainstalowany na monitorowanych systemach
  • Bogaty zestaw metryk systemowych
  • Możliwość wykonywania niestandardowych skryptów
  • Niskie zużycie zasobów

Tryb bezagentowy:

  • Wsparcie dla SNMP, IPMI, JMX
  • Monitoring przez SSH
  • Odpytywanie usług sieciowych (HTTP, FTP, SMTP, itp.)

Zabbix w praktyce

Zabbix działa doskonale w heterogenicznych środowiskach, gdzie niektóre systemy mogą mieć zainstalowanych agentów, podczas gdy inne muszą być monitorowane bezagentowo.

Prometheus

Prometheus to system monitoringu, który zyskał ogromną popularność w środowiskach kontenerowych i Kubernetes. Działa głównie w trybie bezagentowym, ale wykorzystuje koncepcję "eksporterów".

Kluczowe cechy:

  • Model pull (serwer odpytuje źródła metryk)
  • Eksportery zamiast tradycyjnych agentów
  • Tekstowy format eksponowania metryk
  • Dobry język zapytań PromQL
  • Natywna integracja z Grafaną (dashboardy)
  • Wsparcie dla alertów i powiadomień

Przykładowy endpoint metryk Prometheusa:

# HELP http_requests_total Całkowita liczba żądań HTTP
# TYPE http_requests_total counter
http_requests_total{method="post",code="200"} 1027
http_requests_total{method="post",code="400"} 3
http_requests_total{method="get",code="200"} 9836
http_requests_total{method="get",code="404"} 12
# HELP http_request_duration_seconds Opóźnienie żądań HTTP w sekundach
# TYPE http_request_duration_seconds histogram
http_request_duration_seconds_bucket{le="0.05"} 24054
http_request_duration_seconds_bucket{le="0.1"} 33444
http_request_duration_seconds_bucket{le="0.2"} 100392
http_request_duration_seconds_bucket{le="+Inf"} 144320
http_request_duration_seconds_sum 53423
http_request_duration_seconds_count 144320

Wybór właściwego podejścia

Decyzja o wyborze monitoringu opartego na agentach lub bezagentowego powinna być podyktowana specyfiką Twojego środowiska.

Monitoring oparty na agentach działa lepiej, gdy:

  • Potrzebujesz szczegółowych metryk systemowych
  • Monitorujesz krytyczne systemy wymagające precyzyjnych pomiarów
  • Masz zasoby do zarządzania infrastrukturą agentów

Monitoring bezagentowy będzie lepszym wyborem, gdy:

  • Priorytetem jest szybkie wdrożenie i łatwość konserwacji
  • Monitorujesz dynamiczne środowisko z częstymi zmianami
  • Nie możesz instalować dodatkowego oprogramowania na monitorowanych systemach

Podejście hybrydowe

W praktyce najskuteczniejsze rozwiązania monitorujące wykorzystują podejście hybrydowe, łącząc zalety obu metod:

  • Wykorzystanie agentów dla kluczowych systemów wymagających precyzyjnego monitorowania
  • Wykorzystanie monitoringu bezagentowego do szybkiego wykrywania nowych zasobów
  • Wykorzystanie API HTTP/JSON dla mikroserwisów i nowoczesnych aplikacji
  • Łączenie danych z różnych źródeł w jeden spójny system wizualizacji

Podsumowanie

Wybór między monitoringiem opartym na agentach a bezagentowym nie jest binarny (prawda/fałsz) - systemy monitorujące oferują elastyczność w metodach zbierania danych. Kluczem do sukcesu jest znajomość specyfiki swojego środowiska IT i wybór odpowiednich narzędzi, które spełniają Twoje potrzeby.

Niezależnie od wybranego podejścia, dobrze zaprojektowany system monitoringu powinien zapewniać:

  • Kompleksowy wgląd w infrastrukturę i aplikacje
  • Wykrywanie problemów, zanim wpłyną na użytkowników
  • Dane historyczne do analizy trendów i planowania pojemności
  • Skalowalność wraz z rozwojem infrastruktury

Wybierając rozwiązanie monitorujące, warto wziąć pod uwagę zarówno bieżące potrzeby, jak i przyszłe kierunki rozwoju infrastruktury IT.