1 Makro funkcijas
Pārskats
Makro funkcijas nodrošina iespēju pielāgot makro vērtības (piemēram, saīsināt vai izvilkt noteiktas apakšvirknes), padarot tās ērtāk lietojamas.
Makro funkcijas sintakse ir:
{macro.func(params)}
kur
- macro - pielāgojamais makro;
- func - lietojamā funkcija (skatiet atbalstītās funkcijas);
- params - ar komatiem atdalīts funkcijas parametru saraksts, kam jābūt iekļautam dubultpēdiņās, ja:
- sākas ar atstarpi vai dubultpēdiņām;
- satur aizverošās iekavas vai komatu.
Piemēram:
{{TIME}.fmttime(format,time_shift)}
{{ITEM.VALUE}.regsub(pattern, output)}
{{$USERMACRO}.regsub(pattern, output)}
{{#LLDMACRO}.regsub(pattern, output)}
Makro funkcijas tiek atbalstītas šādiem elementiem:
Makro funkcijas var izmantot visās vietās, kur tiek atbalstīti uzskaitītie makro. Tas attiecas uz gadījumiem, ja nav skaidri norādīts, ka tiek gaidīts tikai makro (piemēram, konfigurējot hosts makro vai zema līmeņa atklāšanas noteikuma filtrus).
Skatiet arī: zināmās problēmas.
Vienam makro tiek atbalstīta tikai viena funkcija; vairāku makro funkciju ķēdēšana netiek atbalstīta.
Lūdzu, skatiet atdalīšanas piemērus gadījumiem, kad makro funkcijas tiek izmantotas citos kontekstos (funkcijā, vienuma atslēgā, citā makro utt.).
Atbalstītās funkcijas
Funkcijas ir uzskaitītas bez papildu informācijas. Noklikšķiniet uz funkcijas, lai skatītu pilnu informāciju.
| Function | Description |
|---|---|
| btoa | Makro vērtības kodēšana Base64 formātā. |
| fmtnum | Skaitļu formatēšana, lai kontrolētu ciparu skaitu aiz decimāldaļas punkta. |
| fmttime | Laika formatēšana. |
| htmldecode | Makro vērtības dekodēšana no HTML kodējuma. |
| htmlencode | Makro vērtības kodēšana HTML kodējumā. |
| iregsub | Apakšvirknes iegūšana, izmantojot regulārās izteiksmes atbilstību (nav reģistrjutīgs). |
| lowercase | Makro vērtības rakstzīmju pārveidošana uz mazajiem burtiem. |
| regrepl | Rakstzīmes/apakšvirknes aizstāšana makro vērtībā. |
| regsub | Apakšvirknes iegūšana, izmantojot regulārās izteiksmes atbilstību (reģistrjutīgs). |
| tr | Makro vērtības rakstzīmju transliterācija. |
| uppercase | Makro vērtības rakstzīmju pārveidošana uz lielajiem burtiem. |
| urldecode | Makro vērtības dekodēšana no URL kodējuma. |
| urlencode | Makro vērtības kodēšana URL kodējumā. |
Funkcijas informācija
Neobligātie funkcijas parametri ir norādīti ar < >.
btoa
Makro vērtības kodēšana Base64 kodējumā. Base64 kodējums ir metode bināro datu attēlošanai kā tekstu, kas ir noderīga binārā satura glabāšanai un drošai pārsūtīšanai, izmantojot uz tekstu balstītus protokolus.
Piemērs:
{{ITEM.VALUE}.btoa()} - kodēs tādu vērtību kā "zabbix" Base64 formātā "emFiYml4"
Šī funkcija tiek atbalstīta kopš Zabbix 7.0.4.
fmtnum(digits)
Skaitļa formatēšana, lai kontrolētu pēc decimālpunkta izdrukāto ciparu skaitu.
Parametri:
- digits - ciparu skaits aiz decimālpunkta. Derīgais diapazons: 0-20. Beigu nulles netiks pievienotas.
Piemēri:
{{ITEM.VALUE}.fmtnum(2)} - atgriezīs "24.35" no saņemtās vērtības "24.3483523"
{{ITEM.VALUE}.fmtnum(0)} - atgriezīs "24" no saņemtās vērtības "24.3483523"
fmttime(format,<time_shift>)
Laika formatēšana.
Ņemiet vērā, ka šo funkciju var izmantot ar makro, kas tiek atrisināti uz vērtību vienā no šiem laika formātiem:
hh:mm:ssyyyy-mm-ddThh:mm:ss[tz](ISO8601 standarts)- UNIX laikspiedols
Parametri:
- format - obligāta formāta virkne, kas ir saderīga ar
strftimefunkcijas formatējumu; - time_shift (neobligāts) - laika nobīde, kas tiek piemērota laikam pirms formatēšanas; tai jāsākas ar
-<N><time_unit>vai+<N><time_unit>, kur:
N- laika vienību skaits, ko pievienot vai atņemt;time_unit- h (stunda), d (diena), w (nedēļa), M (mēnesis) vai y (gads).
Komentāri:
time_shiftparametrs atbalsta vairāku soļu laika darbības un var ietvert/<time_unit>laika vienības sākuma noteikšanai (/d- pusnakts,/w- nedēļas 1. diena (pirmdiena),/M- mēneša 1. diena utt.). Piemēri:-1w- tieši 7 dienas atpakaļ;-1w/w- iepriekšējās nedēļas pirmdiena;-1w/w+1d- iepriekšējās nedēļas otrdiena.- Laika darbības tiek aprēķinātas no kreisās uz labo pusi bez prioritātēm.
Piemēram,
-1M/d+1h/wtiks interpretēts kā((-1M/d)+1h)/w.
Piemēri:
{{TIMESTAMP}.fmttime(%B)} - atgriezīs "October" no saņemtās vērtības "1633098961"
{{TIMESTAMP}.fmttime(%d %B,-1M/M)} - atgriezīs "1 September" no saņemtās vērtības "1633098961"
htmldecode
Makro vērtības atkodēšana no HTML kodējuma. Šī funkcija tiek atbalstīta kopš Zabbix 7.0.4.
Tiek atbalstītas šādas rakstzīmes:
| Value | Decoded value |
|---|---|
& |
& |
< |
< |
> |
> |
" |
" |
' |
' |
' |
' |
Piemērs:
{{ITEM.VALUE}.htmldecode()} - atkodēs HTML vērtību, piemēram, "<" uz "<"
htmlencode
Makro vērtības kodēšana HTML kodējumā. Šī funkcija tiek atbalstīta kopš Zabbix 7.0.4.
Tiek atbalstītas šādas rakstzīmes:
| Value | Encoded value |
|---|---|
& |
& |
< |
< |
> |
> |
" |
" |
' |
' |
Piemērs:
{{ITEM.VALUE}.htmlencode()} - HTML kodēs rakstzīmi, piemēram, "<" uz "<"
iregsub(pattern,output)
Apakšvirknes izvilkšana pēc atbilstības regulārajai izteiksmei (bez reģistra jutības).
Parametri:
- pattern - regulārā izteiksme atbilstības noteikšanai;
- output - izvades opcijas. \1 - \9 vietturi tiek atbalstīti tveršanas grupām. \0 atgriež atbilstošo tekstu.
Komentāri:
- Ja regulārajai izteiksmei nav atbilstības, funkcija atgriež tukšu virkni.
- Ja funkcijas pattern ir nekorekta regulārā izteiksme, tad makro tiek novērtēts kā 'UNKNOWN' (izņemot zema līmeņa atklāšanas makro, kurā gadījumā funkcija tiks ignorēta un makro paliks neatrisināts).
- Atsauces uz neeksistējošām tveršanas grupām aizvietošanas virknē tiek aizstātas ar tukšu virkni.
Piemērs:
{{ITEM.VALUE}.iregsub("fail|error|fault|problem","ERROR")} - tiks atrisināts kā "ERROR", ja tiks saņemtas apakšvirknes "fail", "error", "fault" vai "problem" (bez reģistra jutības); atgriezīs tukšu virkni, ja nebūs atbilstības
mazajiem burtiem
Visu makro vērtības rakstzīmju pārveidošana uz mazajiem burtiem. Darbojas ar viena baita rakstzīmju kopām (piemēram, ASCII) un neatbalsta UTF-8. Šī funkcija tiek atbalstīta kopš Zabbix 7.0.4.
Piemērs:
{{ITEM.VALUE}.lowercase()} - pārveidos vērtību, piemēram, "Zabbix SERVER", par "zabbix server" (mazajiem burtiem)
regrepl(pattern,replacement,<pattern2>,<replacement2>,...)
Rakstzīmes/apakšvirknes aizstāšana makro vērtībā.
Ņemiet vērā, ka šī funkcija tiek atbalstīta tikai ar libpcre2 bibliotēku.
Ja Zabbix serveris/starpniekserveris tika kompilēts ar libpcre, šī funkcija atgriezīs UNKNOWN.
Šī funkcija tiek atbalstīta kopš Zabbix 7.0.4.
Parametri:
- pattern - regulārā izteiksme, kurai jāsakrīt;
- replacement - aizstāšanas virkne. \1 - \9 vietturi tiek atbalstīti aizstāšanas virknēs, lai uztvertu grupas.
Piezīmes:
- Raksti un aizstāšanas tiek apstrādāti secīgi, un katrs nākamais pāris tiek lietots atbilstoši iepriekšējās aizstāšanas rezultātam;
- Atsauces uz neesošām uztveršanas grupām aizstāšanas virknē tiek aizstātas ar tukšu virkni.
Piemēri:
{{ITEM.VALUE}.regrepl("oldParam", "newParam")} - aizstās "oldParam" ar "newParam"
{{ITEM.VALUE}.regrepl("([^a-z])","\\\1")} - visas rakstzīmes, kas nav burti, tiks ekrānētas ar atpakaļsvītru
{$THRESHOLD:"{{#FSNAME}.regrepl(\"\\$\",\"\")}"} - noņems beigu atpakaļsvītru (piemēram, lai aizstātu "C:\" ar "C:")
{{ITEM.VALUE}.regrepl("_v1\.0", "_v2.0", "\(final\)", "")} - aizstās vairākas daļas vienuma vērtībā
regsub(pattern,output)
Apakšvirknes izvilkšana pēc atbilstības regulārajai izteiksmei (reģistrjutīga).
Parametri:
- pattern - regulārā izteiksme atbilstības noteikšanai;
- output - izvades opcijas. \1 - \9 vietturi tiek atbalstīti grupu uztveršanai. \0 atgriež atbilstošo tekstu.
Komentāri:
- Ja regulārajai izteiksmei nav atbilstības, funkcija atgriež tukšu virkni.
- Ja funkcijas pattern ir nekorekta regulārā izteiksme, tad makro tiek novērtēts kā 'UNKNOWN' (izņemot zema līmeņa atklāšanas makro, kur šī funkcija tiks ignorēta un makro paliks neatrisināts).
- Atsauces uz neeksistējošām uztveršanas grupām aizvietošanas virknē tiek aizstātas ar tukšu virkni.
Piemēri:
{{ITEM.VALUE}.regsub("^([0-9]+)", Problem ID: \1)} - tiks atrisināts kā "Problem ID: 123", ja tiek saņemta vērtība, piemēram, "123 Log line"
{{ITEM.VALUE}.regsub("fail|error|fault|problem","ERROR")} - tiks atrisināts kā "ERROR", ja tiek saņemtas apakšvirknes "fail", "error", "fault" vai "problem" (reģistrjutīgi); atgriezīs tukšu virkni, ja atbilstības nav
Skatiet vairāk piemēru.
tr(characters,replacement)
Makro vērtības rakstzīmju transliterācija. Šī funkcija tiek atbalstīta kopš Zabbix 7.0.4.
- characters - aizvietojamo rakstzīmju kopa;
- replacement - pozicionāli atbilstošo aizvietošanas rakstzīmju kopa.
Piemēri:
{{ITEM.VALUE}.tr(abc, xyz)} - aizstās visus "a" ar "x", "b" ar "y", "c" ar "z"
{{ITEM.VALUE}.tr(abc, xyzq)} - aizstās visus "a" ar "x", "b" ar "y", "c" ar "z" ("q" tiek ignorēts)
{{ITEM.VALUE}.tr(abcde, xyz)} - aizstās visus "a" ar "x", "b" ar "y", "c" ar "z", "d" ar "z", "e" ar "z" (t. i., xyzzz)
{{ITEM.VALUE}.tr("\\\'", "\/\"")} - aizstās visus atpakaļslīpsvītras simbolus ar slīpsvītru uz priekšu, vienpēdiņas ar dubultpēdiņām
{{ITEM.VALUE}.tr(A-Z,a-z)} - pārvērtīs visus burtus mazajos burtos
{{ITEM.VALUE}.tr(0-9a-z,*)} - aizstās visus skaitļus un mazos burtus ar "*"
{{ITEM.VALUE}.tr(0-9,ab)} - aizstās visus 0 ar "a" un visus 1, 2, 3, 4, 5, 6, 7, 8 un 9 ar "b"
{{ITEM.VALUE}.tr(0-9abcA-L,*)} - aizstās visus skaitļus, "abc" rakstzīmes un A-L diapazonu ar "*"
{{ITEM.VALUE}.tr("\n","*")} - aizstās rindas beigu rakstzīmes ar *
{{ITEM.VALUE}.tr("e", "\n")} - aizstās visus "e" ar rindas beigu rakstzīmi
Lai iekļautu burtiskas rakstzīmes:
atpakaļslīpsvītra - jāekranē kā \\
vienpēdiņa - jāekranē kā \'
dubultpēdiņa - jāekranē kā \"
Atbalstītās atsoļošanas secības ar atpakaļslīpsvītru:
\\\\ => \\ - dubultā atpakaļslīpsvītra uz vienu atpakaļslīpsvītru
\\a => \a - trauksmes signāls
\\b => \b - atpakaļatkāpe
\\f => \f - lapas padeve
\\n => \n - jauna rinda
\\r => \r - atgriešana
\\t => \t - horizontālā tabulācija
\\v => \v - vertikālā tabulācija
lielo burtu
Visu makro vērtības rakstzīmju pārveidošana uz lielajiem burtiem. Darbojas ar viena baita rakstzīmju kopām (piemēram, ASCII) un neatbalsta UTF-8. Šī funkcija tiek atbalstīta kopš Zabbix 7.0.4.
Piemērs:
{{ITEM.VALUE}.uppercase()} - pārveidos tādu vērtību kā "Zabbix Server" par "ZABBIX SERVER" (lielie burti)
urldecode
Makro vērtības atkodēšana no URL kodējuma. Šī funkcija tiek atbalstīta kopš Zabbix 7.0.4.
Piemērs:
{{ITEM.VALUE}.urldecode()} - URL atkodēs vērtību, piemēram, "%2F" uz "/"
urlencode
Makro vērtības kodēšana URL kodējumā. Šī funkcija tiek atbalstīta kopš Zabbix 7.0.4.
Piemērs:
{{ITEM.VALUE}.urlencode()} - kodēs rakstzīmi, piemēram, "/" uz "%2F"
Papildu piemēri
Tālāk esošajā tabulā ir parādīti vēl vairāki makro funkciju lietošanas piemēri.
:::noteinfo
{#IFALIAS} ir LLD makro un ir definēts tikai zema līmeņa atklāšanas kontekstos (atklāšanas noteikumos, prototipos un no tiem izveidotajos vienumos/trigeros).
Ja to izmantosiet ārpus LLD, tokens netiks izvērsts.
:::
| Makro funkcija | Saņemtā vērtība | Izvade |
|---|---|---|
{{ITEM.VALUE}.regsub(^[0-9]+, Problem)} |
123Log line |
Problem |
{{ITEM.VALUE}.regsub("^([0-9]+)", "Problem")} |
123 Log line |
Problem |
{{ITEM.VALUE}.regsub(".*", "Problem ID: \1")} |
Log line |
Problem ID: |
{{ITEM.VALUE}.regsub("^(\w+).*?([0-9]+)", " Problem ID: \1_\2 ")} |
MySQL crashed errno 123 |
Problem ID: MySQL_123 |
{{ITEM.VALUE}.regsub("([1-9]+", "Problem ID: \1")} |
123 Log line |
*UNKNOWN* (nederīga regulārā izteiksme) |
{{#IFALIAS}.regsub("(.*)_([0-9]+)", \1)} |
customername_1 |
customername |
{{#IFALIAS}.regsub("(.*)_([0-9]+)", \2)} |
customername_1 |
1 |
{{#IFALIAS}.regsub("(.*)_([0-9]+", \1)} |
customername_1 |
{{#IFALIAS}.regsub("(.*)_([0-9]+", \1)} (nederīga regulārā izteiksme) |
{$MACRO:"{{#IFALIAS}.regsub(\"(.*)_([0-9]+)\", \1)}"} |
customername_1 |
{$MACRO:"customername"} |
{$MACRO:"{{#IFALIAS}.regsub(\"(.*)_([0-9]+)\", \2)}"} |
customername_1 |
{$MACRO:"1"} |
{$MACRO:"{{#IFALIAS}.regsub(\"(.*)_([0-9]+\", \1)}"} |
customername_1 |
{$MACRO:"{{#IFALIAS}.regsub(\"(.*)_([0-9]+\", \1)}"} (nederīga regulārā izteiksme) |
"{$MACRO:"\{{#IFALIAS}.regsub("(.*)_([0-9]+)", \1)}\"}" |
customername_1 |
"{$MACRO:"\customername\"}" |
"{$MACRO:"\{{#IFALIAS}.regsub("(.*)_([0-9]+)", \2)}\"}" |
customername_1 |
"{$MACRO:"\1\"}" |
"{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+\\", \1)}\"}" |
customername_1 |
"{$MACRO:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+\\", \1)}\"}" (nederīga regulārā izteiksme) |
Pilnu vienuma vērtību skatīšana
Atrisināto {ITEM.VALUE} un {ITEM.LASTVALUE} makro garās vērtības teksta/žurnāla vienumiem dažās lietotāja saskarnes vietās tiek saīsinātas līdz 20 rakstzīmēm. Lai redzētu šo makro pilnās vērtības, varat izmantot makro funkcijas, piemēram:
{{ITEM.VALUE}.regsub("(.*)", \1)}
{{ITEM.LASTVALUE}.regsub("(.*)", \1)}
Skatiet arī: {ITEM.VALUE} un {ITEM.LASTVALUE} makro detaļas.