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: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 - 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_shift atbalsta 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/w tiks 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
&amp; &
&lt; <
&gt; >
&quot; "
&#039; '
&#39; '

Piemērs:

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

Piemērs:

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