1 Rozszerzanie agentów Zabbix

W tej sekcji przedstawiono szczegółowe instrukcje dotyczące rozszerzania funkcjonalności agenta Zabbix za pomocą parametru użytkownika.

Poniższy przykład pobiera liczbę instrukcji wykonanych przez serwer MySQL. Opisane kroki dotyczą zarówno agenta Zabbix, jak i agenta Zabbix 2.

Ten przykład pokazuje, jak działają parametry użytkownika. W przypadku monitorowania środowiska produkcyjnego MySQL rozważ użycie predefiniowanych szablonów MySQL, które nie wymagają parametrów użytkownika.

Krok 1: Przygotowanie dostępu do MySQL

agent działa jako użytkownik systemu operacyjnego zabbix. Nie używaj konta MySQL root, ponieważ może ono korzystać z uwierzytelniania opartego na gnieździe, co może uniemożliwić agentowi nawiązanie połączenia. Zamiast tego utwórz dedykowanego użytkownika MySQL:

CREATE USER 'zbx_monitor'@'localhost' IDENTIFIED BY '<password>';

Zapisz dane uwierzytelniające w pliku, który może odczytywać wyłącznie użytkownik zabbix, na przykład /etc/zabbix/mysql_monitor.cnf (ścieżka zależy od systemu operacyjnego i metody instalacji Zabbix):

[client]
user=zbx_monitor
password=<strong password>

Ustaw właściciela i uprawnienia pliku:

sudo chown zabbix:zabbix /etc/zabbix/mysql_monitor.cnf
sudo chmod 600 /etc/zabbix/mysql_monitor.cnf

Przekaż ten plik jawnie za pomocą --defaults-extra-file (musi to być pierwsza opcja przekazana klientowi MySQL), zamiast polegać na ~/.my.cnf, ponieważ zmienna środowiskowa HOME demona może być nieustawiona lub mieć inną wartość, niż oczekujesz. Jeśli MySQL korzysta z niestandardowej ścieżki gniazda, dodaj do tego samego pliku wiersz socket=.

Krok 2: Napisz polecenie

Napisz niestandardowy skrypt lub polecenie, aby pobrać wymagany parametr, i upewnij się, że działa ono w takich samych warunkach jak demon agent.

Następujące polecenie zwraca liczbę instrukcji wykonanych przez serwer MySQL:

/usr/bin/mysql --defaults-extra-file=/etc/zabbix/mysql_monitor.cnf -N -B -e "SHOW GLOBAL STATUS LIKE 'Questions'" | /usr/bin/awk '{print $2}'

Możesz przetestować polecenie jako użytkownik zabbix; powinno ono wyświetlić pojedynczą liczbę:

sudo -u zabbix sh -c "/usr/bin/mysql --defaults-extra-file=/etc/zabbix/mysql_monitor.cnf -N -B -e \"SHOW GLOBAL STATUS LIKE 'Questions'\" | /usr/bin/awk '{print \$2}'"

Krok 3: Dodaj polecenie do konfiguracji Zabbix agent

Zamiast edytować główny plik konfiguracyjny agent (zabbix_agentd.conf lub zabbix_agent2.conf), utwórz osobny plik w katalogu uwzględnionym przez parametr Include. Oddzielne pliki są łatwiejsze w zarządzaniu i jest mniej prawdopodobne, że zostaną zmodyfikowane podczas aktualizacji pakietów.

Na przykład utwórz plik /etc/zabbix/zabbix_agentd.d/mysql.conf (/etc/zabbix/zabbix_agent2.d/mysql.conf dla Zabbix agent 2) o następującej zawartości:

UserParameter=mysql.questions,/usr/bin/mysql --defaults-extra-file=/etc/zabbix/mysql_monitor.cnf -N -B -e "SHOW GLOBAL STATUS LIKE 'Questions'" | /usr/bin/awk '{print $2}'

mysql.questions to unikalny klucz pozycji. Musi być unikalny w obrębie konfiguracji agent.

Możesz przetestować parametr, uruchamiając Zabbix agent z flagą -t. Uruchom test jako użytkownik zabbix i określ plik konfiguracyjny, jeśli nie znajduje się on w domyślnej lokalizacji:

Dla Zabbix agent:

sudo -u zabbix zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf -t mysql.questions

Dla Zabbix agent 2:

sudo -u zabbix zabbix_agent2 -c /etc/zabbix/zabbix_agent2.conf -t mysql.questions

Oczekiwany wynik zawiera liczbę, na przykład:

mysql.questions                               [t|4567]

Krok 4: Przeładuj i przetestuj parametr użytkownika

Przeładuj parametry użytkownika z pliku konfiguracyjnego, uruchamiając następujące polecenie:

Dla Zabbix agent:

sudo zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf -R userparameter_reload

Dla Zabbix agent 2:

sudo zabbix_agent2 -c /etc/zabbix/zabbix_agent2.conf -R userparameter_reload

Uruchom polecenie jako root lub jako użytkownik systemu operacyjnego, który uruchamia agenta.

Alternatywnie uruchom ponownie agenta, aby zastosować zmiany konfiguracji.

Możesz przetestować parametr względem uruchomionego agenta za pomocą narzędzia zabbix_get, na przykład z serwera Zabbix:

zabbix_get -s <IP address> -k mysql.questions

W tym przypadku <IP address> to adres IP hosta, na którym działa agent, z którym łączy się zabbix_get. Adres IP hosta, na którym działa zabbix_get, musi być wymieniony w parametrze Server agenta.

Aby ten test zadziałał, agent musi akceptować sprawdzanie pasywne (w przypadku Zabbix agent parametr StartAgents nie może mieć wartości 0). Jeśli agent jest skonfigurowany wyłącznie do sprawdzania aktywnego, pomiń ten test i po wykonaniu ostatniego kroku sprawdź pozycję w sekcji Monitoring > Latest data.

Krok 5: Utwórz pozycję

Utwórz nową pozycję na monitorowanym hoście z kluczem pozycji mysql.questions.

Wybierz typ pozycji: Zabbix Agent lub Zabbix Agent (active).

W przypadku Zabbix agent (pasywnego) adres serwera Zabbix lub proxy musi być wymieniony w parametrze Server agenta. W przypadku Zabbix agent (aktywnego) parametr ServerActive musi określać serwer Zabbix lub proxy, a parametr Hostname agenta musi dokładnie odpowiadać nazwie hosta skonfigurowanej we frontendzie.

Wybierz Typ informacji pozycji. agent zawsze zwraca wartość jako tekst; Typ informacji określa sposób interpretowania i przechowywania wartości przez Zabbix po wykonaniu wszystkich kroków wstępnego przetwarzania.

W przypadku surowego licznika skumulowanego wybierz Liczba (bez znaku). Aby zmierzyć liczbę instrukcji na sekundę, wybierz Liczba (zmiennoprzecinkowa) i dodaj krok wstępnego przetwarzania Zmiana na sekundę.