3 Skripti
Pārskats
Sadaļā Brīdinājumi > Skripti var konfigurēt un uzturēt lietotāja definētus globālos skriptus.
Globālie skripti atkarībā no konfigurētās darbības jomas un arī lietotāja atļaujām ir pieejami izpildei:
- no hosta izvēlnes dažādās lietotāja saskarnes vietās (Panelis, Problēmas, Jaunākie dati, Kartes u.c.)
- no notikuma izvēlnes
- var tikt palaisti kā darbības operācija
Skripti tiek izpildīti uz Zabbix aģenta, Zabbix servera (starpniekservera) vai tikai uz Zabbix servera.
Skatiet arī Komandu izpilde.
Gan Zabbix aģentā, gan Zabbix starpniekserverī 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ģenta:
- katrai atļautajai komandai aģenta konfigurācijā pievienojot parametru AllowKey=system.run[<command>,*], kur * apzīmē wait un nowait režīmu;
- Attālinātām komandām, kas tiek izpildītas uz Zabbix starpniekservera:
- Brīdinājums: Nav nepieciešams iespējot attālinātās komandas uz Zabbix starpniekservera, ja attālinātās komandas tiek izpildītas uz Zabbix aģenta, kuru uzrauga Zabbix starpniekserveris. Tomēr, ja ir nepieciešams izpildīt attālinātās komandas uz Zabbix starpniekservera, iestatiet EnableRemoteCommands parametru uz '1' starpniekservera konfigurācijā.
Globālo skriptu izpildi uz Zabbix servera var atspējot, servera konfigurācijā iestatot EnableGlobalScripts=0.
Jaunām instalācijām, sākot ar Zabbix 7.0, globālo skriptu izpilde uz Zabbix servera pēc noklusējuma ir atspējota.
Tiek parādīts esošo skriptu saraksts ar to detalizēto informāciju.

Parādītie dati:
| Kolonna | Apraksts |
|---|---|
| Nosaukums | Skripta nosaukums. Noklikšķinot uz skripta nosaukuma, tiek atvērta skripta konfigurācijas forma. |
| Darbības joma | Skripta darbības joma — darbības operācija, manuāla hosta darbība vai manuāla notikuma darbība. Šis iestatījums nosaka, kur skripts ir pieejams. |
| Izmantots darbībās | Tiek parādītas visas darbības, kurās skripts tiek izmantots, pirms tam 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. |
| 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 uz Zabbix aģenta, Zabbix starpniekservera vai servera, vai tikai uz Zabbix servera. |
| Komandas | Tiek parādītas visas komandas, kas tiks izpildītas skripta ietvaros. Webhook gadījumā šeit nekas netiek parādīts. |
| Lietotāju grupa | Tiek parādīta lietotāju grupa, kurai skripts ir pieejams (vai Visi visām lietotāju grupām). |
| Hostu grupa | Tiek parādīta hostu grupa, kurai skripts ir pieejams (vai Visi visām hostu grupām). |
| Hosta piekļuve | Tiek parādīts hostu grupas atļauju līmenis — Lasīt vai Rakstīt. 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 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
Jūs varat izmantot filtru, lai parādītu tikai tos skriptus, kas jūs interesē. Labākai meklēšanas veiktspējai dati tiek meklēti ar neatrisinātām makro vērtībām.
Saite Filtrs ir pieejama virs skriptu saraksta. Ja uz tās noklikšķināt, kļūst 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 atsaistīti.
Skripta atribūti:
| Parametrs | Apraksts | |
|---|---|---|
| Nosaukums | Unikāls skripta nosaukums. Piem., Clear /tmp filesystem |
|
| Tvērums | Skripta tvērums — darbības operācija, manuāla hosta darbība vai manuāla notikuma darbība. Šis iestatījums nosaka, kur skriptu var izmantot — darbību operāciju attālinātajās komandās, no hosta izvēlnes vai no notikuma izvēlnes. Iestatot tvērumu uz 'Action operation', skripts kļūst pieejams visiem lietotājiem, kuriem ir piekļuve Brīdinājumi > Darbības. Ja skripts faktiski tiek izmantots darbībā, tā tvērumu nevar mainīt no 'action operation' uz citu vērtību. 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. Taču tie netiek atbalstīti, ja skripta tvērums ir action operation, jo darbību 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 hosta darbības un manuālas notikuma darbības skriptos. Lai noskaidrotu, 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' tabulā atbalstītie makro. Ņemiet vērā: ja makro var tikt atrisināts uz vērtību ar atstarpēm (piemēram, hosta nosaukumu), neaizmirstiet to vajadzības gadījumā ievietot pēdiņās. |
|
| Izvēlnes ceļš | 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ēram, 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ā Tvērums ir atlasīts 'Manual host action' vai 'Manual event action'. |
|
| 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 kā Tvērums ir atlasīts 'Manual host action' vai 'Manual event action'. |
|
| Skripta tips: 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 Tvērums iepriekš). 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.viewMakro vērtības nedrīkst būt URL kodētas. |
|
| Atvērt jaunā logā | Nosaka, vai URL jāatver jaunā vai tajā pašā pārlūka cilnē. | |
| Skripta tips: Webhook | ||
| Parametri | Norādiet webhook mainīgos kā atribūta-vērtības pārus. Skatiet arī: Webhook medija 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 Tvērums iepriekš). |
|
| 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 Tvērums iepriekš). Skatiet arī: Webhook medija konfigurācija, Papildu Javascript objekti. |
|
| Noildze | JavaScript izpildes noildze (1-60s, noklusējums 30s). Tiek atbalstīti laika sufiksi, piem., 30s, 1m. |
|
| Skripta tips: Script | ||
| Izpildīt uz | 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) hostā Zabbix starpniekserveris vai serveris — skriptu izpildīs Zabbix starpniekserveris vai serveris atkarībā no tā, vai hosts tiek uzraudzīts ar starpniekserveri vai serveri. Tas tiks izpildīts uz starpniekservera, ja to atļauj EnableRemoteCommands. Tas tiks izpildīts uz servera, 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 skriptā. Makro atbalsts ir atkarīgs no skripta tvēruma (skatiet Tvērums iepriekš). Tiek atbalstīti pielāgoti lietotāja makro. |
|
| Skripta tips: SSH | ||
| Autentifikācijas metode | Atlasiet autentifikācijas metodi — parole vai publiskā atslēga. | |
| Lietotājvārds | Ievadiet lietotājvārdu. | |
| Parole | Ievadiet paroli. Šis lauks ir pieejams, ja kā autentifikācijas metode ir atlasīta 'Password'. |
|
| 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 'Public key'. |
|
| 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 'Public key'. |
|
| Paroles frāze | Ievadiet paroles frāzi. Šis lauks ir pieejams, ja kā autentifikācijas metode ir atlasīta 'Public key'. |
|
| Ports | Ievadiet attālā SSH pakalpojuma portu mērķa hostā, pie kura Zabbix pieslēgsies. | |
| Komandas | Ievadiet komandas. Makro atbalsts ir atkarīgs no skripta tvēruma (skatiet Tvērums iepriekš). 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ā, pie kura Zabbix pieslēgsies. | |
| Komandas | Ievadiet komandas. Makro atbalsts ir atkarīgs no skripta tvēruma (skatiet Tvērums iepriekš). 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 Tvērums iepriekš). Tiek atbalstīti pielāgoti lietotāja makro. |
|
| Apraksts | Ievadiet skripta aprakstu. | |
| Hostu grupa | Atlasiet hostu grupu, kurai skripts būs pieejams (vai All visām hostu grupām). | |
| Lietotāju grupa | 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ā Tvērums ir atlasīts 'Manual host action' vai 'Manual event action'. |
|
| Nepieciešamās hosta atļaujas | Atlasiet atļauju līmeni hostu grupai — Read vai Write. Tikai lietotāji ar nepieciešamo atļauju līmeni varēs izpildīt skriptu. Šis lauks tiek rādīts tikai tad, ja kā Tvērums ir atlasīts 'Manual host action' vai 'Manual event action'. |
|
| Paplašinātā konfigurācija | Noklikšķiniet uz etiķetes Paplašinātā konfigurācija, lai parādītu paplašinātās konfigurācijas opcijas. Šis lauks tiek rādīts tikai tad, ja kā Tvērums ir atlasīts 'Manual host action' vai 'Manual event action'. |
|
Papildu konfigurācija
Papildu konfigurācijas opcijas ir pieejamas sakļaujamā 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ālā 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 Pārbaudīt lietotāja ievadi. Priekšskatījums arī ļauj pārbaudīt, vai ievades virkne atbilst ievades validācijas noteikumam (skatiet parametrus zemāk). 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 ar komatiem atdalītā sarakstā. Lai nolaižamajā sarakstā iekļautu tukšu opciju, pievienojiet papildu komatu saraksta sākumā, vidū vai beigās. Šis lauks tiek parādīts tikai tad, ja kā Ievades tips ir atlasīts 'Nolaižamais saraksts'. |
| Noklusējuma ievades virkne | Ievadiet noklusējuma virkni lietotāja ievadei (vai neatstājiet nevienu). Šis lauks tiks validēts atbilstoši regulārajai izteiksmei, 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īta '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 kā Ievades tips ir atlasīta 'Virkne'. |
| 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 iespējots ar iepriekš minēto izvēles rūtiņu (piemēram, Attālinātā sistēma tiks pārstartēta. Vai tiešām turpināt?). Lai redzētu, kā teksts izskatīsies, noklikšķiniet uz Pārbaudīt apstiprinājumu blakus laukam. Makro un pielāgotie lietotāja makro tiek atbalstīti. Piezīme: pārbaudot apstiprinājuma ziņojumu, makro netiks izvērsti. |
Ja ir konfigurēta gan manuālā 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ģents
Jūs varat saskarties ar situāciju, kad skripta izpildes laikā iestājas noildze.
Tālāk ir redzams piemērs skriptam, kas darbojas uz Zabbix aģenta, un rezultāta logs:
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ā.
Tomēr Zabbix aģentam aktīvajā režīmā Timeout parametram Zabbix servera konfigurācijā jābūt vismaz par dažām sekundēm lielākam nekā RefreshActiveChecks parametrs Zabbix aģenta konfigurācijā.
Tas nodrošina, ka serverim ir pietiekami daudz laika saņemt aktīvās pārbaudes rezultātus no aģenta.
Ņemiet vērā, ka skriptu izpilde uz aktīva aģenta tiek atbalstīta kopš Zabbix aģenta 7.0.
Ja Zabbix aģenta konfigurācijā ir mainīts Timeout parametrs, 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 ir nepieciešams mainīt Timeout parametru arī Zabbix servera konfigurācijā.
Zabbix serveris/starpniekserveris
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 (tā vietā, lai pielāgotu TrapperTimeout parametru atbilstošai vērtībai (mūsu gadījumā, > 11)), modificējot Zabbix servera konfigurāciju.