2 Attālinātās komandas

Pārskats

Izmantojot attālās komandas, varat definēt, ka noteikts iepriekš definēts komandas izpildījums tiek automātiski veikts uz uzraudzītā hosts, 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 mākoņvidē jaunus mezglus, ja nav pietiekamu CPU (diska, atmiņas vai citu) resursu

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

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.
  • Attālās komandas, ko izpilda Zabbix serveris, 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>,*], 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 hosts, ko uzrauga starpniekserveris.

Neizmantojiet AllowKey=system.run[*], ja vien tas nav nepieciešams, jo tas ļauj izpildīt jebkuru komandu uz hosts. 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āto komandu ierobežojums

Attālinātās komandas ierobežojums pēc visu makrosu aizstāšanas ir atkarīgs no datubāzes veida un rakstzīmju kopas (rakstzīmju, kas nav ASCII rakstzīmes, glabāšanai nepieciešams vairāk nekā viens baits):

Datubā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 16 MB (ieskaitot beigu atstarpes, kas tiek saīsinātas).
IPMI attālinātās komandas ierobežojums ir atkarīgs no instalētās IPMI bibliotēkas.
Ņemiet vērā, ka datubāzes ierobežojumi attiecas uz visām attālinātajām komandām.

Konfigurācija

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

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

Pēc tam, konfigurējot jaunu darbību sadaļā 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 noklikšķiniet uz Add blokā Operations, Recovery operations vai Update operations.

  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 sadaļā globālie skripti, atlasot Darbības operācija kā to tvērumu.

Piemēram:

sudo /etc/init.d/apache restart 

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

Ņemiet vērā sudo izmantošanu — Zabbix lietotājam pēc noklusējuma nav atļauju restartēt sistēmas pakalpojumus. Tālāk skatiet norādījumus par sudo konfigurēšanu.

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

Attālās komandas Zabbix aģentā tiek izpildītas bez taimauta, izmantojot atslēgu system.run[,nowait], un to izpildes rezultāti netiek pārbaudīti. Zabbix serverī un Zabbix starpniekserverī attālās komandas tiek izpildītas ar taimautu, kas iestatīts TrapperTimeout parametrā zabbix_server.conf vai zabbix_proxy.conf failā, un to izpildes rezultāti tiek pārbaudīti. Papildinformāciju skatiet sadaļā Skripta taimauts.

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 nodrošinātu piekļuvi privileģē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' izpildīt 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 nelokāliem lietotājiem izpildīt komandas. Lai to mainītu, komentējiet requiretty opciju failā /etc/sudoers.

Attālās komandas ar vairākām saskarnēm

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

Attālās komandas var izpildīt, izmantojot SSH un Telnet, izmantojot citu saskarni, nevis Zabbix aģenta saskarni. 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ālās komandas

IPMI attālajā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

Globālo skriptu piemēri, kurus darbību operācijās var izmantot kā attālās komandas.

1. piemērs

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

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

Skripta parametrs Vērtība
Tvērums '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