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 makro atrisināšanas ir atkarīgs no datubāzes veida un rakstzīmju kopas (ne-ASCII rakstzīmēm glabāšanai ir nepieciešams vairāk nekā viens baits):

Database Limit in characters Limit in bytes
MySQL 65535 65535
Oracle Database 2048 4000
PostgreSQL 65535 not limited
SQLite (only Zabbix proxy) 65535 not limited

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 balstīts uz instalēto IPMI bibliotēku. Ņ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 uz Zabbix aģents (pielāgoti skripti), vispirms ir jāiespējo aģents konfigurācijā.

Pārliecinieties, ka aģents konfigurācijā katrai atļautajai komandai ir pievienots parametrs AllowKey=system.run[<command>,\*], lai atļautu konkrētu komandu ar nowait režīmu. 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 nopietnas problēmas ar vienu no Apache lietotnēm.

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

  1. Nolaižamajā sarakstā 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.

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 Zabbix agent pogas pie Execute on).

Ņemiet vērā sudo lietojumu - Zabbix lietotājam pēc noklusējuma nav tiesību restartēt sistēmas pakalpojumus. Skatiet tālāk padomus par to, 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ācijai skatiet 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