マクロ関数は、マクロの値をカスタマイズする機能を提供します(例えば、特定の部分文字列を短縮または抽出するなど)。これにより、マクロの扱いが容易になります。
マクロ関数の構文は以下の通りです。
ここで
例:
{{TIME}.fmttime(format,time_shift)}
{{ITEM.VALUE}.regsub(pattern, output)}
{{$USERMACRO}.regsub(pattern, output)}
{{#LLDMACRO}.regsub(pattern, output)}マクロ関数は以下でサポートされています。
マクロ関数は、上記のマクロがサポートされているすべての場所で使用できます。 これは、明示的にマクロのみが期待されると記載されている場合(例えば、ホストマクロやローレベルディスカバリールールのフィルターを設定する場合)を除きます。
1つのマクロにつき1つの関数のみサポートされており、複数のマクロ関数を連鎖して使用することはできません。
マクロ関数が他のコンテキスト(関数、アイテムキー、別のマクロなど)内で使用される場合のエスケープ例については、エスケープ例を参照してください。
関数は追加情報なしでリストされています。 関数をクリックすると詳細が表示されます。
| 関数 | 説明 |
|---|---|
| btoa | マクロ値をBase64エンコーディングに変換します。 |
| fmtnum | 小数点以下の桁数を制御するための数値フォーマット。 |
| fmttime | 時刻のフォーマット。 |
| htmldecode | マクロ値をHTMLエンコーディングからデコードします。 |
| htmlencode | マクロ値をHTMLエンコーディングに変換します。 |
| iregsub | 正規表現(大文字小文字を区別しない)による部分文字列の抽出。 |
| lowercase | マクロ値の文字を小文字に変換します。 |
| regrepl | マクロ値内の文字/部分文字列の置換。 |
| regsub | 正規表現(大文字小文字を区別する)による部分文字列の抽出。 |
| tr | マクロ値の文字の変換。 |
| uppercase | マクロ値の文字を大文字に変換します。 |
| urldecode | マクロ値をURLエンコーディングからデコードします。 |
| urlencode | マクロ値をURLエンコーディングに変換します。 |
オプションの関数パラメータは < > で示されます。
マクロ値をBase64エンコーディングにエンコードします。 Base64エンコーディングは、バイナリデータをテキストとして表現する方法であり、テキストベースのプロトコルでバイナリコンテンツを保存および安全に転送するのに便利です。
例:
小数点以下の桁数を制御するための数値フォーマット。
パラメータ:
例:
{{ITEM.VALUE}.fmtnum(2)} - 受信値 "24.3483523" から "24.35" を返します
{{ITEM.VALUE}.fmtnum(0)} - 受信値 "24.3483523" から "24" を返します時刻のフォーマット変換。
この関数は、以下のいずれかの時刻フォーマットの値に解決されるマクロで使用できることに注意してください。
hh:mm:ssyyyy-mm-ddThh:mm:ss[tz] (ISO8601標準)パラメータ:
strftime関数のフォーマットに対応;-<N><time_unit>または+<N><time_unit>で始まる必要があり、ここで:
N - 加算または減算する時間単位の数;time_unit - h (時), d (日), w (週), M (月), y (年)。コメント:
time_shiftパラメータは複数段階の時刻操作をサポートし、時間単位の先頭にシフトするために/<time_unit>を含めることができます (/d - 深夜, /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"を返しますマクロ値をHTMLエンコードからデコードします。
以下の文字がサポートされています:
| 値 | デコード後の値 |
|---|---|
& |
& |
< |
< |
> |
> |
" |
" |
' |
' |
' |
' |
例:
マクロ値をHTMLエンコーディングに変換します。
以下の文字がサポートされています:
| 値 | エンコード値 |
|---|---|
& |
& |
< |
< |
> |
> |
" |
" |
' |
' |
例:
正規表現(大文字・小文字を区別しない)による部分文字列の抽出。
パラメータ:
コメント:
例:
{{ITEM.VALUE}.iregsub("fail|error|fault|problem","ERROR")} - "fail"、"error"、"fault"、"problem"のいずれかの部分文字列が受信された場合(大文字・小文字を区別しない)は"ERROR"に解決されます。マッチしない場合は空文字列を返しますすべてのマクロ値の文字を小文字に変換します。 シングルバイト文字セット(ASCIIなど)で動作し、UTF-8はサポートしていません。
例:
マクロ値内の文字または部分文字列の置換。
パラメータ:
コメント:
例:
{{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\)", "")} - アイテム値内の複数の部分を置換します正規表現マッチによる部分文字列の抽出(大文字と小文字を区別)。
パラメータ:
コメント:
例:
{{ITEM.VALUE}.regsub("^([0-9]+)", Problem ID: \1)} - "123 Log line" のような値を受信した場合、"Problem ID: 123" に解決されます
{{ITEM.VALUE}.regsub("fail|error|fault|problem","ERROR")} - "fail"、"error"、"fault"、"problem" のいずれかの部分文字列を受信した場合(大文字と小文字を区別)、"ERROR" に解決されます。マッチしない場合は空文字列を返します追加の例も参照してください。
マクロ値の文字の音訳。
例:
{{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 - 垂直タブすべてのマクロ値の文字を大文字に変換します。 シングルバイト文字セット(ASCIIなど)で動作し、UTF-8はサポートしていません。
例:
マクロ値をURLエンコードからデコードします。
例:
マクロ値をURLエンコーディングに変換します。
例:
以下の表は、マクロ関数の使用例をさらに示しています。
{#IFALIAS}はLLDマクロであり、低レベルディスカバリのコンテキスト(ディスカバリルール、プロトタイプ、およびそれらから作成されたアイテム/トリガー)でのみ定義されます。 LLD以外で使用すると、トークンは展開されません。
| マクロ関数 | 受信値 | 出力 |
|---|---|---|
{{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*(無効な正規表現) |
{{#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:"{{#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:\"{{#IFALIAS}.regsub(\\"(.*)_([0-9]+\\", \1)}\"}"(無効な正規表現) |
テキスト/ログアイテムの解決された{ITEM.VALUE}および{ITEM.LASTVALUE}マクロの長い値は、一部のフロントエンドの場所で20文字に切り捨てられます。 これらのマクロの完全な値を表示するには、以下のようなマクロ関数を使用できます。
詳細は、{ITEM.VALUE}および{ITEM.LASTVALUE}のマクロ詳細も参照してください。