3 Skripti

Pārskats

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

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

  • no hosts 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:

  • 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 ir nepieciešams izpildīt attālinātās komandas 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, начиная ar 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 hosts 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 kopējo šo darbību 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 hosts grupa, kurai skripts ir pieejams (vai All visām hosts grupām).
Host access Tiek parādīts hosts 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, kļū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, nevis vienkāršus makro, 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 hosts izvēlnes vai attiecīgi no notikumu 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 prom 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 hosts darbības un manuālas notikuma darbības skriptos.
Lai uzzinātu, kuri citi makro tiek atbalstīti, meklējiet tabulā atbalstītie makro ierakstus 'Trigger-based notifications and commands/Trigger-based commands', 'Manual host action scripts' un 'Manual event action scripts'. Ņemiet vērā: ja makro var atrisināties uz vērtību ar atstarpēm (piemēram, hosts 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 hosts/notikumu 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 izvēlēts 'Manual host action' vai 'Manual event action'.
Type Noklikšķiniet uz attiecīgās pogas, lai izvēlētos skripta tipu:
URL, Webhook, Script, SSH, Telnet vai IPMI komandu.
Tips URL ir pieejams tikai tad, ja kā Scope ir izvēlēts 'Manual host action' vai 'Manual event action'.
Script type: URL
URL Norādiet URL ātrai piekļuvei no hosts izvēlnes vai notikumu 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 tiek atvērts, 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 izpildītu č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 hosts tiek uzraudzīts ar starpniekserveri vai serveri.
To izpildīs starpniekserveris, ja tas ir iespējots ar EnableRemoteCommands.
To izpildīs serveris, 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.
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 Izvēlieties 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 izvēlēta 'Password'.
Public key file Ievadiet publiskās atslēgas faila ceļu.
Šis lauks ir pieejams, ja kā autentifikācijas metode ir izvēlē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 izvēlēta 'Public key'.
Passphrase Ievadiet piekļuves frāzi.
Šis lauks ir pieejams, ja kā autentifikācijas metode ir izvēlē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 hosts grupu, kurai skripts būs pieejams (vai All visām hosts 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 izvēlēts 'Manual host action' vai 'Manual event action'.
Required host permissions Atlasiet hosts 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 izvēlē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 izvēlēts 'Manual host action' vai 'Manual event action'.

Papildu konfigurācija

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

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 skriptā aizstās {MANUALINPUT} makro vērtību.
Skatiet arī: Manuāla lietotāja ievade.
Ievades uzvedne Ievadiet pielāgotu tekstu, kas aicina ievadīt pielāgotu lietotāja ievadi. Šis teksts tiks parādīts virs ievades lauka uznirstošajā logā Manuālā ievade.
Lai skatītu uznirstošā loga Manuālā ievade priekšskatījumu, noklikšķiniet uz Testēt lietotāja ievadi. 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 Tvērums vispārīgajos skripta konfigurācijas parametros).
Ievades tips 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.
Nolaižamā saraksta opcijas 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ā Ievades tips ir atlasīts 'Dropdown'.
Noklusējuma ievades virkne Ievadiet noklusējuma virkni lietotāja ievadei (vai neko).
Š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ālā ievade.
Šis lauks tiek parādīts tikai tad, ja kā Ievades tips ir atlasīts 'String'.
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 kā Ievades tips ir atlasīts 'String'.
Iespējot apstiprinājumu 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.
Apstiprinājuma teksts Ievadiet pielāgotu apstiprinājuma tekstu apstiprinājuma uznirstošajam logam, kas tiek iespējots ar iepriekš norādīto izvēles rūtiņu (piemēram, Attālinātā sistēma tiks pārstartēta. Vai esat pārliecināts?). Lai redzētu, kā teksts izskatīsies, noklikšķiniet uz Testēt apstiprinājumu 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 palaiž Zabbix serveris, tiek izpildīti secībā, kas aprakstīta komandu izpildes lapā.

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

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

Pēc noklusējuma Zabbix 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 skriptiem, kas tiek izpildīti vai nu uz Zabbix servera, vai Zabbix starpniekservera, ir spēkā arī datu bāzes ierobežojumi.

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

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

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

Skripta noildze Zabbix aģentā

Var rasties situācija, kad, izpildot skriptu, iestājas noildze.

Tālāk redzams piemērs ar skriptu, kas darbojas uz Zabbix aģents, un rezultāta logu:

sleep 5
df -h

Šādā gadījumā kļūdas ziņojums ir šāds:

Noildze, izpildot čaulas skriptu.

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

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

Neizdevās iegūt vērtību no aģents: ZBX_TCP_READ() noildze.

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

Skripta taimauts aktīvajiem aģentiem

Skriptus ir iespējams izpildīt tikai uz aģentiem, kas darbojas aktīvajā režīmā. Kad skripta izpildi iedarbina darbība operation 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 taimautu skripta izpildei. Lūdzu, palieliniet noklusējuma serveris/starpniekserveris taimautu skripta izpildei. Taimautam jābūt lielākam par aktīvās pārbaudes atsvaidzināšanas biežumu, pretējā gadījumā taimauts tiek pārsniegts, pirms aktīvais aģents saņem skriptu un var atgriezt rezultātu.

Skripta noildze Zabbix serverī/starpniekserverī

Skatiet zemāk piemēru par skriptu, kas darbojas Zabbix serverī, un rezultāta logu:

sleep 11
df -h

Tāpat ir ieteicams 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).