How to monitor your services
Czy zastanawiałeś się kiedykolwiek, w jaki sposób administratorzy monitorują usługi, za które są odpowiedzialni? Chciałbyś także dostać powiadomienie zawczasu, że kończy się miejsce na dysku? A może informację o końcu żywota dysku twardego w maszynie i mieć szansę uratować dane, zanim dysk dokona swego żywota? A może znudziło Cię otrzymywanie informacji od osób postronnych, że dana usługa właśnie nie działa, mimo że byłeś przekonany, że te ostatnie poprawki nic nie popsuły?
Do tego i wielu innych rzeczy wykorzystuje się oprogramowanie, którego zadaniem jest powtarzalne sprawdzanie wielu parametrów usługi w równych odstępach czasu. W przypadku parametrów, które nie są akceptowalne, system wysyła powiadomienie do osoby odpowiedzialnej, że dzieje się coś niedobrego. W tym wpisie poruszać będę konfigurację Zabbix. Jednak warto wiedzieć o istnieniu innych i dobraniu według własnego upodobania. Są to Nagios i jego fork Icinga2, CheckMK, UptimeKuma i pewnie kilka innych, które w tej chwili nie przychodzą mi do głowy.
Wszelkie informacje opisywane w tym artykule dotyczące sposobu instalacji oraz konfiguracji Zabbix są do znalezienia w oficjalnej dokumentacji
Instalacja
Instalacja serwera Zabbix jest niczym spacer po parku w letni poranek. Wystarczy udać się do konfiguratora instalatora zabbix i postępować zgodnie z opisanymi krokami. Na poniższym zrzucie ekranu prezentuję mój wybór.
W punkcie 2 są opisane wszystkie kroki jakie są potrzebne do wykonania instalacji, ja natomiast muszę tutaj wskazać że przed przystąpieniem do instalacji wszystkiego dobrze by było mieć już zainstalowany serwer bazodanowy, gdyż paczka zabbix-server-mysql ma mylącą nazwę - przynajmniej dla mnie - i nie zainstaluje w tym przypadku serwera a jedynie paczki związane z obsługą bazy danych przez Zabbix.
Po przejściu przez pozostałe kroki wskazane w dokumentacji powinieneś skończyć z zainstalowanym i uruchomionym serwerem Zabbix, do którego jesteś w stanie się zalogować.
Domyślne dane do logowania do świeżej instancji Zabbix są następujące: l: Admin p: zabbix
Wstęp
Na początek warto by było uporządkować sobie kilka elementów
Item
Ile razy będziesz myśleć o jakimś parametrze hosta, który chcesz monitorować czy jest to temperatura CPU, ilość zajętego miejsca na dysku, ilość interfejsów sieciowych to będziemy takie rzeczy nazywać item’ami. Item to nie jest nic innego jak odwzorowanie do danej metryki
Trigger
Trigger to wyzwalacz, który przełącza się w stan Problem w momencie, kiedy item osiągnie zadany próg, a wraca do stanu OK, gdy wartości wrócą do normy. Każdemu triggerowi przypisujemy severity, czyli wagę problemu - w Zabbix jest to skala: Not classified, Information, Warning, Average, High oraz Disaster
Template
Template, czyli szablon, to zbiór predefiniowanych item’ów, triggerów, grafów i innych elementów, które można przypisać do hosta. Dzięki temu nie musimy za każdym razem definiować tych samych rzeczy dla podobnych hostów. Wystarczy przypisać szablon i voila - mamy gotowy zestaw monitorowanych parametrów.
Pierwszy host monitorowany
Skoro już mamy działający Zabbix, czas dodać pierwszy host do monitorowania. Ja zwykle zaczynam od samej maszyny, na której stoi Zabbix. Przejdźmy przez to razem:
Upewnij się, że masz zainstalowanego agenta Zabbix na maszynie, którą chcesz monitorować:
apt install zabbix-agentEdytuj plik konfiguracyjny agenta:
nano /etc/zabbix/zabbix_agentd.confZnajdź linijkę z
Server=i ustaw tam IP twojego serwera Zabbix, na przykład:Server=192.168.1.100Zrestartuj agenta:
systemctl restart zabbix-agentW interfejsie webowym Zabbix przejdź do Data collection -> Hosts -> Create host
- Wpisz nazwę hosta (np. “Local Server”)
- Dodaj grupy (np. “Linux servers”)
- Ustaw IP lub nazwę DNS w polu “Agent interface”
- Przypisz szablon “Linux by Zabbix agent”
- Kliknij “Add”
I to wszystko! Po kilku minutach Zabbix zacznie zbierać dane z twojego pierwszego monitorowanego hosta. Możesz przejść do sekcji “Monitoring -> Latest data”, aby zobaczyć napływające dane.
Pierwsza automatyzacja
Zabbix nie musi być tylko biernym obserwatorem - może także działać. Pokażę jak skonfigurować prostą automatyzację, która będzie czyścić stare logi, kiedy dysk zacznie się zapełniać:
Utwórz nowy skrypt w katalogu
/usr/lib/zabbix/alertscripts/:nano /usr/lib/zabbix/alertscripts/cleanup_logs.shDodaj zawartość:
#!/bin/bash # Skrypt do czyszczenia starych logów find /var/log -name "*.log.*" -type f -mtime +7 -delete exit 0Nadaj uprawnienia wykonywania:
chmod +x /usr/lib/zabbix/alertscripts/cleanup_logs.shW interfejsie Zabbix przejdź do Alerts -> Scripts -> Create script
- Nazwa: “Cleanup Old Logs”
- Scope: Action operation
- Type: Script
- Execute on: Zabbix server
- Commands:
/usr/lib/zabbix/alertscripts/cleanup_logs.sh
Teraz potrzebny jest trigger, który wykryje niski poziom wolnego miejsca. Szablon “Linux by Zabbix agent” zbiera item o kluczu
vfs.fs.size[/,pfree](procent wolnego miejsca na/). Przejdź do Data collection -> Hosts, kliknij Triggers przy swoim hoście, a następnie Create trigger:- Nazwa: “Low disk space on /”
- Severity: Warning
- Expression:
last(/Local Server/vfs.fs.size[/,pfree])<15Gdzie
Local Serverto nazwa Twojego hosta z poprzedniego rozdziału.
{Host:vfs.fs.size[/,pfree].last()}<15, to jest to stara składnia triggerów, która została usunięta w Zabbix 5.4. Obecnie obowiązuje format funkcja(/host/klucz_itemu).- Na koniec spinamy wszystko akcją w Alerts -> Actions -> Trigger actions -> Create action
- Nazwa: “Auto Cleanup Logs When Disk Full”
- Conditions: Trigger equals “Low disk space on /”
- Operations: Run script “Cleanup Old Logs” na hoście, którego dotyczy problem
Teraz, gdy wolne miejsce na dysku spadnie poniżej 15%, trigger przejdzie w stan Problem, a akcja automatycznie uruchomi skrypt czyszczenia starych logów.
Powiadomienia
Co z tego, że system wykryje problem, jeśli nikt o tym nie wie? Skonfigurujmy powiadomienia email:
- Przejdź do Alerts -> Media types -> Email
- Skonfiguruj ustawienia SMTP:
- SMTP server: smtp.gmail.com (lub twój serwer)
- SMTP port: 587
- SMTP email: twoj_email@domena.com
- Connection security: STARTTLS
- Authentication: Username and password
Teraz dodaj media do swojego użytkownika (Users -> Users)
- Kliknij na swój profil
- Przejdź do zakładki Media
- Dodaj medium typu Email z twoim adresem
Utwórz action dla powiadomień (Alerts -> Actions -> Trigger actions -> Create action)
- Nazwa: “Email Notifications”
- Warunki: Severity >= Warning
- Operacje: Send message to User “Admin” using media “Email”
- Treść: “Problem: {EVENT.NAME}\nHost: {HOST.NAME}\nSeverity: {EVENT.SEVERITY}\nTime: {EVENT.TIME}\nDescription: {EVENT.DESCRIPTION}”
Opcjonalnie dodaj operację recovery, która powiadomi Cię, gdy problem zostanie rozwiązany
Od teraz będziesz otrzymywać maile, gdy wystąpią problemy z monitorowanymi hostami.
Podsumowanie
Zabbix to potężne narzędzie, które odpowiednio skonfigurowane może być Twoim trzecim okiem w infrastrukturze. Zamiast reagować na problemy, gdy już wystąpią i użytkownicy zaczną dzwonić, możesz je wykrywać, zanim ktokolwiek inny je zauważy.
W tym artykule zaledwie musnęliśmy powierzchnię możliwości Zabbix. W kolejnych wpisach zagłębimy się bardziej w zaawansowane funkcje, takie jak:
- Tworzenie własnych szablonów
- Monitorowanie aplikacji webowych
- Integracja z innymi systemami
- Automatyczne odkrywanie sieci
Ale już teraz, mając podstawową konfigurację Zabbix, możesz spać spokojniej wiedząc, że ktoś (lub coś) ciągle czuwa nad Twoją infrastrukturą.
Comments powered by Talkyard.