このトピックでは、新しいアラートテンプレートで使用できる変数とその使い方について説明します。
変数参照
-
変数名は完全一致である必要があります。
-
変数が存在しない場合、または参照が無効な場合、デフォルトで空文字列になります。
-
参照されるオブジェクトは JSON 文字列に変換されます。
-
-
変数名には文字、数字、アンダースコア (_) を含めることができますが、数字で始めることはできません。
-
変数名がこれらのルールに従う場合、ドット表記を使用してその値を取得できます。たとえば、
{{alert.xxx}}のように記述します。 -
変数名に
__tag__:__namespace__などの特殊文字が含まれている場合、ブラケット表記を使用してその値を取得する必要があります。たとえば、{{alert.annotations["__tag__:__namespace__"]}}のように記述します。
-
アクションポリシーを設定するときは、アラートテンプレートを選択する必要があります。アラートテンプレートは、通知内容と件名を定義します。送信内容 および 件名/タイトル フィールドでは、{{ alert.xxx }} 構文を使用してテンプレート変数を参照できます。Simple Log Service (SLS) がアラート通知を送信すると、送信内容 および 件名/タイトル の変数をその値に置き換えます。たとえば、Simple Log Service (SLS) は {{ alert.project }} を、アラートルールを含む Project の名前に置き換えます。
たとえば、DingTalk チャネルのアラートテンプレートでは、[件名] を SLS Alert に設定できます。 [内容] では、変数 {{ alert.aliuid }}、{{ alert.project }}、{{ alert.alert_name }}、および {{ alert.severity }} を使用して、それぞれアカウント ID、プロジェクト名、アラートルール名、重要度を取得できます。
変数は直接参照するだけでなく、制御フローと組み込み関数を使用して変数データを処理することもできます。 テンプレートの構文と組み込み関数の詳細については、アラートテンプレートの構文 (新規) および 組み込みテンプレート関数 をご参照ください。
アラート属性
|
パラメーター |
説明 |
タイプ |
値 |
参照例 |
|
aliuid |
プロジェクトの Alibaba Cloud アカウント ID です。 |
string |
117918634953**** |
ユーザー |
|
alert_instance_id |
アラートをトリガーしたインスタンスの ID です。 |
string |
ee16a8f435485f3f-5be6b81edc520-3d6**** |
インスタンス ID は |
|
alert_id |
プロジェクト内のアラートルールのユニーク ID です。 |
string |
alert-12345 |
アラートルール ID は |
|
alert_name |
アラートルールの名前です。 |
string |
Test alert rule |
アラートルール |
|
alert_type |
アラートタイプです。
|
string |
sls_alert |
アラートタイプは |
|
region |
アラートがトリガーされたリージョンです。 |
string |
cn-hangzhou |
アラートはリージョン |
|
project |
アラートルールが属するプロジェクトです。 |
string |
my-project |
プロジェクト |
|
next_eval_interval |
次の評価までの間隔 (秒) です。 |
int |
300 |
次の評価は |
|
alert_time |
現在の評価の UTC タイムスタンプです。 |
int |
1616744734 |
現在の評価時間は |
|
fire_time |
アラートが最初に発生したときの UTC タイムスタンプです。 |
int |
1616059834 |
アラートは |
|
status |
アラートの現在のステータスです。
|
string |
firing |
アラートステータスは |
|
resolve_time |
アラートが解決されたときの UTC タイムスタンプです。
|
int |
0 |
アラートは |
|
severity |
アラートの重大度です。
|
int |
10 |
アラートの重大度は |
|
labels |
ユーザー定義のキーと値からなるラベルのセットです。 |
map |
{"env":"test"} |
アラートのラベルは |
|
annotations |
ユーザー定義のキーと値からなるアノテーションのセットです。 |
map |
{ "title": "Alert title","desc": "Alert description" } |
アラートのアノテーションは |
|
results |
クエリパラメーターと中間結果の配列です。この変数の値の詳細については、「QueryData の構造」をご参照ください。 |
array |
このトピックの最後にある付録をご参照ください。 |
最初のクエリの開始時間は |
|
fire_results |
アラートをトリガーしたデータです。これは集合演算の結果です。最大 100 行が返されます。 fire_results 変数のサイズが 2 KB を超えるか、単一フィールドのコンテンツが 1 KB を超える場合、データは切り捨てられます。切り捨てられたデータの処理方法については、「アラートが多すぎるログに対してトリガーされ、通知に不完全な情報が表示される場合の対処方法」をご参照ください。 |
array |
このトピックの最後にある付録をご参照ください。 |
アラートをトリガーしたデータは |
|
fire_results_count |
アラートをトリガーしたデータ行の総数です。この値は、たとえばデカルト積操作の後など、100 を超えることがあります。 |
int |
3 |
アラートは |
|
condition |
アラートをトリガーした評価式です。この式では、変数は実際のトリガー値に置き換えられ、角括弧 [] で囲まれます。フォーマットは |
string |
|
アラートの評価式は |
|
raw_condition |
変数が実際の値に置き換えられる前の、元の評価式です。フォーマットは |
string |
|
元の評価式は |
|
policy |
アラートポリシーまたはアクションポリシーです。この変数の値の詳細については、「ポリシーの構造」をご参照ください。 |
map |
このトピックの最後にある付録をご参照ください。 |
アラートポリシー ID は |
|
dashboard |
アラートに関連付けられているダッシュボードの名前です。 |
string |
mydashboard |
関連付けられているダッシュボードは |
|
alert_url |
アラート詳細ページの URL です。 |
string |
https://sls.console.alibabacloud.com/lognext/project/test-xxxx/alert/alert-1617164106-940166 |
アラートの URL は |
|
query_url |
最初のクエリに対応する検索ページの URL です。 |
string |
https://sls.console.alibabacloud.com/lognext/project/test-xxx/logsearch/test-alert-access?encode=base64&endTime=1617175989&queryString=KiB8IHNlbGVjdCBjb3VudCgxKSBhcyBjbn****&queryTimeType=99&startTime=1617175089 |
最初のクエリページの URL は |
|
alert_history_dashboard_url |
アラート履歴統計ダッシュボードの URL です。 |
string |
https://sls.console.alibabacloud.com/lognext/project/test-xx/dashboard/internal-alert-analysis |
アラート履歴統計ダッシュボードの URL は |
|
dashboard_url |
アラートに関連付けられているダッシュボードの URL です。 |
string |
https://sls.console.alibabacloud.com/next/project/myproject/dashboard/mydashboard |
関連付けられているダッシュボードの URL は |
|
fingerprint |
アラートフィンガープリントです。詳細については、「アラートフィンガープリントに基づくアラートの重複排除」をご参照ください。 |
string |
478325709134bc5c |
アラートフィンガープリントは |
|
signin_url |
コンソールにログインせずにアラートの詳細を表示するための URL です。詳細については、「ログインせずにアラートの詳細を表示」をご参照ください。 |
string |
https://sls.console.alibabacloud.com/console/AlertAjax/slsSignIn.json?token=xxxx |
|
ポリシーの構造
次の表に、ポリシーで使用可能な変数を示します。
|
パラメーター |
説明 |
タイプ |
値の例 |
|
alert_policy_id |
アラートポリシーの ID です。 |
文字列 |
sls.test-alert |
|
action_policy_id |
アラートルールに設定されたアクションポリシーの ID です。 この変数は、アラートルールが動的アクションポリシーを使用する場合にのみ利用可能です。 |
文字列 |
sls.test-action |
|
repeat_interval |
アクティブなアラートに対する通知の繰り返し間隔です。 この変数は、アラートルールが動的アクションポリシーを使用する場合にのみ利用可能です。 |
文字列 |
4h |
クエリデータの構造
この表では、results 変数で使用できる変数について説明します。
|
パラメーター |
説明 |
型 |
値 |
|
store_type |
ストレージタイプです。有効な値は次のとおりです。
|
文字列 |
log |
|
リージョン |
送信先ストアのリージョンです。
|
文字列 |
cn-hangzhou |
|
プロジェクト |
送信先ストアのプロジェクトです。
|
文字列 |
sls-test-alert |
|
ストア |
送信先ストアの名前です。 |
文字列 |
test-LogStore |
|
クエリ |
クエリ文です。 |
文字列 |
error | select count(1) as cnt |
|
start_time |
UTC タイムスタンプ形式のクエリ開始時刻です。
|
整数 |
1616741485 |
|
終了時刻 |
UTC タイムスタンプ形式のクエリ終了時刻です。
|
整数 |
1616745085 |
|
未加工の結果 |
最大 100 行を含む、クエリ結果の配列です。 raw_results 変数が 2 KB を超えるか、結果のフィールドが 1 KB を超えた場合、超過したデータは切り捨てられます。 |
配列 |
|
|
生の検索結果数 |
結果セット内の行の総数です。100 を超えることもあります。 |
整数 |
20 |
|
fire_result |
アラートトリガー結果の最初のレコードです。結果セットに複数のレコードが含まれている場合でも、このパラメーターには最初のレコードのみが含まれます。 |
マップ |
|
|
query_url |
コンソールのクエリページの URL です。
|
文字列 |
https://sls.console.alibabacloud.com/lognext/project/test-xxx/logsearch/test-alert-access?encode=base64&endTime=1617175989&queryString=KiB8IHNlbGVjdCBjb3VudCgxKSBhcy*******&queryTimeType=99&startTime=1617175089 |
|
dashboard_url |
クエリに関連するダッシュボードの URL です。 |
文字列 |
https://sls.console.alibabacloud.com/next/project/myproject/dashboard/mydashboard |
|
role_arn |
サービスロールの Alibaba Cloud リソースネーム (ARN) です。 |
文字列 |
acs:ram::117918634953****:role/aliyunslsalertmonitorrole |
よくある質問
付録
-
resultsのサンプル:[{ "store_type": "log", "region": "cn-hangzhou", "project": "sls-alert-test", "store": "test", "query": "* | select count(1) as cnt", "start_time": 1616741485, "end_time": 1616745085, "dashboard_id": "mydashboard", "raw_results": [{ "cnt": "4" }], "raw_result_count": 1, "fire_result": { "cnt": "4" }, "truncated": false, "role_arn": "" }] -
fire_resultsのサンプル:[{ "host": "example.com", "host__1": "example.com", "pv": "836", "slbid": "slb-02", "status": "200" }, { "host": "example.com", "host__1": "example.com", "pv": "836", "slbid": "slb-02", "status": "200" }] -
policyのサンプル:{ "alert_policy_id": "sls.test-alert", "action_policy_id": "sls.test-action", "repeat_interval": "5m0s" }
例
この例では、新しいコンテンツテンプレートを使用して通知内容を定義します。
アラートコンテンツ:
{ "alert_id": "test-alert", "alert_name": "PV/UV Alert", "project": "project-1", "status": "firing", "severity": 6, "labels": { "app": "nginx", "host": "host-1" }, "results": [ { "project": "project-1", "logstore": "logstore-1", "query": "* | select count(*) as pv" }, { "project": "project-2", "logstore": "logstore-2", "query": "* | select count(distinct user_id) as uv" } ] }アラートテンプレートの設定:
- Alert ID: {{ alert.alert_id }} - Alert Name: {{ alert.alert_name }} - Project: {{ alert.project }} - Status: {% if alert.status == "firing" %}FIRING{% else %}RESOLVED{% endif %} - Labels: {%- for key, val in alert.labels.items() %} - {{ key }}: {{ val }} {%- endfor %} - Query: {{ alert.results[0].query }}出力結果:
- Alert ID: test-alert - Alert Name: PV/UV Alert - Project: project-1 - Status: FIRING - Labels: - app: nginx - host: host-1 - Query: * | select count(*) as pv