このトピックでは、新しいバージョンのコンテンツテンプレートで使用できる変数と、それらを参照する方法について説明します。
参照方法
変数を参照する場合、変数名は完全に一致している必要があります。
参照された変数が存在しないか、参照が無効な場合、システムはデフォルトでそれを空の文字列に置き換えます。
参照された変数の値がオブジェクトの場合、その値は JSON 文字列に変換されます。
テンプレート内の変数名には、大文字、小文字、数字、およびアンダースコア (_) のみを含めることができます。名前を数字で始めることはできません。
変数名が標準ルールに従っている場合、
{{alert.xxx}}を使用してその値を参照できます。変数名が
__tag__:__namespace__のように標準ルールに従っていない場合、{{alert.annotations["__tag__:__namespace__"] }}を使用してその値を参照できます。
アクションポリシーを設定するときは、コンテンツテンプレートを選択する必要があります。コンテンツテンプレートは、通知のコンテンツと件名を定義します。[コンテンツ] および [件名]/[タイトル] フィールドでは、{{ alert.xxx }} 形式を使用してテンプレート変数を参照できます。Simple Log Service がアラート通知を送信すると、[コンテンツ] および [件名]/[タイトル] フィールドのテンプレート変数を実際の値に置き換えます。たとえば、{{ alert.project }} は、アラートルールが属するプロジェクトの名前に置き換えられます。

制御フローとビルトイン関数を使用して、変数を操作および処理することもできます。テンプレートの構文とビルトイン関数の詳細については、「新しいコンテンツテンプレートの構文」および「ビルトインテンプレート関数」をご参照ください。
アラートプロパティ
変数 | 説明 | データ型 | 値の例 | 参照例 |
aliuid | プロジェクトオーナーの Alibaba Cloud アカウント ID。 | 文字列 | 117918634953**** | ユーザー |
alert_instance_id | アラートをトリガーしたインスタンスの ID。 | 文字列 | ee16a8f435485f3f-5be6b81edc520-3d6**** | インスタンス ID は |
alert_id | アラートルールの ID。ID はプロジェクト内で一意である必要があります。 | 文字列 | alert-12345 | アラートルール ID は |
alert_name | アラートルールの名前。 | 文字列 | テストアラートルール | アラートルール |
alert_type | アラートタイプ。
| 文字列 | sls_alert | アラートタイプは |
region | リージョン。 | 文字列 | cn-hangzhou | アラートは |
project | アラートルールが属するプロジェクト。 | 文字列 | my-project |
|
next_eval_interval | 次の評価間隔 (秒)。 | 整数 | 300 | 次の評価は |
alert_time | 現在の評価の時刻。 | 整数 | 1616744734 | 現在のアラート評価時刻は |
fire_time | アラートが最初にトリガーされた時刻。 | 整数 | 1616059834 | アラートは |
status | アラートステータス。
| 文字列 | firing | アラートステータスは |
resolve_time | アラートが回復した時刻。
| 整数 | 0 | アラートの回復時刻は |
severity | アラートの重大度。
| 整数 | 10 | アラートの重大度は |
labels | ラベルのリスト。 | マップ | {"env":"test"} | アラートのラベルは |
annotations | アノテーションのリスト。 | マップ | { "title": "Alert Title","desc": "Alert Description" } | アラートのアノテーションは |
results | クエリパラメーターと中間結果 (配列形式)。この変数の値の詳細については、「QueryData 構造」をご参照ください。 | 配列 | このトピックの最後にある付録をご参照ください。 | 最初のクエリの開始時刻は |
fire_results | アラートをトリガーするデータ。これは、セット操作後のデータです。最大 100 件のデータエントリが返されます。 fire_results 変数の値が 2 KB を超え、クエリ結果のフィールドの長さが 1 KB を超える場合、超過部分は切り捨てられます。切り捨てられたデータの処理方法の詳細については、「アラートがトリガーされるログが多すぎて、アラート通知にすべてのログが表示されない場合はどうすればよいですか?」をご参照ください。 | 配列 | このトピックの最後にある付録をご参照ください。 | アラートがトリガーされたときに生成されたデータは |
fire_results_count | アラートをトリガーするデータエントリの総数。この数は 100 を超えることがあります。たとえば、デカルト積演算後のエントリの総数です。 | 整数 | 3 | アラートがトリガーされたときに生成されたデータエントリの総数は |
condition | アラートをトリガーする評価式。この式では、設定した変数がアラートをトリガーする値に置き換えられます。値は角括弧 (`[]`) で囲まれます。フォーマットは | 文字列 |
| アラート評価式は |
raw_condition | 変数が実際の値に置き換えられていない元の評価式。フォーマットは | 文字列 |
| 元の評価式は |
policy | アラートポリシーまたはアクションポリシー。この変数の値の詳細については、「ポリシー構造」をご参照ください。 | マップ | このトピックの最後にある付録をご参照ください。 | アラートポリシー ID は |
dashboard | アラートに関連付けられているダッシュボードの名前。 | 文字列 | mydashboard | アラートに関連付けられているダッシュボードの名前は |
alert_url | アラート詳細ページの URL。 | 文字列 | https://sls.console.alibabacloud.com/lognext/project/test-xxxx/alert/alert-1617164106-940166 | アラート URL は |
query_url | クエリ/分析の最初のクエリページの URL。 | 文字列 | 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。 | 文字列 | https://sls.console.alibabacloud.com/lognext/project/test-xx/dashboard/internal-alert-analysis | アラート履歴統計レポートの URL は |
dashboard_url | アラートに関連付けられているダッシュボードの URL。 | 文字列 | https://sls.console.alibabacloud.com/next/project/myproject/dashboard/mydashboard | アラートに関連付けられているダッシュボードの URL は |
fingerprint | アラートの指紋。詳細については、「指紋に基づいてアラートを重複排除する」をご参照ください。 | 文字列 | 478325709134bc5c | アラートの指紋は |
signin_url | コンソールにログオンせずにアラートの詳細を表示するために使用できる URL。詳細については、「ログオンせずにアラートの詳細を表示する」をご参照ください。 | 文字列 | https://sls.console.alibabacloud.com/console/AlertAjax/slsSignIn.json?token=xxxx |
|
ポリシー構造
次の表に、policy 変数で参照できる変数を示します。
変数 | 説明 | データ型 | 値の例 |
alert_policy_id | アラートポリシーの ID。 | 文字列 | sls.test-alert |
action_policy_id | アラートルールで指定されたアクションポリシーの ID。この変数は、アラートポリシーが動的アクションポリシーを使用している場合にのみ使用できます。 | 文字列 | sls.test-action |
repeat_interval | 繰り返し間隔。この変数は、アラートポリシーが動的アクションポリシーを使用している場合にのみ使用できます。 | 文字列 | 4h |
QueryData 構造
次の表に、results 変数で参照できる変数を示します。
変数 | 説明 | データ型 | 値の例 |
store_type | ストレージタイプ。
| 文字列 | log |
region | クエリのターゲットデータベースが存在するリージョン。 ストレージタイプが `meta` の場合、この変数は空です。 | 文字列 | cn-hangzhou |
project | クエリのターゲットデータベースが存在するプロジェクト。 ストレージタイプがリソースデータの場合、変数値は空です。 | 文字列 | sls-test-alert |
store | クエリのターゲットデータベースの名前。 | 文字列 | test-logstore |
query | クエリ文。 | 文字列 | error | select count(1) as cnt |
start_time | クエリする時間範囲の開始。 ストレージタイプが `meta` の場合、この変数は空です。 | 整数 | 1616741485 |
end_time | クエリ対象期間の終了時刻。 ストレージタイプがリソースデータの場合、変数の値は空です。 | 整数 | 1616745085 |
raw_results | クエリされたデータレコード (配列形式)。最大 100 行が返されます。 raw_results 変数の値が 2 KB を超え、クエリ結果のフィールドの長さが 1 KB を超える場合、超過部分は切り捨てられます。 | 配列 | |
raw_results_count | クエリされたデータレコードの総数。この数は 100 を超えることがあります。 | 整数 | 20 |
fire_result | アラートをトリガーする結果セットの最初のデータレコード。結果セットには複数のレコードが含まれる可能性があるため、このパラメーターは最初のレコードのみを返します。 | マップ | |
query_url | クエリの URL。 ストレージタイプが `meta` の場合、この変数は空です。 | 文字列 | 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 Resource Name (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