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:
- Samouczek krok po kroku dotyczący korzystania z parametrów użytkownika
- Wykonywanie poleceń
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]- zwraca0.ping[hello]- zwracahello.
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.