2 Attālinātās komandas

Pārskats

Ar attālinātajām komandām jūs varat definēt, ka noteikta iepriekš definēta komanda tiek automātiski izpildīta uzraudzītajā hostā, iestājoties kādam nosacījumam.

Tādējādi attālinātās komandas ir jaudīgs mehānisms viedai, proaktīvai uzraudzībai.

Visredzamākajos šīs funkcijas izmantošanas gadījumos varat mēģināt:

  • Automātiski restartēt kādu lietotni (tīmekļa serveri, starpprogrammatūru, CRM), ja tā neatbild
  • Izmantot IPMI komandu 'reboot', lai pārstartētu kādu attālinātu serveri, ja tas neatbild uz pieprasījumiem
  • Automātiski atbrīvot diska vietu (dzēšot vecākus failus, tīrot /tmp), ja sāk pietrūkt diska vietas
  • Migrēt VM no vienas fiziskas iekārtas uz citu atkarībā no CPU noslodzes
  • Pievienot jaunus mezglus mākoņvidē, ja nepietiek CPU (diska, atmiņas vai citu) resursu

Darbības konfigurēšana attālinātajām komandām ir līdzīga ziņojuma sūtīšanas konfigurēšanai; vienīgā atšķirība ir tā, ka Zabbix izpildīs komandu, nevis nosūtīs ziņojumu.

Attālinātās komandas var izpildīt Zabbix serveris, starpniekserveris vai aģents. Attālinātās komandas Zabbix aģentā var tikt izpildītas tieši no Zabbix servera vai caur Zabbix starpniekserveri. Gan Zabbix aģentā, gan Zabbix starpniekserverī attālinātās komandas pēc noklusējuma ir atspējotas. Tās var iespējot šādi:

  • pievienojot AllowKey=system.run[*] parametru aģenta konfigurācijā;
  • iestatot parametru EnableRemoteCommands uz '1' starpniekservera konfigurācijā.

Attālinātās komandas, ko izpilda Zabbix serveris, tiek palaistas, kā aprakstīts Komandu izpilde, ieskaitot izejas koda pārbaudi.

Attālinātās komandas tiek izpildītas pat tad, ja mērķa hosts atrodas apkopes režīmā.

Attālinātās komandas ierobežojums

Attālinātās komandas ierobežojums pēc visu makrosu atrisināšanas ir atkarīgs no datu bāzes tipa un rakstzīmju kopas (ne-ASCII rakstzīmju glabāšanai ir nepieciešams vairāk nekā viens baits):

Datu bāze Ierobežojums rakstzīmēs Ierobežojums baitos
MySQL 65535 65535
PostgreSQL 65535 nav ierobežots
SQLite (tikai Zabbix starpniekserveris) 65535 nav ierobežots

Attālinātās komandas izpildes izvade (atgrieztā vērtība) ir ierobežota līdz 16MB (ieskaitot beigu atstarpes, kas tiek apgrieztas). IPMI attālinātās komandas ierobežojums ir atkarīgs no instalētās IPMI bibliotēkas. Ņemiet vērā, ka datu bāzes ierobežojumi attiecas uz visām attālinātajām komandām.

Konfigurācija

Šīs attālinātās komandas, kas tiek izpildītas Zabbix aģentā (pielāgoti skripti), vispirms ir jāiespējo aģenta konfigurācijā.

Pārliecinieties, ka parametrs AllowKey=system.run[<command>,*] ir pievienots katrai atļautajai komandai aģenta konfigurācijā, lai atļautu konkrētu komandu nowait režīmā. Ja maināt šo parametru, restartējiet aģenta dēmonu.

Pēc tam, konfigurējot jaunu darbību sadaļā Brīdinājumi → Darbības → Trigeru darbības:

  1. Definējiet atbilstošos nosacījumus, piemēram, iestatiet, ka darbība tiek aktivizēta jebkuru katastrofas līmeņa problēmu gadījumā kādā no Apache lietotnēm.

  1. cilnē Darbības noklikšķiniet uz Pievienot blokā Darbības, Atkopšanas darbības vai Atjaunināšanas darbības.

  1. Nolaižamajā sarakstā Darbība atlasiet vienu no iepriekš definētajiem skriptiem un iestatiet skripta Mērķu sarakstu.

Iepriekš definēti skripti

Skripti, kas ir pieejami darbību operācijām (webhook, skripts, SSH, Telnet, IPMI), ir definēti globālajos skriptos.

Piemēram:

sudo /etc/init.d/apache restart 

Šajā gadījumā Zabbix mēģinās pārstartēt Apache procesu. Izmantojot šo komandu, pārliecinieties, ka komanda tiek izpildīta uz Zabbix aģenta (noklikšķiniet uz pogas Zabbix agent pretī laukam Execute on).

Ņemiet vērā sudo lietojumu — Zabbix lietotājam pēc noklusējuma nav atļauju pārstartēt sistēmas servisus. Skatiet tālāk padomus par to, kā konfigurēt sudo.

Sākot ar Zabbix aģentu 7.0, attālinātās komandas var izpildīt arī uz aģenta, kas darbojas aktīvajā režīmā. Zabbix aģentam — neatkarīgi no tā, vai tas ir aktīvs vai pasīvs — jādarbojas uz attālā hosta, un tas izpilda komandas fonā.

Attālinātās komandas uz Zabbix aģenta tiek izpildītas bez noildzes, izmantojot atslēgu system.run[,nowait], un to izpildes rezultāti netiek pārbaudīti. Uz Zabbix servera un Zabbix starpniekservera attālinātās komandas tiek izpildītas ar noildzi, kas iestatīta TrapperTimeout parametrā failā zabbix_server.conf vai zabbix_proxy.conf, un to izpildes rezultāti tiek pārbaudīti. Papildinformāciju skatiet sadaļā Skripta noildze.

Piekļuves atļaujas

Pārliecinieties, ka lietotājam 'zabbix' ir izpildes atļaujas konfigurētajām komandām. Var būt lietderīgi izmantot sudo, lai piešķirtu piekļuvi priviliģētām komandām. Lai konfigurētu piekļuvi, izpildiet kā root:

visudo

Piemēra rindas, ko varētu izmantot sudoers failā:

# ļauj lietotājam 'zabbix' palaist visas komandas bez paroles.
zabbix ALL=NOPASSWD: ALL

# ļauj lietotājam 'zabbix' pārstartēt apache bez paroles.
zabbix ALL=NOPASSWD: /etc/init.d/apache restart

Dažās sistēmās sudoers fails neļaus nelokāliem lietotājiem izpildīt komandas. Lai to mainītu, izkomentējiet opciju requiretty failā /etc/sudoers.

Attālinātās komandas ar vairākām saskarnēm

Ja mērķa sistēmai ir vairākas atlasītā tipa saskarnes (Zabbix aģents vai IPMI), attālinātās komandas tiks izpildītas noklusējuma saskarnē.

Ir iespējams izpildīt attālinātās komandas, izmantojot SSH un Telnet, caur citu saskarni, nevis Zabbix aģenta saskarni. Pieejamā izmantojamā saskarne tiek atlasīta šādā secībā:

  • Zabbix aģenta noklusējuma saskarne
  • SNMP noklusējuma saskarne
  • JMX noklusējuma saskarne
  • IPMI noklusējuma saskarne

IPMI attālinātās komandas

IPMI attālinātajām komandām jāizmanto šāda sintakse:

<command> [<value>]

kur

  • <command> - viena no IPMI komandām bez atstarpēm
  • <value> - 'on', 'off' vai jebkurš nenegatīvs vesels skaitlis. <value> ir neobligāts parametrs.

Piemēri

Piemēri globālajiem skriptiem, kurus var izmantot kā attālinātās komandas darbību operācijās.

Piemērs 1

Windows restartēšana noteiktā nosacījumā.

Lai automātiski restartētu Windows, kad Zabbix ir konstatējis problēmu, definējiet šādu skriptu:

Skripta parametrs Vērtība
Darbības joma 'Darbības operācija'
Tips 'Skripts'
Komanda c:\windows\system32\shutdown.exe -r -f

Piemērs 2

Pārstartējiet hostu, izmantojot IPMI vadību.

Skripta parametrs Vērtība
Tvērums 'Darbības operācija'
Tips 'IPMI'
Komanda reset

Piemērs 3

Izslēdziet hostu, izmantojot IPMI vadību.

Skripta parametrs Vērtība
Tvērums 'Darbības operācija'
Tips 'IPMI'
Komanda power off