3 Skripti

Pārskats

Sadaļā Alerts > Scripts var konfigurēt un uzturēt lietotāja definētus globālos skriptus.

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

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

  • no hosta izvēlnes dažādās lietotāja saskarnes vietās (Dashboard, Problems, Latest data, Maps u.c.)
  • no notikuma izvēlnes
  • var tikt palaisti kā darbības operācija

Skripti tiek izpildīti uz Zabbix aģents, Zabbix serveris (starpniekserveris) vai tikai Zabbix serveris Skatiet arī Komandu izpilde.

Gan Zabbix aģents, gan Zabbix starpniekserveris attālinātie skripti pēc noklusējuma ir atspējoti. Tos var iespējot šādi:

  • Attālinātām komandām, kas tiek izpildītas uz Zabbix aģents:
    • pievienojot parametru AllowKey=system.run[<command>,*] katrai atļautajai komandai aģenta konfigurācijā, * apzīmē wait un nowait režīmu;
  • Attālinātām komandām, kas tiek izpildītas uz Zabbix starpniekserveris:
    • Brīdinājums: nav nepieciešams iespējot attālinātās komandas uz Zabbix starpniekserveris, ja attālinātās komandas tiek izpildītas uz Zabbix aģents, ko uzrauga Zabbix starpniekserveris. Tomēr, ja attālinātās komandas ir jāizpilda uz Zabbix starpniekserveris, starpniekservera konfigurācijā iestatiet parametru EnableRemoteCommands uz '1'.

Globālo skriptu izpildi uz Zabbix serveris var atspējot, servera konfigurācijā iestatot EnableGlobalScripts=0 servera konfigurācija. Jaunām instalācijām kopš Zabbix 7.0 globālo skriptu izpilde uz Zabbix serveris pēc noklusējuma ir atspējota.

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

Parādītie dati:

Column Description
Name Skripta nosaukums. Noklikšķinot uz skripta nosaukuma, tiek atvērta skripta konfigurācijas forma.
Scope Skripta tvērums - darbības operācija, manuāla hosta darbība vai manuāla notikuma darbība. Šis iestatījums nosaka, kur skripts ir pieejams.
Used in actions 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 forma. Ja lietotājam nav atļauju šai darbībai, nosaukums nav klikšķināms.
Type Tiek parādīts skripta tips - URL, Webhook, Script, SSH, Telnet vai IPMI komanda.
Execute on Tiek parādīts, vai skripts tiks izpildīts uz Zabbix aģents, Zabbix starpniekserveris vai serveris, vai tikai uz Zabbix serveris.
Commands Tiek parādītas visas komandas, kas jāizpilda skripta ietvaros.
Webhookiem šeit nekas netiek parādīts.
User group Tiek parādīta lietotāju grupa, kurai skripts ir pieejams (vai All visām lietotāju grupām).
Host group Tiek parādīta hostu grupa, kurai skripts ir pieejams (vai All visām hostu grupām).
Host access Tiek parādīts hostu grupas atļauju līmenis - Read vai Write. Tikai lietotājiem ar nepieciešamo atļauju līmeni būs piekļuve skripta izpildei.

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

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

Drošības uzlabošanai globālajos skriptos ieteicams izmantot makro funkcijas vienkāršu makro vietā, jo makro netiek automātiski atbilstoši ekrānēti.

Skripta atribūti:

Parameter Description
Name Unikāls skripta nosaukums.
Piem., Clear /tmp filesystem
Scope Skripta tvērums - darbības operācija, manuāla hosts darbība vai manuāla notikuma darbība. Šis iestatījums nosaka, kur skriptu var izmantot - attālinātās komandās darbības operācijās, no hosta izvēlnes vai attiecīgi no notikuma izvēlnes.
Iestatot tvērumu uz "Action operation", skripts būs pieejams visiem lietotājiem ar piekļuvi Alerts > Actions.
Ja skripts faktiski tiek izmantots darbībā, tā tvērumu vairs nevar mainīt no "action operation".
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 action operation, jo darbības operācijas tiek izpildītas automātiski.
{MANUALINPUT} makro ļauj norādīt manuālu ievadi skripta izpildes laikā. Tas tiek atbalstīts manuālas hosta darbības un manuālas notikuma darbības skriptos.
Lai uzzinātu, kuri citi makro tiek atbalstīti, meklējiet "Trigger-based notifications and commands/Trigger-based commands", "Manual host action scripts" un "Manual event action scripts" atbalstīto makro tabulā. Ņemiet vērā: ja makro var atrisināties līdz vērtībai ar atstarpēm (piemēram, hosta nosaukums), neaizmirstiet to attiecīgi ievietot pēdiņās.
Menu path Vēlamais izvēlnes ceļš uz skriptu. Piemēram, Default vai Default/ parādīs skriptu attiecīgajā direktorijā. Izvēlnes var būt ligzdotas, piem., Main menu/Sub menu1/Sub menu2. Piekļūstot skriptiem caur hosta/notikuma izvēlni uzraudzības sadaļās, tie tiks sakārtoti atbilstoši norādītajām direktorijām.
Šis lauks tiek rādīts tikai tad, ja kā Scope ir atlasīts "Manual host action" vai "Manual event action".
Type Noklikšķiniet uz attiecīgās pogas, lai atlasītu skripta tipu:
URL, Webhook, Script, SSH, Telnet vai IPMI komandu.
Tips URL ir pieejams tikai tad, ja kā Scope ir atlasīts "Manual host action" vai "Manual event action".
Script type: URL
URL Norādiet URL ātrai piekļuvei no hosta izvēlnes vai notikuma izvēlnes.
Tiek atbalstīti makro un pielāgoti lietotāja makro. Makro atbalsts ir atkarīgs no skripta tvēruma (skatiet Scope iepriekš).
Izmantojiet {MANUALINPUT} makro š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 URL kodētas.
Open in new window Nosaka, vai URL jāatver jaunā vai tajā pašā pārlūkprogrammas cilnē.
Script type: Webhook
Parameters Norādiet webhook mainīgos kā atribūta-vērtības pārus.
Skatiet arī: Webhook multivides konfigurāciju.
Parametru vērtībās tiek atbalstīti makro un pielāgoti lietotāja makro. Makro atbalsts ir atkarīgs no skripta tvēruma (skatiet Scope iepriekš).
Script Ievadiet JavaScript kodu modālajā redaktorā, kas atveras, noklikšķinot parametra laukā vai uz zīmuļa ikonas tam blakus.
Makro atbalsts ir atkarīgs no skripta tvēruma (skatiet Scope iepriekš).
Skatiet arī: Webhook multivides konfigurāciju, Papildu Javascript objekti.
Timeout JavaScript izpildes noildze (1-60 s, noklusējums 30 s).
Tiek atbalstīti laika sufiksi, piem., 30s, 1m.
Script type: Script
Execute on Noklikšķiniet uz attiecīgās pogas, lai palaistu čaulas skriptu uz:
Zabbix aģents - skriptu izpildīs Zabbix aģents (ja system.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.
To izpildīs starpniekserverī, ja tas ir iespējots ar EnableRemoteCommands.
To izpildīs serverī, ja globālie skripti ir iespējoti ar EnableGlobalScripts servera parametru.
Zabbix serveris - skriptu izpildīs tikai Zabbix serveris.
Šī opcija nebūs pieejama, ja globālie skripti ir atspējoti ar EnableGlobalScripts servera parametru.
Commands Ievadiet pilnu izpildāmo komandu ceļu skripta ietvaros.
Makro atbalsts ir atkarīgs no skripta tvēruma (skatiet Scope iepriekš). Tiek atbalstīti pielāgoti lietotāja makro.
Script type: SSH
Authentication method Atlasiet autentifikācijas metodi - parole vai publiskā atslēga.
Username Ievadiet lietotājvārdu.
Password Ievadiet paroli.
Šis lauks ir pieejams, ja kā autentifikācijas metode ir atlasīta "Password".
Public key file Ievadiet publiskās atslēgas faila ceļu.
Šis lauks ir pieejams, ja kā autentifikācijas metode ir atlasīta "Public key".
Private key file Ievadiet privātās atslēgas faila ceļu.
Šis lauks ir pieejams, ja kā autentifikācijas metode ir atlasīta "Public key".
Passphrase Ievadiet piekļuves frāzi.
Šis lauks ir pieejams, ja kā autentifikācijas metode ir atlasīta "Public key".
Port Ievadiet attālā SSH pakalpojuma portu mērķa hostā, ar kuru Zabbix izveidos savienojumu.
Commands Ievadiet komandas.
Makro atbalsts ir atkarīgs no skripta tvēruma (skatiet Scope iepriekš). Tiek atbalstīti pielāgoti lietotāja makro.
Script type: Telnet
Username Ievadiet lietotājvārdu.
Password Ievadiet paroli.
Port Ievadiet attālā Telnet pakalpojuma portu mērķa hostā, ar kuru Zabbix izveidos savienojumu.
Commands Ievadiet komandas.
Makro atbalsts ir atkarīgs no skripta tvēruma (skatiet Scope iepriekš). Tiek atbalstīti pielāgoti lietotāja makro.
Script type: IPMI
Command Ievadiet IPMI komandu.
Makro atbalsts ir atkarīgs no skripta tvēruma (skatiet Scope iepriekš). Tiek atbalstīti pielāgoti lietotāja makro.
Description Ievadiet skripta aprakstu.
Host group Atlasiet hostu grupu, kurai skripts būs pieejams (vai All visām hostu grupām).
User group Atlasiet lietotāju grupu, kurai skripts būs pieejams (vai All visām lietotāju grupām).
Šis lauks tiek rādīts tikai tad, ja kā Scope ir atlasīts "Manual host action" vai "Manual event action".
Required host permissions Atlasiet hostu grupas atļauju līmeni - Read vai Write. Tikai lietotājiem ar nepieciešamo atļauju līmeni būs piekļuve skripta izpildei.
Šis lauks tiek rādīts tikai tad, ja kā Scope ir atlasīts "Manual host action" vai "Manual event action".
Advanced configuration Noklikšķiniet uz Advanced configuration virsraksta, lai parādītu papildu konfigurācijas opcijas.
Šis lauks tiek rādīts tikai tad, ja kā Scope ir atlasīts "Manual host action" vai "Manual event action".

Papildu konfigurācija

Papildu konfigurācijas opcijas ir pieejamas salokāmā Papildu konfigurācija sadaļā:

Parameter Description
Enable user input Atzīmējiet izvēles rūtiņu, lai pirms skripta izpildes iespējotu manuālu lietotāja ievadi.
Manuālā lietotāja ievade skriptā aizstās {MANUALINPUT} makro vērtību.
Skatiet arī: Manuāla lietotāja ievade.
Input prompt Ievadiet pielāgotu tekstu, kas aicina ievadīt lietotāja datus. Šis teksts tiks parādīts virs ievades lauka uznirstošajā logā Manual input.
Lai skatītu uznirstošā loga Manual input priekšskatījumu, noklikšķiniet uz Test user input. Priekšskatījums arī ļauj 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 Scope vispārīgajos skripta konfigurācijas parametros).
Input type Atlasiet manuālās ievades tipu:
String - viena virkne;
Dropdown - vērtība tiek atlasīta no vairākām nolaižamā saraksta opcijām.
Dropdown options Ievadiet unikālas vērtības lietotāja ievades nolaižamajam sarakstam ar komatiem atdalītā sarakstā.
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 kā Input type ir atlasīts 'Dropdown'.
Default input string Ievadiet noklusējuma virkni lietotāja ievadei (vai neko).
Šis lauks tiks validēts, izmantojot regulāro izteiksmi, kas norādīta laukā Input validation rule.
Šeit ievadītā vērtība pēc noklusējuma tiks parādīta uznirstošajā logā Manual input.
Šis lauks tiek parādīts tikai tad, ja kā Input type ir atlasīts 'String'.
Input validation rule 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 kā Input type ir atlasīts 'String'.
Enable confirmation 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, pārstartēšanas skriptam) vai darbībām, kas var aizņemt ilgu laiku.
Confirmation text Ievadiet pielāgotu apstiprinājuma tekstu apstiprinājuma uznirstošajam logam, kas tiek iespējots ar iepriekš minēto izvēles rūtiņu (piemēram, Remote system will be rebooted. Are you sure?). Lai redzētu, kā teksts izskatīsies, noklikšķiniet uz Test confirmation blakus laukam.
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 norādīt pielāgotu parametru katrā skripta izpildes reizē. Tas novērš nepieciešamību izveidot vairākus līdzīgus lietotāja skriptus, kas atšķiras tikai ar vienu parametru.

Piemēram, skripta izpildes laikā var būt nepieciešams norādīt citu vesela skaitļa vērtību vai citu URL adresi.

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

  • izmantojiet makrosu {MANUALINPUT} skriptā (komandās, skriptā, skripta parametrā), kur tas ir nepieciešams; vai URL skriptu URL laukā;
  • paplašinātajā 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 Manual input, kurā būs 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 atlasīt vērtību no nolaižamā saraksta ar iepriekš noteiktām opcijām:

Manuāla lietotāja ievade ir pieejama tikai skriptiem, kuru tvērums ir 'Manual host action' vai 'Manual event action'.

Skripta izpilde un rezultāts

Skripti, ko izpilda Zabbix serveris, tiek izpildīti tādā secībā, kā aprakstīts komandas izpildes lapā.

Skripta rezultāts tiek parādīts uznirstošā 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 beidzas ar kļūdu (ne-nulle izejas kods), atgrieztā vērtība ir standarta kļūda, kas ierobežota līdz 2 KB.

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

Ņemiet vērā, ka skriptiem, kas tiek izpildīti gan Zabbix serverī, gan Zabbix starpniekserverī, tiek piemēroti 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 "Šo skriptu sāka {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 noildze aktīvajiem aģentiem

Ir iespējams izpildīt skriptus tikai uz aģentiem, kas darbojas aktīvajā režīmā. Kad skripta izpildi ierosina darbības operācija vai manuāla skripta izpilde, komanda tiek iekļauta aktīvās pārbaudes konfigurācijā un izpildīta, tiklīdz aktīvais aģents to saņem.

Manuālie skripti tiek nosūtīti aktīvajam aģentam kopā ar servera/starpniekservera skripta izpildes noildzi. Lūdzu, palieliniet noklusējuma serveris/starpniekserveris noildzi skripta izpildei. Noildzei jābūt lielākai par aktīvās pārbaudes atsvaidzināšanas biežumu, pretējā gadījumā noildze tiek pārsniegta, 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).