Hej, hej... Programisto, to kolejny artykuł dla Ciebie! Druga część artykułu na temat wzorców projektowych. Poznaj Adapter oraz Memento.
W poprzednich artykułach na temat Zabbix (cz. 1 i cz. 2) udało nam się doprowadzić do działania dwóch agentów na dwóch różnych serwerach, skonfigurować firewall oraz szyfrowanie ruchu pomiędzy jednym z agentów a serwerem. W tym artykule przyjrzymy się głównie panelowi administratora, pokażemy z jakich parametrów są tworzone statystyki dotyczące serwera, jak łączyć te dane i rysować grafy (wykresy) oraz jakie problemy wiążą się z monitorowaniem bazy danych w Zabbix.
Podział ustawień
Konfigurację w Zabbix dzielimy na kilka zakładek, z których każda reprezentuje nieco inne dane oraz pozwala na zarządzanie różnymi obszarami. Najbardziej istotne z nich to:
- Monitoring – Pozwala na obserwowanie danych, które spływają do serwera z agentów w czasie rzeczywistym. Dane można oglądać w postaci pojedynczych wartości dla danych parametrów lub narysowane na wykresach.
- Services – Daje możliwość monitorowania specyficznych usług działających w sieci, które są krytyczne jak np. DNS czy SSH. Z poziomu tej zakładki można także wygenerować tzw. raport SLA.
- Inventory – jest to centralna baza wiedzy o wszystkich hostach pozwalająca na ich filtrowanie, oznaczanie i wprowadzanie danych dodatkowych jak np. organizacja czy kontakt. Przydatne przy zarządzaniu dużą ilością urządzeń.
- Reports – pozwala na generowanie i planowanie cyklicznych raportów, audytów czy zarządzanie powiadomieniami. Aby wygenerować raport, trzeba jednak włączyć menedżer raportów z poziomu ustawień serwera.
- Configuration – Pozwala na edycję ustawień, edycję trigger’ów, dodawanie i kasowanie monitorowanych hostów czy modyfikację wykresów i całych szablonów
- Administration – Daje możliwość zarządzania kontami, które mają dostęp do panelu administratora Zabbix, ich uprawnieniami, tworzenie roli i grup użytkowników.
Rysunek 1. Najważniejsze zakładki w panelu Zabbix
Dane i ich agregacja
Dane, które spływają do serwera, zależą od wybranego szablonu, który można wybrać w ustawieniach danego hosta w sekcji Monitoring. Zabbix posiada wiele domyślnych szablonów, które mają za zadanie zapewnić pobieranie odpowiednich danych, przetwarzanie ich w wykresy, a następnie pokazanie ich na tablicy. Można także tworzyć własne szablony w sekcji Configuration, które mogą bazować na tych domyślnych dostarczonych przez oprogramowanie Zabbix.
Rysunek 2. Fragment szablonów dostępnych w Zabbix
Aby zweryfikować czy zainstalowany agent prawidłowo pobiera dane z agenta, należy wejść w Monitoring -> Hosts , a następnie kliknąć w sekcję Latest Data. Jeśli najnowsze dane są z przed kilkudziesięciu sekund, to znaczy, że wszystko działa poprawnie.
Rysunek 3. Sekcja „Latest Data” jednego z agentów serwera
Widoczne dane są agregowane następnie w wykresy, które z kolei są grupowane w określone sekcje dotyczące konkretnego komponentu działającego na serwerze (np. procesora).
Rysunek 4. Wykresy z tablicy CPU wygenerowanej na podstawie domyślnego szablonu Linux Server
Istotnym elementem szablonu są także trigger’y, które w przypadku określonych zmian na serwerze raportują problemy do panelu administracyjnego. Monitorowanie obejmuje w tym przypadku takie aspekty jak stan serwera, zmianę pliku /etc/shadow, czy przeciążenie pamięci dyskowej lub operacyjnej. Problem może być klasyfikowany według wielu poziomów zagrożenia od „Information” aż po „Critical”, które administrator może modyfikować w zależności od swoich potrzeb.
Rysunek 5. Przykładowe trigger’y występujące w szablonach Linux Server oraz Apache
Problemy z pobieraniem danych – MySQL
Niestety, nie zawsze pobranie odpowiednich danych sprowadza się do użycia odpowiedniego szablonu. Czasem wymagana jest dodatkowa interwencja administratora i instalacja pewnych zewnętrznych paczek na monitorowanym serwerze, które pozwolą na pozyskanie odpowiednich danych. W przypadku Zabbix jest tak na przykład z bazami danych. W przypadku MySQL MariaDB w systemie Debian, aby to zrobić należy przejść kilkuetapowy proces, który może być nieco inny w zależności od systemu operacyjnego czy wersji paczek, które są instalowane. W tym miejscu warto zrobić kopię zapasową swojej pracy np. wykupując usługę snapshot u zarządcy serwerów, jeśli występuje ona w ofercie. Zaczynamy od instalacji niezbędnych paczek ODBC:
sudo apt-get install unixodbc unixodbc-dev
Następnie należy pobrać dostosowaną do wersji systemu paczkę z biblioteką ze strony dostawcy bazy danych, w tym przypadku MariaDB i wykonywać kolejne komendy.
wget https://downloads.mariadb.com/Connectors/odbc/connector-odbc-2.0.15/mariadb-connector-odbc-2.0.15-ga-debian-x86_64.tar.gz
tar -xvzf mariadb-connector-odbc-2.0.15-ga-debian-x86_64.tar.gz
cd mariadb-connector-odbc-2.0.15-ga-debian-x86_64
install lib/libmaodbc.so /usr/lib
Kolejno edytujemy bazę danych i tworzymy użytkownika do monitorowania:
mysql
CREATE USER 'zabbix_monitor’@’%’ IDENTIFIED BY ’ zabbix_monitor_password’;
GRANT PROCESS, SHOW DATABASES, BINLOG MONITOR, SHOW VIEW ON *.* TO 'zabbix_monitor’@’%’;
Następnie należy utworzyć dwa pliki w folderze /etc
odbc.ini
[zabbix]
Driver=MariaDB
Database=zabbix
Server=127.0.0.1
UserName=zabbix_monitor
Password=zabbix_monitor_password
odbcinst.ini
[MariaDB]
Driver=/usr/lib/libmaodbc.so
Setup=/usr/lib/libmaodbc.so
Po zapisie plików i wykonaniu tej komendy powinniśmy otrzymać informację i zalogowaniu za pomocą isql.
isql -v zabbix zabbix_monitor
Rysunek 6. Poprawne wykonanie komendy isql
Jeśli otrzymujemy informację o błędach dotyczących sterownika lub biblioteki, to należy zmodyfikować konfigurację lub pobrać inną paczkę ODBC. Ostatnim etapem jest dodanie w panelu administratora w hoście tak zwanych „makr”, czyli zmiennych wykorzystywanych przy komunikacji. Wpisujemy tutaj nazwę DSN (pierwsza linia pliku odbc.ini), użytkownika oraz hasło.
Rysunek 7. Dane niezbędne do zalogowania się do MySQL i monitorowania
Monitorowanie bazy MySQL w tym przypadku jest realizowane lokalnie, to znaczy na tym samym serwerze, na którym znajduje się serwer. W przypadku komunikacji przez Internet należy uprzednio skonfigurować szyfrowanie pomiędzy agentem, a hostem. Podany powyżej sposób nie wyczerpuje tematu, ponieważ jest to tylko pojedyncza instalacja w danej wersji. Inne wersje bazy, sterownika ODBC mogą się znacząco od siebie różnic i powodować inne problemy. W źródłach znajdziesz opis przykładowych problemów i rozwiązań.
Powiadomienia – konfiguracja e-mail
Jednym z najistotniejszych elementów Zabbix’a są powiadomienia o problemach, które administrator jest w stanie filtrować oraz wysyłać te informacje na najpopularniejsze platformy. Nie możemy oczekiwać, że administrator będzie przed monitorem 24 godziny na dobę,na bieżąco reagując na najdrobniejsze incydenty. Możemy natomiast oczekiwać, że w świecie smartfonów będzie w stanie reagować na poważne incydenty, jeśli dostanie powiadomienia na e-mail czy komunikator z którego korzysta. Najprostszym sposobem jest założenie dedykowanej skrzynki w serwisie Gmail, ale dostępne są również powiadomienia poprzez Jira, Slack, Discord czy Telegram. Jeśli chcemy to zrealizować poprzez Gmail, należy założyć konto, potwierdzić je za pomocą telefonu oraz w ustawieniach wygenerować dedykowane hasło dla aplikacji. Bez tego nie da się zalogować za pomocą aplikacji do konta Google. W panelu administratora należy przejść do zakładki Administration -> Media types i uzupełnić pola tak jak widoczne jest na poniższym obrazku.
Rysunek 8. Konfiguracja media type e-mail
Po zakończeniu konfiguracji można wykonać test z poziomu zakładki Media Types. Ostatnią czynnością, jaką należy wykonać, jest podpięcie danej skrzynki pod dane konto użytkownika w systemie Zabbix. Można to zrobic poprzez zakładkę Administration -> Users
Rysunek 9. Podpięcie skrzynki e-mail pod powiadomienia o problemach
Podsumowanie
Mamy nadzieję, że informacje zawarte w ostatnim odcinku naszej serii o Zabbix przyczynią się do zwiększenia bezpieczeństwa Waszych serwerów. Należy natomiast wspomnieć, że przedstawiona tu wiedza przedstawia jedynie wybrany fragment możliwości systemu Zabbix. Jeśli temat jest dla Was interesujący zachęcamy do przeglądania dokumentacji i linków z sekcji Źródła (poniżej). Zapraszamy do czytania kolejnych artykułów z naszego bloga! Bądźcie na bieżąco i dbajcie o swoje bezpieczeństwo w sieci!
Źródła:
https://stackoverflow.com/questions/34369436/im002unixodbcdriver-managerdata-source-name-not-found-and-no-default-driv
https://stackoverflow.com/questions/47179236/debian-9-odbc-mariadb-01000-cant-open-lib-file-not-found
https://www.linuxhelp.com/how-to-install-mariadb-odbc-connector-on-debian-11-3 https://www.ibm.com/docs/en/elm/6.0.6.1?topic=connection-configuring-odbc-driver-linux-aix-systems
https://stackoverflow.com/questions/47665813/unixodbcdriver-managerdata-source-name-not-found-and-no-default-driver-spe
https://stackoverflow.com/questions/16325607/cant-connect-to-local-mysql-server-through-socket-tmp-mysql-sock