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:ss
  • yyyy-mm-ddThh:mm:ss[tz] (ISO8601 standarts)
  • UNIX laikspiedols

Parametri:

  • format - obligāta formāta virkne, kas ir saderīga ar strftime funkcijas 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_shift parametrs 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/w tiks 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
&amp; &
&lt; <
&gt; >
&quot; "
&#039; '
&#39; '

Piemērs:

{{ITEM.VALUE}.htmldecode()} - atkodēs HTML vērtību, piemēram, "&lt;" 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
& &amp;
< &lt;
> &gt;
" &quot;
' &#39;

Piemērs:

{{ITEM.VALUE}.htmlencode()} - HTML kodēs rakstzīmi, piemēram, "<" uz "&lt;"
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.