This is a translation of the original English documentation page. Help us make it better.

1 マクロ関数

サポートされている関数

関数は追加情報なしでリストされています。 関数をクリックすると詳細が表示されます。

関数 説明
btoa マクロ値をBase64形式にエンコードします。
fmtnum 小数点以下の桁数を制御するための数値フォーマットです。
fmttime 時刻フォーマットです。
htmldecode マクロ値をHTMLエンコードからデコードします。
htmlencode マクロ値をHTMLエンコードにエンコードします。
iregsub 正規表現マッチングによる部分文字列抽出(大文字と小文字を区別しません)。
lowercase マクロ値の文字を小文字に変換します。
regrepl マクロ値内の文字/部分文字列を置換します。
regsub 正規表現マッチングによる部分文字列の抽出(大文字と小文字を区別します)。
tr マクロ値の文字を変換します。
uppercase マクロ値の文字を大文字に変換します。
urldecode URLエンコードからマクロ値をデコードします。
urlencode マクロ値をURLエンコードにエンコードします。

概要

マクロ関数は、macroの値をカスタマイズする機能を提供します。

マクロは、必ずしも簡単に扱えない値を解決することがあります。値が長かったり、抽出したい特定の部分文字列が
含まれていたりする場合があります。このような場合に、マクロ関数が役に立ちます。

マクロ関数の書式は:

{<macro>.<func>(<params>)}

ここで:

  • <macro> - カスタマイズするマクロ (例 {ITEM.VALUE} や {L#LDMACRO} など)です。
  • <func> - 適用する関数です。
  • <params> - カンマで区切られた関数パラメータのリストです。パラメータが '' '' (スペース) で始まる場合、 " で始まる場合、あるいは ), , を含む場合は、引用符で囲む必要があります。

例:

{{TIME}.fmttime(format,time_shift)}
       {{ITEM.VALUE}.regsub(pattern, output)}
       {{#LLDMACRO}.regsub(pattern, output)}
btoa

マクロ値をBase64エンコードします。Base64エンコードはバイナリデータをテキストとして表現する方法で、テキストベースのプロトコルでバイナリコンテンツを保存したり、安全に転送したりするのに役立ちます。

例:

{{ITEM.VALUE}.btoa()} - "zabbix" のような値をBase64エンコードして "emFiYml4"に変換します。

この関数はZabbix 7.0.4以降でサポートされています。

fmtnum(digits)

小数点以下の桁数を制御する数値書式

パラメータ:

  • digits - 小数点以下の桁数。有効範囲: 0~20。末尾にゼロは付加されません。

例:

{{ITEM.VALUE}.fmtnum(2)} - 受信した値"24.3483523"に対して"24.35"を返します。
       {{ITEM.VALUE}.fmtnum(0)} - 受信した値"24.3483523"に対して"24"を返します。
fmttime(format,<time_shift>)

時刻のフォーマット。
この関数は、以下のいずれかの時刻形式の値を返すマクロで使用できます。

  • hh:mm:ss
  • yyyy-mm-ddThh:mm:ss[tz] (ISO8601 標準)
  • UNIX タイムスタンプ

パラメーター:

  • format - 必須のフォーマット文字列。strftime 関数のフォーマットと互換性があります。
  • time_shift (オプション) - フォーマット前の時刻に適用する時間シフト。-<N><time_unit> または +<N><time_unit> で始まる必要があります。
  • N - 加算または減算する時間単位の数。
  • time_unit - h(時)、d(日)、w(週)、M(月)、またはy(年)

コメント:

  • time_shift パラメータは複数段階の時間演算をサポートし、時間単位の先頭にシフトするための /<time_unit> を含めることができます。 (/d - 午前0時、/w - 週の初日(月曜日)、/M - 月の初日 など)。 例:-1w - ちょうど7日前、-1w/w - 先週の月曜日、-1w/w+1d - 先週の火曜日。
  • 時間演算は優先順位なしに左から右へ計算されます。 例えば、-1M/d+1h/w((-1M/d)+1h)/w と解釈されます。

例:

{{TIME}.fmttime(%B)} - 受信した値"1633098961"から"October"を返します。
       {{TIME}.fmttime(%d %B,-1M/M)} - 受信した値"1633098961"から"1 September"を返します。
htmldecode

HTML エンコードからマクロ値をデコードします。この関数はZabbix 7.0.4以降でサポートされています。

以下の文字がサポートされています。

デコードされた値
& &
< <
> >
" "
' '
' '

例:

{{ITEM.VALUE}.htmldecode()} - "<" のような値を "<" に HTML デコードします。
htmlencode

マクロ値をHTMLエンコードします。この関数はZabbix 7.0.4以降でサポートされています。

以下の文字がサポートされています。

エンコードされた値
& &
< <
> >
" "
' '

例:

{{ITEM.VALUE}.htmlencode()} - "<"のような文字を"<"にHTMLエンコードします。
iregsub(pattern,output)

正規表現マッチによる部分文字列抽出(大文字と小文字は区別されません)

パラメータ:

  • pattern - マッチさせる正規表現
  • output - 出力オプション。\1 - \9 プレースホルダはキャプチャグループとしてサポートされています。\0 はマッチしたテキストを返します。

コメント:

  • 正規表現に一致するものがない場合、関数は何も返しません。
  • 関数パターンが不正な正規表現である場合、マクロは 'UNKNOWN' と評価されます。 (低レベル検出マクロの場合は関数は無視され、マクロは未解決のままになります。)
  • 置換文字列内の存在しないキャプチャグループへの参照は、空文字列に置き換えられます。

例:

{{ITEM.VALUE}.iregsub("fail|error|fault|problem","ERROR")} - "fail""error""fault"、または"problem"の部分文字列を受け取った場合は"ERROR"に解決されます(大文字と小文字は区別されません)。一致するものがない場合、何も解決されません。
小文字

マクロの値をすべて小文字に変換します。シングルバイト文字セット(ASCII など)で動作し、UTF-8 はサポートされていません。この関数はZabbix 7.0.4以降でサポートされています。

例:

{{ITEM.VALUE}.lowercase()} - "Zabbix SERVER"のような値を"zabbix server"(小文字)に変換します。
regrepl(pattern,replacement,<pattern2>,<replacement2>,...)

マクロ値内の文字/部分文字列を置換します。 この関数は libpcre2 ライブラリでのみサポートされます。Zabbix サーバー/プロキシが libpcre でコンパイルされている場合、この関数は UNKNOWN を返します。この関数は Zabbix 7.0.4 以降でサポートされています。

パラメーター:

  • pattern - 一致させる正規表現。
  • replacement - 置換文字列。置換文字列では、グループをキャプチャするために \1 - \9 のプレースホルダーがサポートされています。

コメント:

  • パターンと置換は順番に処理され、後続の各ペアは前の置換結果に従って適用されます。
  • 置換文字列内に存在しないキャプチャグループへの参照がある場合は、空文字列に置き換えられます。

例:

{{ITEM.VALUE}.regrepl("oldParam", "newParam")} - "oldParam""newParam" に置き換えます。
       {{ITEM.VALUE}.regrepl("([^a-z])","\\\1")} - 英字以外の文字はすべてバックスラッシュでエスケープされます。
       {$THRESHOLD:"{{#FSNAME}.regrepl(\"\\$\",\"\")}"} - 末尾のバックスラッシュを削除します (例: "C:\" を "C:" に置き換えます)。
       {{ITEM.VALUE}.regrepl("_v1\.0", "_v2.0", "\(final\)", "")} - アイテム値内の複数の部分を置き換えます。
regsub(pattern,output)

正規表現マッチによる部分文字列抽出(大文字と小文字を区別します)。

パラメータ:

  • pattern - マッチさせる正規表現。
  • output - 出力オプション。\1 - \9 プレースホルダはキャプチャグループとしてサポートされています。\0 はマッチしたテキストを返します。

コメント:

  • 正規表現に一致するものがない場合、関数は何も返しません。
  • 関数パターンが不正な正規表現である場合、マクロは 'UNKNOWN' と評価されます。 (低レベル検出マクロの場合は関数は無視され、マクロは未解決のままになります。)
  • 置換文字列内の存在しないキャプチャグループへの参照は、空文字列に置き換えられます。

例:

{{ITEM.VALUE}.regsub("^([0-9]+)", 問題ID: \1)} - "123 Log line" のような値を受け取った場合、"問題ID: 123"に解決されます。
       {{ITEM.VALUE}.regsub("fail|error|fault|problem","ERROR")} - "fail""error""fault""problem"のいずれかの部分文字列を受け取った場合、"ERROR"に解決されます(大文字と小文字は区別されます)。一致するものがない場合、何も返されません。

その他の例を参照してください。

tr(characters,replacement)

マクロ値の文字を変換します。

この関数はZabbix 7.0.4以降でサポートされています。

  • characters - 置換する文字セット。
  • replacement - 位置的に対応する置換文字セット。

例:

{{ITEM.VALUE}.tr(abc, xyz)} - すべての"a"を"x"、"b"を"y"、"c"を"z"に置き換えます。
       {{ITEM.VALUE}.tr(abc, xyzq)} - すべての"a"を"x"、"b"を"y"、"c"を"z"に置き換えます("q"は無視されます)
       {{ITEM.VALUE}.tr(abcde, xyz)} - すべての"a"を"x"、"b"を"y"、"c"を"z"、"d"を"z"、"e"を"z"に置き換えます(つまり、xyzzz)
       {{ITEM.VALUE}.tr("\\\'", "\/\"")} - すべてのバックスラッシュをスラッシュに、シングルクォーテーションをダブルクォーテーションに置き換えます。
       {{ITEM.VALUE}.tr(A-Z,a-z)} - すべての文字を小文字に変換します。
       {{ITEM.VALUE}.tr(0-9a-z,*)} - すべての数字と小文字を"*"に置き換えます。
       {{ITEM.VALUE}.tr(0-9,ab)} - すべての0を"a"に置き換え、すべての1、2、3、4、5、6、7、8、9を"b"に置き換えます。
       {{ITEM.VALUE}.tr(0-9abcA-L,*)} - すべての数字、文字の"abc"およびA~Lの範囲を"*"に置き換えます。
       {{ITEM.VALUE}.tr("\n","*")} - 改行文字を"*"に置き換えます。
       {{ITEM.VALUE}.tr("e", "\n")} - すべての"e"を改行文字に置き換えます。

リテラル文字を含める場合:

バックスラッシュ - \\ としてエスケープする必要があります。
       シングルクォーテーション - \' としてエスケープする必要があります。
       ダブルクォーテーション - \" としてエスケープする必要があります。

バックスラッシュでサポートされているエスケープシーケンス:

\\\\ => \\ - 二重のバックスラッシュを単一のバックスラッシュに変換
       \\a => \a - アラート
       \\b => \b - バックスペース
       \\f => \f - フォームフィード
       \\n => \n - 改行
       \\r => \r - リターン
       \\t => \t - 水平タブ
       \\v => \v - 垂直タブ
uppercase

マクロの値をすべて大文字に変換します。シングルバイト文字セット(ASCII など)で動作し、UTF-8 はサポートされていません。この関数はZabbix 7.0.4以降でサポートされています。

例:

{{ITEM.VALUE}.uppercase()} - "Zabbix Server"のような値を"ZABBIX SERVER"(大文字)に変換します。
urldecode

URLエンコードからマクロ値をデコードします。この関数はZabbix 7.0.4以降でサポートされています。

例:

{{ITEM.VALUE}.urldecode()} - "%2F"のような値を"/"にURLデコードします。
urlencode

マクロ値をURLエンコードします。この関数はZabbix 7.0.4以降でサポートされています。

例:

{{ITEM.VALUE}.urlencode()} - "/"などの文字を"%2F"にURLエンコードします

その他の例

以下の表は、マクロ関数の使用例をさらに示しています。

マクロ関数 受信値 出力
{{ITEM.VALUE}.regsub(^[0-9]+, Problem)} 123 ログ行 問題
{{ITEM.VALUE}.regsub("^([0-9]+)", "問題")} 123 ログ行 問題
{{ITEM.VALUE}.regsub(".*", "問題 ID: \1")} ログ行 問題 ID:
{{ITEM.VALUE}.regsub("^(\w+).*?([0-9]+)", " 問題ID: \1_\2 ")} MySQL がエラー番号 123 でクラッシュしました 問題ID: MySQL\_123 
{{ITEM.VALUE}.regsub("([1-9]+", "問題ID: \1")} 123 ログ行 UNKNOWN (無効な正規表現)
{{#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)} (無効な正規表現)式)
{$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:"{{#M}.regsub(\"(.*)_([0-9]+\", \1)}"} (無効な正規表現式)
"{$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)}\"}" (無効な正規表現)
アイテムの完全な値の表示

テキスト/ログアイテムの解決済みマクロ {ITEM.VALUE} および {ITEM.LASTVALUE} の長い値は、フロントエンドの一部の場所で 20 文字に切り捨てられます。 これらのマクロの完全な値を表示するには、マクロ関数を使用できます。例:

{{ITEM.VALUE}.regsub("(.*)", \1)}
       {{ITEM.LASTVALUE}.regsub("(.*)", \1)}

参照: {ITEM.VALUE} および {ITEM.LASTVALUE} マクロ詳細についてはを参照してください。