2 Zdalne polecenia
Przegląd
Za pomocą zdalnych poleceń można zdefiniować, że określone, wcześniej zdefiniowane polecenie zostanie automatycznie wykonane na monitorowanym hoście po spełnieniu określonego warunku.
Dzięki temu zdalne polecenia są potężnym mechanizmem inteligentnego, proaktywnego monitorowania.
W najbardziej oczywistych zastosowaniach tej funkcji można spróbować:
- Automatycznie restartować aplikację (serwer WWW, middleware, CRM), jeśli nie odpowiada
- Użyć polecenia IPMI „reboot”, aby ponownie uruchomić zdalny serwer, jeśli nie odpowiada na żądania
- Automatycznie zwalniać miejsce na dysku (usuwanie starszych plików, czyszczenie /tmp), jeśli kończy się wolne miejsce na dysku
- Migrować maszynę wirtualną z jednego fizycznego serwera na inny w zależności od obciążenia CPU
- Dodawać nowe węzły do środowiska chmurowego przy niewystarczających zasobach CPU (dysku, pamięci lub innych)
Konfigurowanie akcji dla zdalnych poleceń jest podobne do konfigurowania akcji wysyłania wiadomości; jedyna różnica polega na tym, że Zabbix wykona polecenie zamiast wysyłać wiadomość.
Zdalne polecenia mogą być wykonywane przez serwer Zabbix, proxy lub agent. Zdalne polecenia na Zabbix agent mogą być wykonywane bezpośrednio przez serwer Zabbix lub za pośrednictwem Zabbix proxy. Zarówno na Zabbix agent, jak i Zabbix proxy zdalne polecenia są domyślnie wyłączone. Można je włączyć przez:
- dodanie parametru
AllowKey=system.run[*]w konfiguracji agenta; - ustawienie parametru EnableRemoteCommands na „1” w konfiguracji proxy.
Zdalne polecenia wykonywane przez serwer Zabbix są uruchamiane zgodnie z opisem w Command execution, łącznie ze sprawdzaniem kodu wyjścia.
Zdalne polecenia są wykonywane nawet wtedy, gdy docelowy host jest 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 agent Zabbix (niestandardowe skrypty), muszą być najpierw włączone w konfiguracji agenta.
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. Uruchom ponownie demona agenta, jeśli zmieniasz ten parametr.
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 predefiniowanych skryptów z listy rozwijanej Operation i ustaw Target list dla skryptu.

Predefiniowane skrypty
Skrypty dostępne dla operacji akcji (webhook, script, SSH, Telnet, IPMI) są definiowane w globalnych skryptach.
Na przykład:
sudo /etc/init.d/apache restart
W tym przypadku Zabbix spróbuje ponownie uruchomić proces Apache. W przypadku tego polecenia upewnij się, że jest ono wykonywane na Zabbix agent (kliknij przycisk Zabbix agent przy opcji Execute on).
Zwróć uwagę na użycie sudo - użytkownik Zabbix nie ma domyślnie uprawnień do ponownego uruchamiania usług systemowych. Poniżej znajdziesz wskazówki dotyczące konfiguracji sudo.
Począwszy od Zabbix agent 7.0, polecenia zdalne mogą być również wykonywane na agent działającym w trybie aktywnym. Zabbix agent - 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 Zabbix agent są wykonywane bez limitu czasu przez klucz system.run[,nowait] i nie są sprawdzane pod kątem wyników wykonania. Na Zabbix serwer i Zabbix proxy polecenia zdalne są wykonywane z limitem czasu ustawionym w parametrze TrapperTimeout w 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 przyznać dostęp do uprzywilejowanych poleceń. Aby skonfigurować dostęp, wykonaj jako root:
visudo
Przykładowe linie, 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żliwia użytkownikom nielokalnym 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
Restart systemu Windows przy określonym warunku.
Aby automatycznie zrestartować system Windows po wykryciu problemu przez Zabbix, zdefiniuj następujący skrypt:
| Parametr skryptu | Wartość |
|---|---|
| Zakres | 'Operacja akcji' |
| Typ | 'Skrypt' |
| 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 |