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
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.