Attālinātās komandas

Pārskats

Izmantojot attālās komandas, varat definēt, ka noteikts iepriekš definēts komandas tiek automātiski izpildīta uz uzraudzītā hosta, iestājoties noteiktam nosacījumam.

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

Acīmredzamākajos šīs funkcionalitātes izmantošanas gadījumos varat:

  • Automātiski restartēt kādu lietotni (tīmekļa serveri, starpprogrammatūru, CRM), ja tā nereaģē
  • Izmantot IPMI komandu reboot, lai restartētu attālo serveri, ja tas neatbild uz pieprasījumiem
  • Automātiski atbrīvot vietu diskā (dzēšot vecākus failus, iztīrot /tmp), ja diskā sāk trūkt vietas
  • Migrēt virtuālo mašīnu no viena fiziskā datora uz citu atkarībā no CPU noslodzes
  • Pievienot jaunus mezglus mākoņa vidē, ja nepietiek CPU (diska, atmiņas vai citu) resursu

Darbības konfigurēšana attālajām komandām ir līdzīga darbības konfigurēšanai ziņojuma nosūtīšanai; vienīgā atšķirība ir tā, ka Zabbix ziņojuma nosūtīšanas vietā izpilda komandu.

Attālās komandas var izpildīt Zabbix serveris, Zabbix starpniekserveris vai Zabbix aģents. Ņemiet vērā:

  • Attālās komandas Zabbix aģentā var izpildīt tieši Zabbix serveris vai ar Zabbix starpniekservera starpniecību.
  • Zabbix servera izpildītās attālās komandas tiek palaistas, kā aprakstīts sadaļā Komandu izpilde, tostarp pārbaudot izejas kodu.
  • Attālās komandas tiek izpildītas arī tad, ja mērķa hosts atrodas uzturēšanas režīmā.

Pēc noklusējuma attālās komandas ir atspējotas gan Zabbix aģentā, gan Zabbix starpniekserverī. Tās var iespējot šādi:

  • Attālajām komandām, ko izpilda Zabbix aģents, aģenta konfigurācijā katrai atļautajai komandai pievienojiet parametru AllowKey=system.run[<command>,*] vai AllowKeyRegexp=^system\.run\[<command>,.*\]$, kur * atbilst jebkuram izpildes režīmam (wait vai nowait).
  • Attālajām komandām, ko izpilda Zabbix starpniekserveris, starpniekservera konfigurācijā iestatiet parametru EnableRemoteCommands uz 1. Ņemiet vērā, ka attālās komandas nav jāiespējo Zabbix starpniekserverī, ja tās Zabbix aģents izpilda uz hosta, kuru uzrauga starpniekserveris.

Neizmantojiet AllowKey=system.run[*] vai AllowKeyRegexp=^system\.run\[.*\]$, ja vien tas nav nepieciešams, jo tādējādi tiek atļauts izpildīt jebkuru komandu uz hosta. Drošības apsvērumu dēļ ieteicams atļaut tikai precīzi norādītas komandas, savukārt system.run[*] pēc noklusējuma ir aizliegts (DenyKey=system.run[*]).

Skatiet arī sadaļu Aģenta pārbaužu ierobežošana.

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ēšana

Attālās komandas, ko izpilda Zabbix aģents, vispirms ir jāatļauj aģenta konfigurācijā, izmantojot parametru AllowKey vai AllowKeyRegexp.

Pārliecinieties, ka aģenta konfigurācijā katrai atļautajai komandai ir pievienots parametrs AllowKey=system.run[<command>,*] vai AllowKeyRegexp=^system\.run\[<command>,.*\]$, lai atļautu tās izpildi nowait režīmā. Pēc parametra maiņas restartējiet aģenta dēmonu.

Pēc tam, konfigurējot jaunu darbību, dodieties uz Alerts > Actions > Trigger actions:

  1. Definējiet atbilstošos nosacījumus, piemēram, iestatiet, lai darbība tiktu aktivizēta, ja kādai no Apache lietotnēm rodas jebkura katastrofas līmeņa problēma.

  1. Cilnē Operations sadaļā Operations, Recovery operations vai Update operations noklikšķiniet uz Add.

  1. Nolaižamajā sarakstā Operation atlasiet kādu no iepriekš definētajiem skriptiem un iestatiet skripta Target list.

Iepriekš definēti skripti

Skripti, kas ir pieejami darbību operācijām (webhook, skripts, SSH, Telnet, IPMI), ir definēti globālajos skriptos, kā darbības jomu izvēloties Action operation.

Piemēram:

sudo /etc/init.d/apache restart 

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

Ņemiet vērā sudo izmantošanu - Zabbix lietotājam pēc noklusējuma nav tiesību restartēt sistēmas pakalpojumus. Skatiet tālāk ieteikumus, kā konfigurēt sudo.

Sākot ar Zabbix aģents 7.0, attālinātās komandas var izpildīt arī uz aģents, kas darbojas aktīvajā režīmā. Zabbix aģents - neatkarīgi no tā, vai tas ir aktīvs vai pasīvs - jādarbojas attālajā hostā, un tas izpilda komandas fonā.

Attālinātās komandas uz Zabbix aģents tiek izpildītas bez noildzes, izmantojot system.run[,nowait] atslēgu, un to izpildes rezultāti netiek pārbaudīti. Uz Zabbix serveris un Zabbix starpniekserveris attālinātās komandas tiek izpildītas ar noildzi, kā noteikts TrapperTimeout parametrā failā zabbix_server.conf vai zabbix_proxy.conf, un to izpildes rezultāti tiek pārbaudīti. Papildu informāciju skatiet Script timeout.

Piekļuves atļaujas

Pārliecinieties, ka lietotājam zabbix ir izpildes atļaujas konfigurētajām komandām. Var būt noderī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 izmantot sudoers failā:

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

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

Dažās sistēmās sudoers fails neļaus ne-lokāliem lietotājiem izpildīt komandas. Lai to mainītu, komentējiet requiretty opciju 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 noteiktos apstākļos.

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

Script parameter Value
Scope 'Action operation'
Type 'Script'
Command 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