1 Makro funkcijas
Pārskats
Makro funkcijas piedāvā 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 - piemērojamā funkcija (skatiet atbalstītās funkcijas);
- params - ar komatiem atdalīts funkcijas parametru saraksts, kam jābūt dubultpēdiņās, ja tie:
- 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:
Makro funkcijas var izmantot visās vietās, kur tiek atbalstīti uzskaitītie makro. Tas attiecas uz visiem gadījumiem, izņemot, ja ir skaidri norādīts, ka tiek sagaidīts tikai makro (piemēram, konfigurējot hostu makro vai zema līmeņa atklāšanas noteikumu filtrus).
Katram makro tiek atbalstīta viena funkcija; vairākas makro funkcijas ķēdē netiek atbalstītas.
Lūdzu, skatiet ekranēš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.
| Funkcija | Apraksts |
|---|---|
| btoa | Makro vērtības kodēšana Base64 kodējumā. |
| fmtnum | Skaitļu formatēšana, lai kontrolētu aiz komata drukāto ciparu skaitu. |
| 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 pēc atbilstības regulārajai izteiksmei (reģistrnejutīga). |
| 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 pēc atbilstības regulārajai izteiksmei (reģistrjutīga). |
| 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 teksta formā, kas ir noderīga bināra satura glabāšanai un drošai pārsūtīšanai, izmantojot uz tekstu balstītus protokolus.
Piemērs:
{{ITEM.VALUE}.btoa()} - Base64 kodēs vērtību, piemēram, "zabbix", par "emFiYml4"
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 makrosiem, kas tiek atrisināti uz vērtību vienā no šādiem 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- pievienojamo vai atņemamo laika vienību skaits;time_unit- h (stunda), d (diena), w (nedēļa), M (mēnesis) vai y (gads).
Komentāri:
- Parametrs
time_shiftatbalsta daudzpakāpju laika operācijas un var ietvert/<time_unit>, lai pārbīdītu uz laika vienības sākumu (/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 operācijas 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:
{{TIME}.fmttime(%B)} - atgriezīs "October" no saņemtās vērtības "1633098961"
{{TIME}.fmttime(%d %B,-1M/M)} - atgriezīs "1 September" no saņemtās vērtības "1633098961"
htmldecode
Makro vērtības dekodēšana no HTML kodējuma.
Tiek atbalstītas šādas rakstzīmes:
| Vērtība | Dekodētā vērtība |
|---|---|
& |
& |
< |
< |
> |
> |
" |
" |
' |
' |
' |
' |
Piemērs:
{{ITEM.VALUE}.htmldecode()} - HTML dekodēs vērtību, piemēram, "<" uz "<"
htmlencode
Makro vērtības kodēšana HTML kodējumā.
Tiek atbalstītas šādas rakstzīmes:
| Vērtība | Kodētā vērtība |
|---|---|
& |
& |
< |
< |
> |
> |
" |
" |
' |
' |
Piemērs:
{{ITEM.VALUE}.htmlencode()} - HTML kodēs rakstzīmi, piemēram, "<", par "<"
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
mazie burti
Visu makro vērtības rakstzīmju pārveidošana par mazajiem burtiem.
Darbojas ar viena baita rakstzīmju kopām (piemēram, ASCII) un neatbalsta UTF-8.
Piemērs:
{{ITEM.VALUE}.lowercase()} - pārveidos tādu vērtību kā "Zabbix SERVER" par "zabbix server" (mazie burti)
regrepl(pattern,replacement,<pattern2>,<replacement2>,...)
Rakstzīmes/apakšvirknes aizstāšana makro vērtībā.
Parametri:
- pattern - regulārā izteiksme atbilstības meklēšanai;
- replacement - aizstāšanas virkne. Aizstāšanas virknēs tiek atbalstīti vietturi \1 - \9 grupu uztveršanai.
Komentāri:
- Šabloni un aizstāšanas virknes tiek apstrādātas secīgi, katru nākamo pāri piemērojot atbilstoši iepriekšējās aizstāšanas rezultātam;
- Atsauces uz neeksistējošā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 ekranētas ar slīpsvītru
{$THRESHOLD:"{{#FSNAME}.regrepl(\"\\$\",\"\")}"} - noņems beigu slīpsvī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.
- characters - aizstājamais rakstzīmju kopums;
- replacement - pozicionāli atbilstošo aizstājējrakstzīmju kopums.
Piemēri:
{{ITEM.VALUE}.tr(abc, xyz)} - aizstās visas "a" ar "x", "b" ar "y", "c" ar "z"
{{ITEM.VALUE}.tr(abc, xyzq)} - aizstās visas "a" ar "x", "b" ar "y", "c" ar "z" ("q" tiek ignorēts)
{{ITEM.VALUE}.tr(abcde, xyz)} - aizstās visas "a" ar "x", "b" ar "y", "c" ar "z", "d" ar "z", "e" ar "z" (t.i., xyzzz)
{{ITEM.VALUE}.tr("\\\'", "\/\"")} - aizstās visas atpakaļvērstās slīpsvītras ar slīpsvītru uz priekšu, vienpēdiņas ar dubultpēdiņām
{{ITEM.VALUE}.tr(A-Z,a-z)} - pārveidos visus burtus par mazajiem burtiem
{{ITEM.VALUE}.tr(0-9a-z,*)} - aizstās visus ciparus un mazos burtus ar "*"
{{ITEM.VALUE}.tr(0-9,ab)} - aizstās visas 0 ar "a", un aizstās visas 1, 2, 3, 4, 5, 6, 7, 8 un 9 ar "b"
{{ITEM.VALUE}.tr(0-9abcA-L,*)} - aizstās visus ciparus, "abc" rakstzīmes un diapazonu A-L ar "*"
{{ITEM.VALUE}.tr("\n","*")} - aizstās visas rindas beigu virknes ar *
{{ITEM.VALUE}.tr("e", "\n")} - aizstās visus "e" ar rindas beigu virkni
Lai iekļautu literālās rakstzīmes:
atpakaļvērstā slīpsvītra - jāatveido kā \\
vienpēdiņa - jāatveido kā \'
dubultpēdiņa - jāatveido kā \"
Atbalstītās atsoļa secības ar atpakaļvērsto slīpsvītru:
\\\\ => \\ - dubultā atpakaļvērstā slīpsvītra uz vienu atpakaļvērsto slīpsvītru
\\a => \a - brīdinājuma signāls
\\b => \b - atpakaļatkāpe
\\f => \f - lapas pārtraukums
\\n => \n - jauna rinda
\\r => \r - kursora atgriešana
\\t => \t - horizontālā tabulācija
\\v => \v - vertikālā tabulācija
lielie burti
Visu makro vērtības rakstzīmju pārveidošana par lielajiem burtiem.
Darbojas ar viena baita rakstzīmju kopām (piemēram, ASCII) un neatbalsta UTF-8.
Piemērs:
{{ITEM.VALUE}.uppercase()} - pārveidos vērtību, piemēram, "Zabbix Server", par "ZABBIX SERVER" (lielie burti)
urldecode
Makro vērtības dekodēšana no URL kodējuma.
Piemērs:
{{ITEM.VALUE}.urldecode()} - URL dekodēs tādu vērtību kā "%2F" par "/"
urlencode
Makro vērtības kodēšana URL kodējumā.
Piemērs:
{{ITEM.VALUE}.urlencode()} - URL kodēs rakstzīmi, piemēram, "/" uz "%2F"
Papildu piemēri
Tālāk redzamajā tabulā ir parādīti vēl citi makro funkciju izmantošanas piemēri.
:::noteinfo
{#IFALIAS} ir LLD makross un ir definēts tikai zema līmeņa atklāšanas kontekstos (atklāšanas noteikumos, prototipos un no tiem izveidotajos vienumos/trigeros).
Izmantojot to ārpus LLD, tokens paliks neaizvietots.
:::
| 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} makrosu 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 makrosu 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} makrosu detalizēta informācija.