3 Skripti

Pārskats

Sadaļā Brīdinājumi > Skripti var konfigurēt un uzturēt lietotāja definētus globālos skriptus.

Šī izvēlne ir pieejama tikai lietotājiem ar lietotāja tipu SuperAdmin.

Globālie skripti atkarībā no konfigurētā tvēruma un lietotāja atļaujām ir pieejami izpildei:

Skriptus izpilda Zabbix aģents, Zabbix serveris (starpniekserveris) vai tikai Zabbix serveris. Skatiet arī sadaļu Komandu izpilde.

Attālās komandas pēc noklusējuma 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 izpilda Zabbix aģents uz hosta, kuru uzrauga starpniekserveris.

Neizmantojiet AllowKey=system.run[*], ja vien tas nav nepieciešams, jo tas ļauj 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[*]).

Globālo skriptu izpildi Zabbix serverī var atspējot, servera konfigurācijā iestatot EnableGlobalScripts=0. Jaunas instalācijas, sākot ar Zabbix 7.0, pēc noklusējuma neļauj izpildīt globālos skriptus Zabbix serverī.

Tiek parādīts esošo skriptu saraksts ar to detalizētu informāciju.

Parādītie dati:

Kolonna Apraksts
Nosaukums Skripta nosaukums. Noklikšķinot uz skripta nosaukuma, tiek atvērta skripta konfigurācijas veidlapa.
Tvērums Skripta tvērums - darbības operācija, manuāla darbība ar hostu vai manuāla darbība ar notikumu. Šis iestatījums nosaka, kur skripts ir pieejams - darbības operāciju attālajās komandās, hostu izvēlnē vai notikuma izvēlnē.
Izmantots darbībās Tiek parādītas visas darbības, kurās skripts tiek izmantots, pirms tām norādot šo darbību kopējo skaitu.
Noklikšķinot uz darbības nosaukuma, tiek atvērta darbības konfigurācijas veidlapa. Ja lietotājam nav atļauju darbībai, nosaukums nav noklikšķināms.
Tips Tiek parādīts skripta tips - URL, Webhook, Skripts, SSH, Telnet vai IPMI komanda.
Izpildīt uz Tiek parādīts, vai skripts tiks izpildīts Zabbix aģentā, Zabbix starpniekserverī vai serverī, vai tikai Zabbix serverī.
Komandas Tiek parādītas visas skriptā izpildāmās komandas.
Webhook skriptiem šeit nekas netiek parādīts.
Lietotāju grupa Tiek parādīta lietotāju grupa, kurai skripts ir pieejams (vai Visas, ja tas ir pieejams visām lietotāju grupām).
Hostu grupa Tiek parādīta hostu grupa, kurai skripts ir pieejams (vai Visas, ja tas ir pieejams visām hostu grupām).
Piekļuve hostam Tiek parādīts hostu grupai piešķirtais atļauju līmenis - Lasīšana vai Rakstīšana. Skripta izpildei varēs piekļūt tikai lietotāji ar nepieciešamo atļauju līmeni.

Lai konfigurētu jaunu skriptu, augšējā labajā stūrī noklikšķiniet uz pogas Izveidot skriptu.

Masveida rediģēšanas opcijas

Poga zem saraksta piedāvā vienu masveida rediģēšanas opciju:

  • Dzēst - dzēst skriptus

Lai izmantotu šo opciju, atzīmējiet izvēles rūtiņas pie attiecīgajiem skriptiem un noklikšķiniet uz Dzēst.

Filtra izmantošana

Varat izmantot filtru, lai parādītu tikai tos skriptus, kas jūs interesē. Lai uzlabotu meklēšanas veiktspēju, dati tiek meklēti ar neatrisinātiem makro.

Saite Filtrs ir pieejama virs skriptu saraksta. Ja uz tās noklikšķināsiet, būs pieejams filtrs, kurā varat filtrēt skriptus pēc nosaukuma un tvēruma.

Globāla skripta konfigurēšana

Lai uzlabotu drošību, globālajos skriptos ieteicams izmantot makro funkcijas, nevis vienkāršus makro, jo makro netiek automātiski ekranēti.

Skripta atribūti:

Parametrs Apraksts
Nosaukums Unikāls skripta nosaukums.
Piemēram, Clear /tmp filesystem
Tvērums Skripta tvērums - darbības operācija, manuāla darbība ar hostu vai manuāla darbība ar notikumu. Šis iestatījums nosaka, kur skriptu var izmantot - darbības operāciju attālajās komandās, hosta izvēlnē vai notikuma izvēlnē.
Iestatot tvērumu uz “Darbības operācija”, skripts ir pieejams visiem lietotājiem, kuriem ir piekļuve sadaļai Brīdinājumi > Darbības.
Ja skripts faktiski tiek izmantots darbībā, tā tvērumu nevar mainīt no “darbības operācijas”.
Makro atbalsts
Tvērums ietekmē pieejamo makro diapazonu. Piemēram, ar lietotāju saistītie makro ({USER.*}) tiek atbalstīti skriptos, lai varētu nodot informāciju par lietotāju, kurš palaida skriptu. Tomēr tie netiek atbalstīti, ja skripta tvērums ir darbības operācija, jo darbības operācijas tiek izpildītas automātiski.
Makro {MANUALINPUT} ļauj norādīt manuālu ievadi skripta izpildes laikā. Tas tiek atbalstīts manuālas darbības ar hostu un manuālas darbības ar notikumu skriptos.
Lai noskaidrotu, kuri citi makro tiek atbalstīti, atbalstīto makro tabulā meklējiet “Trigger-based notifications and commands/Trigger-based commands”, “Manual host action scripts” un “Manual event action scripts”. Ņemiet vērā: ja makro var tikt aizstāts ar vērtību, kurā ir atstarpes (piemēram, hosta nosaukums), neaizmirstiet to vajadzības gadījumā ievietot pēdiņās.
Izvēlnes ceļš Vēlamais skripta izvēlnes ceļš. Piemēram, Default vai Default/ skriptu parādīs attiecīgajā direktorijā. Izvēlnes var būt ligzdotas, piemēram, Main menu/Sub menu1/Sub menu2. Piekļūstot skriptiem, izmantojot hosta/notikuma izvēlni uzraudzības sadaļās, tie tiks sakārtoti atbilstoši norādītajiem direktorijiem.
Šis lauks tiek parādīts tikai tad, ja Tvērums ir iestatīts uz “Manuāla darbība ar hostu” vai “Manuāla darbība ar notikumu”.
Tips Noklikšķiniet uz attiecīgās pogas, lai atlasītu skripta tipu:
URL, Webhook, Skripts, SSH, Telnet vai IPMI komanda.
Tips URL ir pieejams tikai tad, ja Tvērums ir iestatīts uz “Manuāla darbība ar hostu” vai “Manuāla darbība ar notikumu”.
Skripta tips: URL
URL Norādiet URL ātrai piekļuvei no hosta izvēlnes vai notikuma izvēlnes.
Makro un pielāgoti lietotāja makro tiek atbalstīti. Makro atbalsts ir atkarīgs no skripta tvēruma (skatiet iepriekš Tvērums).
Izmantojiet makro {MANUALINPUT} šajā laukā, lai skripta izpildes laikā varētu norādīt manuālu ievadi, piemēram:
http://{MANUALINPUT}/zabbix/zabbix.php?action=dashboard.view
Makro vērtības nedrīkst būt kodētas URL formātā.
Atvērt jaunā logā Nosaka, vai URL jāatver jaunā vai tajā pašā pārlūkprogrammas cilnē.
Skripta tips: Webhook
Parametri Norādiet webhook mainīgos kā atribūtu un vērtību pārus.
Skatiet arī: Webhook multivides konfigurācija.
Makro un pielāgoti lietotāja makro tiek atbalstīti parametru vērtībās. Makro atbalsts ir atkarīgs no skripta tvēruma (skatiet iepriekš Tvērums).
Skripts Ievadiet JavaScript kodu modālajā redaktorā, kas tiek atvērts, noklikšķinot parametra laukā vai uz zīmuļa ikonas blakus tam.
Makro atbalsts ir atkarīgs no skripta tvēruma (skatiet iepriekš Tvērums).
Skatiet arī: Webhook multivides konfigurācija, Papildu Javascript objekti.
Noildze JavaScript izpildes noildze (1-60 s, pēc noklusējuma 30 s).
Tiek atbalstīti laika sufiksi (piemēram, 30s, 1m).
Skripta tips: Skripts
Izpildīt uz Noklikšķiniet uz attiecīgās pogas, lai izpildītu čaulas skriptu:
Zabbix aģents - skriptu izpildīs Zabbix aģents (ja sistēmas.run vienums ir atļauts) uz hosta
Zabbix starpniekserveris vai serveris - skriptu izpildīs Zabbix starpniekserveris vai serveris atkarībā no tā, vai hostu uzrauga starpniekserveris vai serveris.
Tas tiks izpildīts starpniekserverī, ja to iespējo EnableRemoteCommands.
Tas tiks izpildīts serverī, ja globālie skripti ir iespējoti ar servera parametru EnableGlobalScripts.
Zabbix serveris - skriptu izpildīs tikai Zabbix serveris.
Šī opcija nebūs pieejama, ja globālie skripti ir atspējoti ar servera parametru EnableGlobalScripts.
Komandas Ievadiet pilnu ceļu uz komandām, kas jāizpilda skripta ietvaros.
Makro atbalsts ir atkarīgs no skripta tvēruma (skatiet iepriekš Tvērums). Tiek atbalstīti pielāgoti lietotāja makro.
Skripta tips: SSH
Autentifikācijas metode Atlasiet autentifikācijas metodi - paroli vai publisko atslēgu.
Lietotājvārds Ievadiet lietotājvārdu.
Parole Ievadiet paroli.
Šis lauks ir pieejams, ja kā autentifikācijas metode ir atlasīta “Parole”.
Publiskās atslēgas fails Ievadiet ceļu uz publiskās atslēgas failu.
Šis lauks ir pieejams, ja kā autentifikācijas metode ir atlasīta “Publiskā atslēga”.
Privātās atslēgas fails Ievadiet ceļu uz privātās atslēgas failu.
Šis lauks ir pieejams, ja kā autentifikācijas metode ir atlasīta “Publiskā atslēga”.
Parole Ievadiet paroles frāzi.
Šis lauks ir pieejams, ja kā autentifikācijas metode ir atlasīta “Publiskā atslēga”.
Ports Ievadiet attālā SSH pakalpojuma portu mērķa hostā, ar kuru izveidos savienojumu Zabbix.
Komandas Ievadiet komandas.
Makro atbalsts ir atkarīgs no skripta tvēruma (skatiet iepriekš Tvērums). Tiek atbalstīti pielāgoti lietotāja makro.
Skripta tips: Telnet
Lietotājvārds Ievadiet lietotājvārdu.
Parole Ievadiet paroli.
Ports Ievadiet attālā Telnet pakalpojuma portu mērķa hostā, ar kuru izveidos savienojumu Zabbix.
Komandas Ievadiet komandas.
Makro atbalsts ir atkarīgs no skripta tvēruma (skatiet iepriekš Tvērums). Tiek atbalstīti pielāgoti lietotāja makro.
Skripta tips: IPMI
Komanda Ievadiet IPMI komandu.
Makro atbalsts ir atkarīgs no skripta tvēruma (skatiet iepriekš Tvērums). Tiek atbalstīti pielāgoti lietotāja makro.
Apraksts Ievadiet skripta aprakstu.
Hostu grupa Atlasiet hostu grupu, kurai skripts būs pieejams (vai Visas, lai skripts būtu pieejams visām hostu grupām).
Lietotāju grupa Atlasiet lietotāju grupu, kurai skripts būs pieejams (vai Visas, lai skripts būtu pieejams visām lietotāju grupām).
Šis lauks tiek parādīts tikai tad, ja Tvērums ir iestatīts uz “Manuāla darbība ar hostu” vai “Manuāla darbība ar notikumu”.
Nepieciešamās atļaujas hostam Atlasiet atļauju līmeni hostu grupai - Lasīšana vai Rakstīšana. Skripta izpildei varēs piekļūt tikai lietotāji ar nepieciešamo atļauju līmeni.
Šis lauks tiek parādīts tikai tad, ja Tvērums ir iestatīts uz “Manuāla darbība ar hostu” vai “Manuāla darbība ar notikumu”.
Papildu konfigurācija Noklikšķiniet uz galvenes Papildu konfigurācija, lai parādītu papildu konfigurācijas opcijas.
Šis lauks tiek parādīts tikai tad, ja Tvērums ir iestatīts uz “Manuāla darbība ar hostu” vai “Manuāla darbība ar notikumu”.

Papildu konfigurācija

Papildu konfigurācijas opcijas ir pieejamas izvēršamā sadaļā Papildu konfigurācija:

Parametrs Apraksts
Iespējot lietotāja ievadi Atzīmējiet izvēles rūtiņu, lai pirms skripta izpildes iespējotu manuālu lietotāja ievadi.
Manuālā lietotāja ievade aizstās makro {MANUALINPUT} vērtību skriptā.
Skatiet arī: Manuāla lietotāja ievade.
Ievades uzvedne Ievadiet pielāgotu tekstu, kas pieprasa pielāgotu lietotāja ievadi. Šis teksts tiks parādīts virs ievades lauka uznirstošajā logā Manuāla ievade.
Lai skatītu uznirstošā loga Manuāla ievade priekšskatījumu, noklikšķiniet uz Testēt lietotāja ievadi. Priekšskatījums ļauj arī pārbaudīt, vai ievades virkne atbilst ievades validācijas noteikumam (skatiet tālāk norādītos parametrus).
Makro un lietotāja makro atbalsts ir atkarīgs no skripta tvēruma (skatiet Tvērums vispārīgajos skripta konfigurācijas parametros).
Ievades tips Atlasiet manuālās ievades tipu:
Virkne - viena virkne;
Nolaižamais saraksts - vērtība tiek atlasīta no vairākām nolaižamā saraksta opcijām.
Nolaižamā saraksta opcijas Ievadiet unikālas vērtības lietotāja ievades nolaižamajam sarakstam, atdalot tās ar komatiem.
Lai nolaižamajā sarakstā iekļautu tukšu opciju, saraksta sākumā, vidū vai beigās pievienojiet papildu komatu.
Šis lauks tiek parādīts tikai tad, ja Ievades tips ir iestatīts uz “Nolaižamais saraksts”.
Noklusējuma ievades virkne Ievadiet lietotāja ievades noklusējuma virkni (vai atstājiet lauku tukšu).
Šis lauks tiks validēts, izmantojot regulāro izteiksmi, kas norādīta laukā Ievades validācijas noteikums.
Šeit ievadītā vērtība pēc noklusējuma tiks parādīta uznirstošajā logā Manuāla ievade.
Šis lauks tiek parādīts tikai tad, ja Ievades tips ir iestatīts uz “Virkne”.
Ievades validācijas noteikums Ievadiet regulāro izteiksmi, lai validētu lietotāja ievades virkni.
Tiek atbalstītas globālās regulārās izteiksmes.
Šis lauks tiek parādīts tikai tad, ja Ievades tips ir iestatīts uz “Virkne”.
Iespējot apstiprināšanu Atzīmējiet izvēles rūtiņu, lai pirms skripta izpildes parādītu apstiprinājuma ziņojumu. Šī funkcija var būt īpaši noderīga potenciāli bīstamām darbībām (piemēram, restartēšanas skriptam) vai darbībām, kuru izpilde var aizņemt ilgu laiku.
Apstiprinājuma teksts Ievadiet pielāgotu apstiprinājuma tekstu apstiprinājuma uznirstošajam logam, kas iespējots ar iepriekš norādīto izvēles rūtiņu (piemēram, Attālā sistēma tiks restartēta. Vai tiešām vēlaties turpināt?). Lai skatītu, kā teksts izskatīsies, blakus laukam noklikšķiniet uz Testēt apstiprinājumu.
Tiek atbalstīti makro un pielāgoti lietotāja makro.
Piezīme: testējot apstiprinājuma ziņojumu, makro netiks izvērsti.

Ja ir konfigurēta gan manuāla lietotāja ievade, gan apstiprinājuma ziņojums, tie tiks parādīti secīgos uznirstošajos logos.

Manuāla lietotāja ievade

Manuāla lietotāja ievade ļauj katrā skripta izpildes reizē norādīt pielāgotu parametru. Tādējādi nav nepieciešams izveidot vairākus līdzīgus lietotāja skriptus, kas atšķiras tikai ar vienu parametru.

Piemēram, skripta izpildes laikā varat norādīt citu veselu skaitli vai citu URL adresi.

Lai iespējotu manuālu lietotāja ievadi:

  • izmantojiet makro {MANUALINPUT} skriptā (komandās, skriptā vai skripta parametrā), kur nepieciešams, vai URL skriptu URL laukā;
  • papildu skripta konfigurācijā iespējojiet manuālu lietotāja ievadi un konfigurējiet ievades opcijas.

Ja lietotāja ievade ir iespējota, pirms skripta izpildes lietotājam tiks parādīts uznirstošais logs Manuāla ievade, kurā jānorāda pielāgota vērtība. Norādītā vērtība skriptā aizstās {MANUALINPUT}.

Atkarībā no konfigurācijas lietotājam tiks lūgts ievadīt virknes vērtību:

Vai arī atlasīt vērtību nolaižamajā sarakstā ar iepriekš noteiktām opcijām:

Manuāla lietotāja ievade ir pieejama tikai skriptiem, kuru tvērums ir “Manuāla darbība ar hostu” vai “Manuāla darbība ar notikumu”.

Skripta izpilde un rezultāts

Zabbix servera izpildītie skripti tiek izpildīti tādā secībā, kā aprakstīts komandu izpildes lapā.

Skripta rezultāts tiek parādīts uznirstošajā logā, kas tiek atvērts pēc skripta izpildes. Skripta atgrieztā vērtība ir standarta izvade:

  • Ja skripts tiek pabeigts veiksmīgi (izejas kods 0), atgrieztā vērtība ir ierobežota līdz 16 MB (ieskaitot beigu atstarpes, kas tiek saīsinātas).
  • Ja skripts tiek pabeigts ar kļūdu (izejas kods, kas nav nulle), atgrieztā vērtība ir standarta kļūdas izvade, kas ierobežota līdz 2 KB.

Zabbix pēc noklusējuma nesaglabā paplašinātu skripta izvadi. Lai saglabātu pilnu izvades informāciju, varat ieviest reģistrēšanu pašā skriptā (piemēram, novirzīt izvadi uz lokālu žurnālfailu).

Ņemiet vērā, ka uz skriptiem, kurus izpilda Zabbix serveris vai Zabbix starpniekserveris, attiecas arī datubāzes ierobežojumi.

Tālāk ir sniegts skripta un rezultāta loga piemērs:

uname -v
/tmp/non_existing_script.sh
echo "This script was started by {USER.USERNAME}"

Skripta rezultātā pats skripts netiek parādīts.

Skripta noildze Zabbix aģentā

Var rasties situācija, kad skripta izpildes laikā iestājas noildze.

Tālāk skatiet piemēru skriptam, kas darbojas Zabbix aģentā, un rezultāta logu:

sleep 5
df -h

Kļūdas ziņojums šajā gadījumā ir šāds:

Timeout while executing a shell script.

Lai izvairītos no šādām situācijām, ieteicams optimizēt pašu skriptu (iepriekš minētajā piemērā — "5"), nevis pielāgot Timeout parametru Zabbix aģenta konfigurācijā un Zabbix servera konfigurācijā.

Ja Timeout parametrs ir mainīts Zabbix aģenta konfigurācijā, tiks parādīts šāds kļūdas ziņojums:

Get value from agent failed: ZBX_TCP_READ() timed out.

Tas nozīmē, ka izmaiņas ir veiktas Zabbix aģenta konfigurācijā, taču Timeout parametrs ir jāmaina arī Zabbix servera konfigurācijā.

Skripta izpildes noildze aktīvajiem aģentiem

Skriptus var izpildīt tikai aģentiem, kas darbojas aktīvajā režīmā. Kad skripta izpildi aktivizē darbības operācija vai manuāla skripta izpilde, komanda tiek iekļauta aktīvo pārbaužu konfigurācijā un izpildīta, tiklīdz aktīvais aģents to saņem.

Manuālie skripti aktīvajam aģentam tiek nosūtīti kopā ar servera/starpniekservera skripta izpildes noildzi. Lūdzu, palieliniet noklusējuma servera/starpniekservera skripta izpildes noildzi. Noildzei jābūt lielākai par aktīvo pārbaužu atsvaidzināšanas biežumu; pretējā gadījumā noildze iestājas, pirms aktīvais aģents saņem skriptu un spēj atgriezt rezultātu.

Skripta noildze uz Zabbix servera/starpniekservera

Skatiet piemēru skriptam, kas darbojas uz Zabbix servera, un rezultāta logu zemāk:

sleep 11
df -h

Ieteicams arī optimizēt pašu skriptu (nevis pielāgot TrapperTimeout parametru atbilstošai vērtībai (mūsu gadījumā, > 11), modificējot Zabbix servera konfigurāciju).