Zdalne polecenia
Omówienie
Za pomocą zdalnych poleceń można zdefiniować, że określone, wcześniej zdefiniowane polecenie jest automatycznie wykonywane na monitorowanym hoście po spełnieniu określonego warunku.
Zdalne polecenia są więc potężnym mechanizmem inteligentnego, proaktywnego monitorowania.
W najbardziej oczywistych zastosowaniach tej funkcji można spróbować:
- Automatycznie uruchomić ponownie niektóre aplikacje (serwer WWW, middleware, CRM), jeśli nie odpowiadają
- Użyć polecenia IPMI 'reboot' do ponownego uruchomienia zdalnego serwera, jeśli nie odpowiada na żądania
- Automatycznie zwolnić miejsce na dysku (usuwając starsze pliki, czyszcząc /tmp), jeśli kończy się miejsce na dysku
- Przenieść maszynę wirtualną z jednego fizycznego serwera na inny w zależności od obciążenia CPU
- Dodać nowe węzły do środowiska chmurowego w przypadku niewystarczających zasobów CPU (dysk, pamięć itp.)
Konfigurowanie akcji dla zdalnych poleceń jest podobne do konfiguracji wysyłania wiadomości, a jedyną różnicą jest to, że Zabbix wykona polecenie zamiast wysłać wiadomość.
Zdalne polecenia mogą być wykonywane przez serwer Zabbix, proxy lub agent. Zdalne polecenia na agencie Zabbix mogą być wykonywane bezpośrednio przez serwer Zabbix lub za pośrednictwem proxy Zabbix. Zarówno na agencie Zabbix, jak i na proxy Zabbix zdalne polecenia są domyślnie wyłączone. Można je włączyć przez:
- dodanie parametru
AllowKey=system.run[*]w konfiguracji agenta; - ustawienie parametru
EnableRemoteCommandsna1w konfiguracji proxy.
Zdalne polecenia wykonywane przez serwer Zabbix są uruchamiane zgodnie z opisem w Wykonywanie poleceń, w tym z uwzględnieniem sprawdzania kodu zakończenia.
Zdalne polecenia są wykonywane nawet wtedy, gdy host docelowy znajduje się w trybie konserwacji.
Limit zdalnych poleceń
Limit zdalnego polecenia po rozwinięciu wszystkich makr zależy od typu bazy danych i zestawu znaków (znaki spoza ASCII wymagają do zapisania więcej niż jednego bajtu):
| Database | Limit in characters | Limit in bytes |
|---|---|---|
| MySQL | 65535 | 65535 |
| PostgreSQL | 65535 | bez limitu |
| SQLite (tylko Zabbix proxy) | 65535 | bez limitu |
Dane wyjściowe wykonania zdalnego polecenia (wartość zwracana) są ograniczone do 16 MB (włącznie z końcowymi białymi znakami, które są obcinane). Limit zdalnego polecenia IPMI zależy od zainstalowanej biblioteki IPMI. Należy pamiętać, że limity bazy danych mają zastosowanie do wszystkich zdalnych poleceń.
Konfiguracja
Te zdalne polecenia, które są wykonywane na agencie Zabbix (niestandardowe skrypty), muszą być najpierw włączone w konfiguracji agenta configuration.
Upewnij się, że parametr AllowKey=system.run[<command>,*] został dodany dla każdego dozwolonego polecenia w konfiguracji agenta, aby umożliwić wykonanie określonego polecenia w trybie nowait. Jeśli zmieniasz ten parametr, uruchom ponownie demona agenta.
Następnie, podczas konfigurowania nowej akcji w Alerts > Actions > Trigger actions:
- Zdefiniuj odpowiednie warunki, na przykład ustaw, że akcja jest aktywowana przy dowolnych problemach typu disaster dotyczących jednej z aplikacji Apache.

- W zakładce Operations kliknij Add w sekcji Operations, Recovery operations lub Update operations.

- Wybierz jeden z predefined scripts z listy rozwijanej Operation i ustaw Target list dla skryptu.

Predefiniowane skrypty
Skrypty dostępne dla operacji akcji (webhook, skrypt, SSH, Telnet, IPMI) są definiowane w globalnych skryptach z wybranym zakresem Action operation.
Na przykład:
sudo /etc/init.d/apache restart
W tym przypadku Zabbix spróbuje zrestartować proces Apache. W przypadku tego polecenia upewnij się, że jest ono wykonywane na agent Zabbix (kliknij przycisk Zabbix agent przy opcji Execute on).
Zwróć uwagę na użycie sudo - użytkownik Zabbix nie ma domyślnie
uprawnień do restartowania usług systemowych. Poniżej znajdziesz wskazówki,
jak skonfigurować sudo.
Począwszy od Zabbix agent 7.0, polecenia zdalne mogą być również wykonywane na agencie działającym w trybie aktywnym. Agent Zabbix - niezależnie od tego, czy działa w trybie aktywnym, czy pasywnym - powinien działać na zdalnym host, i wykonuje polecenia w tle.
Polecenia zdalne na agent Zabbix są wykonywane bez limitu czasu przez klucz system.run[,nowait] i nie są sprawdzane pod kątem wyników wykonania.
Na serwer Zabbix i proxy Zabbix polecenia zdalne są wykonywane z limitem czasu ustawionym w parametrze TrapperTimeout pliku zabbix_server.conf lub zabbix_proxy.conf i są sprawdzane pod kątem wyników wykonania.
Dodatkowe informacje znajdziesz w sekcji Script timeout.
Uprawnienia dostępu
Upewnij się, że użytkownik zabbix ma uprawnienia do wykonywania skonfigurowanych
poleceń. Można rozważyć użycie sudo, aby nadać dostęp do
poleceń wymagających uprawnień. Aby skonfigurować dostęp, wykonaj jako root:
visudo
Przykładowe wiersze, które można umieścić w pliku sudoers:
# pozwala użytkownikowi 'zabbix' uruchamiać wszystkie polecenia bez hasła.
zabbix ALL=NOPASSWD: ALL
# pozwala użytkownikowi 'zabbix' restartować apache bez hasła.
zabbix ALL=NOPASSWD: /etc/init.d/apache restart
W niektórych systemach plik sudoers uniemożliwi użytkownikom spoza lokalnego
systemu wykonywanie poleceń. Aby to zmienić, zakomentuj opcję requiretty
w /etc/sudoers.
Zdalne polecenia przy wielu interfejsach
Jeśli system docelowy ma wiele interfejsów wybranego typu (agent Zabbix lub IPMI), zdalne polecenia będą wykonywane na domyślnym interfejsie.
Możliwe jest wykonywanie zdalnych poleceń przez SSH i Telnet przy użyciu interfejsu innego niż interfejs agenta Zabbix. Dostępny interfejs do użycia jest wybierany w następującej kolejności:
- Domyślny interfejs agenta Zabbix
- Domyślny interfejs SNMP
- Domyślny interfejs JMX
- Domyślny interfejs IPMI
Zdalne polecenia IPMI
Dla zdalnych poleceń IPMI należy używać następującej składni:
<command> [<value>]
gdzie
- <command> - jedno z poleceń IPMI bez spacji
- <value> - 'on', 'off' lub dowolna nieujemna liczba całkowita. <value> jest parametrem opcjonalnym.
Przykłady
Przykłady globalnych skryptów, które mogą być używane jako zdalne polecenia w operacjach akcji.
Przykład 1
Ponowne uruchomienie systemu Windows w określonych warunkach.
Aby automatycznie uruchomić ponownie system Windows po wykryciu problemu przez Zabbix, zdefiniuj następujący skrypt:
| Parametr skryptu | Wartość |
|---|---|
| Zakres | 'Action operation' |
| Typ | 'Script' |
| Polecenie | c:\windows\system32\shutdown.exe -r -f |
Przykład 2
Uruchom ponownie host przy użyciu sterowania IPMI.
| Parametr skryptu | Wartość |
|---|---|
| Zakres | 'Operacja akcji' |
| Typ | 'IPMI' |
| Polecenie | reset |
Przykład 3
Wyłącz zasilanie hosta za pomocą sterowania IPMI.
| Parametr skryptu | Wartość |
|---|---|
| Zakres | 'Operacja akcji' |
| Typ | 'IPMI' |
| Polecenie | power off |