Komandu izpilde
Zabbix izmanto kopīgu funkcionalitāti ārējām pārbaudēm, lietotāja parametriem, system.run vienumiem, pielāgotiem brīdinājumu skriptiem, attālinātām komandām un globālajiem skriptiem.
Visas komandas un skripti tiek izpildīti ar tās OS lietotāja tiesībām, kurš palaiž Zabbix aģentu. Lietotājam ir jābūt pietiekamām tiesībām, lai izpildītu komandu vai skriptu.
Izpildes darbības
Pēc noklusējuma visi Zabbix skripti tiek izpildīti, izmantojot sh čaulu, un noklusējuma čaulu nav iespējams mainīt. Lai izmantotu citu čaulu, varat izmantot risinājumu: izveidot skripta failu un izsaukt šo skriptu komandas izpildes laikā.
Komanda vai skripts tiek izpildīts līdzīgi gan Unix, gan Windows platformās:
- Zabbix (vecākprocess) izveido saziņas kanālu.
- Zabbix iestata saziņas kanālu kā izvadi izveidojamajam bērnprocesam.
- Zabbix izveido bērnprocesu (palaiž komandu/skriptu).
- Bērnprocesam tiek izveidota jauna procesu grupa (Unix sistēmā) vai uzdevums (Windows sistēmā).
- Zabbix nolasa datus no saziņas kanāla, līdz iestājas noildze vai neviens vairs neraksta otrā galā (visi apstrādātāji/failu deskriptori ir aizvērti). Ņemiet vērā, ka bērnprocess var izveidot citus procesus un beigt darbu, pirms tie beidz darbu vai aizver apstrādātāju/failu deskriptoru.
- Ja noildze vēl nav iestājusies, Zabbix gaida, līdz sākotnējais bērnprocess beidz darbu vai iestājas noildze.
- Ja sākotnējais bērnprocess beidz darbu, pirms iestājusies noildze, Zabbix pārbauda sākotnējā bērnprocesa izejas kodu un salīdzina to ar
0. Izejas kods, kas nav nulle, tiek uzskatīts par izpildes kļūmi, taču tikai pielāgotiem brīdinājumu skriptiem, attālajām komandām un lietotāja skriptiem, kas izpildīti Zabbix serverī vai Zabbix starpniekserverī. - Šajā brīdī tiek pieņemts, ka viss ir pabeigts un viss procesu koks (t. i., procesu grupa vai uzdevums) tiek pārtraukts.
Zabbix pieņem, ka komandas/skripta apstrāde ir pabeigta, kad sākotnējais bērnprocess ir beidzis darbu UN neviens cits process vairs netur atvērtu izvades apstrādātāju/failu deskriptoru. Kad apstrāde ir pabeigta, VISI izveidotie procesi tiek pārtraukti.
Visas dubultās pēdiņas un atpakaļvērstās slīpsvītras komandā tiek ekranētas ar atpakaļvērstām slīpsvītrām, un komanda tiek ietverta dubultajās pēdiņās.
Iziešanas koda pārbaude
Iziešanas kods tiek pārbaudīts, izmantojot šādus nosacījumus:
- Tikai pielāgotiem brīdinājumu skriptiem, attālajām komandām un lietotāja skriptiem, kas tiek izpildīti Zabbix serverī un Zabbix starpniekserverī.
- Jebkurš iziešanas kods, kas atšķiras no
0, tiek uzskatīts par izpildes kļūmi. - Neveiksmīgu izpildes gadījumu standarta kļūdu un standarta izvades saturs tiek apkopots un ir pieejams lietotāja saskarnē (kur tiek parādīts izpildes rezultāts).
- Attālajām komandām, kas tiek izpildītas Zabbix aģentā/starpniekserverī, var izveidot papildu žurnāla ierakstu, iespējojot parametru LogRemoteCommands aģentā/starpniekserverī.
Iespējamie lietotāja saskarnes ziņojumi un žurnāla ieraksti neveiksmīgām komandām vai skriptiem:
- Neveiksmīgu izpildes gadījumu standarta kļūdu un standarta izvades saturs (ja tāds ir).
Process exited with code: N.(tukšai izvadei un ja iziešanas kods nav vienāds ar0).Process killed by signal: N.(ja process tika pārtraukts ar signālu; tikai Linux).Process terminated unexpectedly.(ja process tika pārtraukts nezināmu iemeslu dēļ).