5 Parametry użytkownika

Omówienie

Czasami możesz chcieć uruchomić sprawdzanie przez agent, które nie jest predefiniowane w Zabbix. W tym przypadku pomocne są parametry użytkownika.

Możesz napisać polecenie pobierające potrzebne dane i uwzględnić je w parametrze użytkownika w pliku konfiguracyjnym agenta (parametr konfiguracyjny UserParameter).

Parametr użytkownika ma następującą składnię:

UserParameter=<key>,<command>

Jak widać, parametr użytkownika również zawiera klucz. Klucz będzie potrzebny podczas konfigurowania pozycji. Wprowadź wybrany klucz, do którego łatwo będzie się odwoływać (musi być unikalny w obrębie hosta).

Uruchom ponownie agenta lub użyj opcji sterowania w czasie wykonywania agenta, aby wczytać nowy parametr, na przykład:

zabbix_agentd -R userparameter_reload

Następnie podczas konfigurowania pozycji wprowadź klucz, aby odwołać się do polecenia z parametru użytkownika, które ma zostać wykonane.

Parametry użytkownika to polecenia wykonywane przez agenta Zabbix. Pamiętaj, że przed wykonaniem kroków wstępnego przetwarzania wartości pozycji można zwrócić maksymalnie 16 MB danych.

W systemach UNIX agent wykonuje polecenia parametrów użytkownika za pomocą /bin/sh, na koncie systemu operacyjnego, na którym działa agent (zwykle zabbix). To konto musi mieć wystarczające uprawnienia do wykonania polecenia oraz dostępu do używanych przez nie plików, gniazd lub danych uwierzytelniających.

Parametry użytkownika podlegają limitowi czasu sprawdzania agenta; po jego osiągnięciu rozwidlony proces parametru użytkownika zostaje zakończony.

Zobacz także:

Przykłady prostych parametrów użytkownika

Przykład 1: Stała wartość

UserParameter=ping,echo 1

Pozycja z kluczem ping zawsze zwraca 1.

Przykład 2: Dostępność serwera MySQL

UserParameter=mysql.ping,mysqladmin ping 2>/dev/null | grep -c alive

Zwraca 1, jeśli serwer MySQL odpowiada, a w przeciwnym razie 0. Przekierowanie 2>/dev/null odrzuca standardowe dane wyjściowe błędów polecenia mysqladmin. Bez niego komunikat o błędzie mógłby zostać zwrócony razem z wartością 0, powodując, że pozycja z typem informacji Numeric stanie się nieobsługiwana (zobacz Wynik polecenia).
W tym przykładzie przyjęto, że dane uwierzytelniające połączenia z MySQL są skonfigurowane dla konta systemu operacyjnego, na którym działa agent Zabbix, na przykład w pliku opcji MySQL dostępnym dla tego konta.

Elastyczne parametry użytkownika

Elastyczne parametry użytkownika akceptują parametry wraz z kluczem. Dzięki temu elastyczny parametr użytkownika może stanowić podstawę do utworzenia kilku pozycji.

Elastyczne parametry użytkownika mają następującą składnię:

UserParameter=key[*],command
Parametr Opis
Key Unikalny klucz pozycji. [*] oznacza, że ten klucz akceptuje parametry w nawiasach.
Parametry są podawane podczas konfigurowania pozycji.
Command Polecenie, które zostanie wykonane w celu obliczenia wartości klucza.
Tylko w przypadku elastycznych parametrów użytkownika:
W poleceniu można używać odwołań pozycyjnych $1…$9 w celu odwołania się do odpowiedniego parametru w kluczu pozycji.
Zabbix analizuje parametry ujęte w [ ] klucza pozycji i odpowiednio zastępuje nimi wartości $1,...,$9 w poleceniu.
$0 zostanie zastąpione oryginalnym poleceniem (przed rozwinięciem $0,...,$9), które ma zostać uruchomione.
Odwołania pozycyjne są interpretowane niezależnie od tego, czy są ujęte w cudzysłowy podwójne (") czy pojedyncze (').
Aby używać odwołań pozycyjnych bez zmian, należy określić podwójny znak dolara - na przykład awk '{print $$2}'. W tym przypadku $$2 zostanie faktycznie zamienione na $2 podczas wykonywania polecenia.

Odwołania pozycyjne ze znakiem $ są wyszukiwane i zastępowane przez agent Zabbix tylko w przypadku elastycznych parametrów użytkownika. W przypadku prostych parametrów użytkownika takie przetwarzanie odwołań jest pomijane, dlatego stosowanie znaków $ w cudzysłowach nie jest konieczne.

Niektóre znaki są domyślnie niedozwolone w parametrach użytkownika. Pełną listę znaków można znaleźć w sekcji UnsafeUserParameters.

Przykłady elastycznych parametrów użytkownika

Poniższe przykłady służą wyłącznie do celów demonstracyjnych i nie powinny być używane w środowisku produkcyjnym bez zastosowania odpowiednich zabezpieczeń. Elastyczne parametry użytkownika zdefiniowane przy użyciu [*] akceptują argumenty, które mogą stwarzać ryzyko wstrzyknięcia poleceń, jeśli nie są bezpiecznie obsługiwane.

Przykład 1: Zwracanie parametru

UserParameter=ping[*],echo $1

Za pomocą tego parametru użytkownika można zdefiniować wiele pozycji z kluczami w formacie ping[parameter]:

  • ping[0] - zwraca 0.
  • ping[hello] - zwraca hello.

Przykład 2: Dostępność MySQL na określonym hoście

Ten parametr może służyć do monitorowania dostępności serwera MySQL na określonym hoście.

UserParameter=mysql.ping[*],mysqladmin -h "$1" ping 2>/dev/null | grep -c alive

Pozycja z kluczem mysql.ping[db1.example.com] zwraca wartość 1, jeśli serwer MySQL na tym hoście odpowiada, oraz 0 w przeciwnym razie.
W tym przykładzie przyjęto, że dane uwierzytelniające połączenia z MySQL są skonfigurowane dla konta systemu operacyjnego, na którym działa agent Zabbix, na przykład w pliku opcji MySQL dostępnym dla tego konta.

Przykład 3: Zliczanie wierszy pasujących do wzorca

Ten parametr może służyć do zliczania liczby wierszy w pliku.

UserParameter=grep.count[*],grep -c "$2" "$1"

Zwraca liczbę wierszy w pliku określonym przez pierwszy argument, które pasują do wyrażenia regularnego określonego przez drugi argument. Na przykład grep.count[/etc/passwd,root] zwraca liczbę wierszy w pliku /etc/passwd, które pasują do wyrażenia regularnego root.

Wynik polecenia

Wartość zwracana przez polecenie to standardowe wyjście wraz ze standardowym wyjściem błędów wygenerowanym przez polecenie.

Pozycja, która zwraca tekst (informacje typu character, log lub text), nie stanie się nieobsługiwana w przypadku wyjścia standardowego błędów.

Wartość zwracana jest ograniczona do 16 MB (w tym końcowe białe znaki, które są obcinane); obowiązują również limity bazy danych.

Parametry użytkownika, które zwracają tekst (informacje typu character, log lub text), mogą również zwracać biały znak. W przypadku nieprawidłowego wyniku pozycja stanie się nieobsługiwana.