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"に変換します。
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)} - 受信した値"12:36:01"から"October"を返します。
       {{TIME}.fmttime(%d %B,-1M/M)} - 受信した値"12:36:01"から"1 September"を返します。
htmldecode

HTML エンコードからマクロ値をデコードします。

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

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

例:

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

マクロ値をHTMLエンコードします。

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

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

例:

{{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 はサポートされていません。

例:

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

マクロ値内の文字/部分文字列の置換

この関数はlibpcre2ライブラリでのみサポートされます。Zabbixサーバー/プロキシがlibpcreでコンパイルされている場合、この関数はUNKNOWNを返します。

パラメーター:

  • 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)

マクロ値の文字の翻字

  • 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 はサポートされていません。

例:

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

URLエンコードからマクロ値をデコードします。

例:

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

マクロ値をURLエンコードします。

例:

{{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} [マクロ詳細については、/manual/appendix/macros/supported_by_location を参照してください。