Lietotāja parametri
Pārskats
Lietotāja parametrs ļauj definēt pielāgotu vienuma atslēgu un komandu, kas tiek izmantota tās vērtības iegūšanai, ja neviens iebūvētais Zabbix aģenta vienums nenodrošina nepieciešamos datus. Lietotāja parametrs ir lietotāja definēta komanda, uz kuru atsaucas lietotāja definēta vienuma atslēga un kuru izpilda Zabbix aģents, kad tiek pārbaudīts atbilstošais vienums.
UNIX sistēmās aģents izpilda lietotāja parametru komandas, izmantojot /bin/sh, ar operētājsistēmas kontu, kurā darbojas aģents (parasti zabbix).
Šim kontam ir jābūt pietiekamām atļaujām, lai izpildītu komandu un piekļūtu visiem tās izmantotajiem failiem, ligzdām vai akreditācijas datiem.
Pastāv divu veidu lietotāja parametri:
- Vienkāršie lietotāja parametri nepieņem argumentus; tie definē fiksētu vienuma atslēgu un izpildāmo komandu.
- Elastīgie lietotāja parametri pieņem argumentus (kas vienuma atslēgā norādīti kā parametri) un nodod tos komandai, ļaujot vienai definīcijai apkalpot vairākus vienumus.
Lietotāja parametru konfigurēšana
Lietotāja parametrs tiek definēts, izmantojot konfigurācijas parametru UserParameter.
Lietotāja parametram ir šāda sintakse:
UserParameter=<key>,<shell command>
kur:
<key>- unikāla vienuma atslēga, kas identificē lietotāja parametru.
Konfigurējot vienumu, norādiet šo atslēgu, lai atsauktos uz lietotāja parametrā definēto komandu.
Vienkāršam lietotāja parametram atslēga ir fiksēta un nepieņem argumentus. Elastīgam lietotāja parametram atslēgai pievienojiet[*](piemēram,mysql.status[*]), lai norādītu, ka tā pieņem argumentus. Konfigurējot vienumu, norādiet šos argumentus kā parametrus vienuma atslēgā. Komanda var atsaukties uz parametriem, izmantojot pozicionālās atsauces$1–$9.<shell command>- čaulas komanda vai ceļš uz pielāgotu skriptu, ko aģents izpilda, lai iegūtu vienuma vērtību.
Elastīgam lietotāja parametram komanda var izmantot pozicionālās atsauces$1–$9, lai atsauktos uz atbilstošajiem parametriem vienuma atslēgā (piemēram,UserParameter=mysql.status[*],mysqladmin status --user=$1 --password=$2). Zabbix parsē[]iekļautos parametrus vienuma atslēgā (t. i.,mysql.status[zabbix,{$MYSQL.PASSWORD}]) un attiecīgi aizstāj pozicionālās atsauces komandā.
$0tiek aizstāts ar sākotnējo komandu, pirms tiek izvērstas pozicionālās atsauces. Pozicionālās atsauces tiek interpretētas neatkarīgi no tā, vai tās ir ietvertas dubultajās (") vai vienkāršajās (') pēdiņās. Lai izmantotu pozicionālās atsauces bez aizstāšanas, norādiet divas dolāra zīmes. Piemēram,awk '{print $$2}'nodod komandai$2bez izmaiņām.
Ņemiet vērā, ka pozicionālās atsauces ar prefiksu$Zabbix aģents meklē un aizstāj tikai elastīgos lietotāja parametros. Vienkāršiem lietotāja parametriem pozicionālās atsauces netiek apstrādātas, tāpēc$aizsargāšana nav nepieciešama.
Noteiktas rakstzīmes pēc noklusējuma nevar nodot kā argumentus. Pilnu rakstzīmju sarakstu skatiet UnsafeUserParameters.
UserParameter ir jākonfigurē katrā Zabbix aģentā, kas to izmanto:
- Tieši Zabbix aģenta konfigurācijas failā (
zabbix_agentd.confvaizabbix_agent2.conf). - Atsevišķā
*.conffailā ar nosacījumu, ka aģenta konfigurācijā šis fails ir iekļauts.
Vienam aģentam var definēt vairāk nekā vienu UserParameter, jo var iekļaut vairākus failus ar dažādām parametru kopām.
Katram lietotāja parametram uzraudzītajā hostā ir jābūt unikālai vienuma atslēgai.
Konfigurācijas parametrs UserParameterDir ļauj norādīt darba direktoriju UserParameter komandu izpildei.
Ja tas ir konfigurēts, aģents pirms komandas izpildes maina savu darba direktoriju uz norādīto direktoriju.
Komandas var norādīt, izmantojot relatīvu ceļu ar prefiksu ./, piemēram, UserParameter=mykey,./myscript.sh.
Lai konfigurētu lietotāja parametru:
- Uzrakstiet pielāgotu skriptu vai komandu nepieciešamo datu iegūšanai.
- Pievienojiet komandu un tās unikālo vienuma atslēgu konfigurācijas parametram
UserParameterZabbix aģenta konfigurācijas failā (zabbix_agentd.conf). -
Pārlādējiet lietotāja parametrus no konfigurācijas faila, izpildot izpildlaika vadības komandu:
zabbix_agentd -R userparameter_reload
Varat arī restartēt aģentu, lai lietotu konfigurācijas izmaiņas.
- Izveidojiet jaunu vienumu uzraudzītajā hostā ar vienuma atslēgu, kas definēta
UserParameter.
Iestatiet vienuma tipu uz Zabbix Agent vai Zabbix Agent (active).
Pārliecinieties, ka vienuma Type of information ir konfigurēts pareizi; pretējā gadījumā Zabbix noraidīs atgriezto vērtību.
Piemēru lietotāja parametru konfigurēšanai un izmantošanai skatiet sadaļā Zabbix aģentu paplašināšana.
Uz lietotāja parametriem attiecas Zabbix aģenta pārbaudes taimauts. Ja taimauts tiek sasniegts, process, kas izpilda lietotāja parametru, tiek pārtraukts. Plašāku informāciju skatiet sadaļā Komandu izpilde.
Ņemiet vērā, ka ilgstoši izpildāmi skripti var patērēt sistēmas resursus un aizkavēt citas pārbaudes.
Komandas rezultāts
Komandas atgrieztā vērtība sastāv no komandas izveidotās standarta izvades un standarta kļūdu izvades.
Lietotāja parametri, kas atgriež tekstu (informācijas tips Character, Log vai Text), var atgriezt arī atstarpes rakstzīmes. Ja komanda izveido nederīgu rezultātu, vienums kļūst neatbalstīts. Tomēr vienums ar kādu no šiem informācijas tipiem nekļūs neatbalstīts tikai tāpēc, ka komanda izveido izvadi standarta kļūdu izvadē.
Komandas atgrieztā vērtība ir ierobežota līdz 16 MB, ieskaitot beigu atstarpes rakstzīmes, kas tiek saīsinātas. Šis ierobežojums tiek piemērots pirms vienuma vērtības priekšapstrādes darbībām. Tiek piemēroti arī datubāzes ierobežojumi.
Lietotāja parametru piemēri
Šajā sadaļā sniegti vienkāršu un elastīgu lietotāja parametru piemēri.
Tālāk sniegtie piemēri ir paredzēti tikai demonstrēšanai, un tos nevajadzētu izmantot produkcijas vidē bez atbilstošiem drošības pasākumiem.
Elastīgi lietotāja parametri, kas definēti, izmantojot [*], pieņem argumentus, kuri, ja netiek droši apstrādāti, var radīt komandu injekcijas risku.
Vienkāršu lietotāja parametru piemēri
1. piemērs: konstanta vērtība
UserParameter=ping,echo 1
Vienums ar atslēgu ping vienmēr atgriež 1.
2. piemērs: MySQL servera pieejamība
UserParameter=mysql.ping,mysqladmin ping 2>/dev/null | grep -c alive
Atgriež 1, ja MySQL serveris atbild, un 0 citos gadījumos.
Novirzīšana 2>/dev/null atmet standarta kļūdu izvadi no mysqladmin.
Bez tās kļūdas ziņojums varētu tikt atgriezts kopā ar 0, tādējādi izraisot to, ka vienums ar informācijas tipu Numeric kļūst neatbalstīts (skatiet Command result).
Šajā piemērā tiek pieņemts, ka MySQL savienojuma akreditācijas dati ir konfigurēti operētājsistēmas kontam, kurā darbojas Zabbix aģents, piemēram, MySQL opciju failā, kas ir pieejams šim kontam.
Elastīgu lietotāja parametru piemēri
1. piemērs: Parametra atgriešana
UserParameter=ping[*],echo $1
Izmantojot šo lietotāja parametru, varat definēt vairākus vienumus ar atslēgām formātā ping[parameter]:
ping[0]- atgriež0.ping[hello]- atgriežhello.
2. piemērs: MySQL pieejamība norādītajā hostā
Šo parametru var izmantot, lai uzraudzītu MySQL servera pieejamību norādītajā hostā.
UserParameter=mysql.ping[*],mysqladmin -h "$1" ping 2>/dev/null | grep -c alive
Vienums ar atslēgu mysql.ping[db1.example.com] atgriež 1, ja MySQL serveris šajā hostā atbild, un 0 pretējā gadījumā.
Šajā piemērā tiek pieņemts, ka MySQL savienojuma akreditācijas dati ir konfigurēti operētājsistēmas kontam, kurā darbojas Zabbix aģents, piemēram, šim kontam pieejamā MySQL opciju failā.
3. piemērs: pēc parauga atbilstošo rindu skaitīšana
Šo parametru var izmantot, lai saskaitītu rindu skaitu failā.
UserParameter=grep.count[*],grep -c "$2" "$1"
Atgriež to faila rindu skaitu, kas norādīts ar pirmo argumentu un atbilst ar otro argumentu norādītajai regulārajai izteiksmei.
Piemēram, grep.count[/etc/passwd,root] atgriež to /etc/passwd faila rindu skaitu, kas atbilst regulārajai izteiksmei root.