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 uz uzraudzītā hosta, iestājoties kādam nosacījumam.

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

Acīmredzamākajos šīs funkcijas lietojumos jūs varat:

  • Automātiski restartēt kādu lietojumprogrammu (tīmekļa serveri, starpprogrammatūru, CRM), ja tā neatbild
  • Izmantot IPMI 'reboot' komandu, lai pārstartētu attālinātu serveri, ja tas neatbild uz pieprasījumiem
  • Automātiski atbrīvot diska vietu (noņemot vecākus failus, iztīrot /tmp), ja pietrūkst diska vietas
  • Migrēt VM no viena fiziska servera 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 nosūtīšanas konfigurēšanai, vienīgā atšķirība ir tā, ka Zabbix izpildīs komandu ziņojuma nosūtīšanas vietā.

Attālinātās komandas var izpildīt Zabbix serveris, starpniekserveris vai aģents. Attālinātās komandas uz Zabbix aģenta var izpildīt tieši Zabbix serveris 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, veicot:

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

Zabbix servera izpildītās attālinātās komandas tiek palaistas, kā aprakstīts Komandu izpilde, tostarp pārbaudot izejas kodu.

Attālinātās komandas tiek izpildītas pat tad, ja mērķa hosts ir tehniskajā apkopē.

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ālās komandas, kas tiek izpildītas Zabbix aģents (pielāgoti skripti), vispirms ir jāiespējo aģents konfigurācijā.

Pārliecinieties, ka parametrs AllowKey=system.run[<command>,*] ir pievienots katrai atļautajai komandai aģents konfigurācijā, lai atļautu konkrētu komandu nowait režīmā. Ja maināt šo parametru, restartējiet aģents 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, ka darbība tiek aktivizēta, ja rodas jebkuras nopietnības disaster problēmas ar kādu no Apache lietotnēm.

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

  1. No nolaižamā saraksta Operation atlasiet vienu 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