テンプレート変数評価

モニター通知メッセージでは、eval 構文を使用してテンプレート変数の出力を変更できます。これにより、数値または文字列値を持つテンプレート変数に対していくつかの異なる算術演算と関数を使用できます。

演算子

評価演算子を使用すると、数値テンプレート変数に対して基本的な算術演算を実行できます。構文は次の形式を使用します。: 式は引用符( ")で囲む必要があります。

{{eval "テンプレート変数名+1-2*3/4"}}

次の演算子がサポートされています。

演算子説明
+加算
-減算
*乗算
/除算
^べき乗
%剰余

{{last_triggered_at_epoch}} テンプレート変数は、モニターが最後にトリガーされた UTC 時間をミリ秒単位のエポック形式で返します。

特定の時間へのスコープリンク

評価演算子は、次のように 15 分 (15 * 60 * 1000ミリ秒) を減算するために使用できます。

{{eval "last_triggered_at_epoch-15*60*1000"}}

これは、Datadog または他のワークフローツールの他のページへのモニター通知メッセージに時間スコープのリンクを作成するのに役立ちます。たとえば、{{last_triggered_at_epoch}} の評価演算子を使用して、Datadog ログエクスプローラーへの時間スコープのリンクを作成します。

https://app.datadoghq.com/logs?from_ts={{eval "last_triggered_at_epoch-15*60*1000"}}&to_ts={{last_triggered_at_epoch}}&live=false

時間帯に基づいて異なるチームに通知をルーティングする

last_triggered_at_epoch 変数の評価に modulo %{{#is_exact_match}}{{/is_exact_match}} を組み合わせることで、時間帯 (UTC) に基づいた通知のルーティングをカスタマイズできます。

{{#is_exact_match (eval "int(last_triggered_at_epoch / 3600000 % 24)") "8" "9" "10" "11" "12" "13"}}  
時間が午前 8 時から午後 2 時 (UTC) の間の場合に通知を受け取るハンドル
{{/is_exact_match}}

注: モニターを特定のスケジュールで評価する必要がある場合は、代わりに Custom Schedules をご参照ください。

関数

テンプレート変数の値を評価関数の入力として使用して、テンプレート変数のフォーマットを変更したり、値に対して算術演算を実行したりできます (該当する場合)。構文は次の形式を使用します。: 式は引用符(")で囲む必要があります。

{{eval "function(TEMPLATE_VARIABLE_NAME)"}}

次の関数は、数値テンプレート変数の値のフォーマット方法を変更します。

関数説明
humanize_bytes(var)人間が読める形式の var バイトを返します
humanize_bits(var)人間が読める形式の var ビットを返します
abs(var)var の絶対値を返します
int(var)var を床付き整数、つまり小数点以下の数値で返します。たとえば、var = 12.345 の場合、 int(var) は 12 を返します。
float(var)var を浮動小数点数として返します
trunc(var)var を整数として返します。これは int 関数のエイリアスです
dec(var)小数点の右側の数値を返します。たとえば、var = 12.345 の場合、dec(var) は 0.345 を返します。

次の関数は、数値テンプレート変数の値を数学関数への入力として使用します。

関数説明
round(var)最も近い整数に丸められた var を返します
round(var, n)指定した桁数 (n) に var を丸めた値を返します。
例: round(12.376, 2) = 12.38
ceil(var)var の上限を返します(var 以上の最小の整数)
floor(var)var の下限を返します(var 以下の最大の整数)
sgn(var)var で評価される符号関数の値を返します:
var > 0 の場合、sgn(var) = 1
var = 0 の場合、sgn(var) = 0
var < 0 の場合、sgn(var) = -1
to_bool(var)var = 1 の場合は true を返します
var = 0 の場合は false を返します
exp(var)var で累乗した e(自然対数の底)を返します
log10(var)var の 10 を底とする対数を返します
sin(var)var ラジアンの正弦を返します
sinh(var)var の双曲線正弦を返します
asin(var)var の逆正弦をラジアンで返します
asinh(var)var の逆双曲線正弦を返します
cos(var)var ラジアンの余弦を返します
cosh(var)var の双曲線余弦を返します
acos(var)var の逆余弦をラジアンで返します
acosh(var)var の逆双曲線余弦を返します
tan(var)var ラジアンの正接を返します
tanh(var)var の双曲線正接を返します
atan(var)var の逆正接をラジアンで返します
atan2(var1, var2)atan(var1 / var2) をラジアンで返します
atanh(var)var の逆双曲線正接を返します

特定のユースケースで {{value}} テンプレート変数の小数点以下の桁数が不要な場合は、int 関数を使用して {{value}} を整数として評価し、読みやすさを向上させて小数点を削除します。

{{eval "int(value)"}}

{{value}} が多数のバイトまたはビットに評価される場合は、humanize_bytes または humanize_bits 関数を使用して、数値を GB や MB などの別のより高次のメモリユニットに変換して読みやすくします。

{{eval "humanize_bytes(value)"}}

{{eval "humanize_bits(value)"}}

以下の関数を使用すると、文字列変数に対して特定の操作を実行できます。

関数説明
upper(var)文字列を大文字に変換した結果を返します
lower(var)文字列を小文字に変換した結果を返します
substring(var, start, end)指定した 2 つのインデックス (start, end) で区切られた範囲の文字列を抽出します。第 3 引数は省略可能です。
例: substring(“host:D”, 5) = “D”
strip(var, characters)文字列の先頭および末尾から指定した文字を削除します。第 2 引数が null の場合、先頭と末尾の空白を削除します。
例:
strip(" host:E “) = “host:E”
strip(“abchost:Eabc”, “abc”) = “host:E”