アラートテンプレートのラベル、アノテーション、fire_results、およびresults変数を使用して、アラート通知のログコンテンツを参照できます。
Simple Log Serviceは、アラート通知にアラートの詳細を表示できます。 これにより、アラート通知を受け取ったときにアラートの詳細を表示できます。 アラート通知にアラートの詳細を含めるには、アラートモニタリングルールを作成するときに必要なパラメーターを設定し、使用するアラートテンプレートにラベル、アノテーション、fire_results、およびresults変数を追加する必要があります。 詳細については、「新しいアラートテンプレートの変数」をご参照ください。
labels: アラートのラベル
annotations: アラートの注釈
fire_results: アラートがトリガーされたデータレコード
results: クエリパラメータと中間結果
たとえば、NGINXへのアクセスを監視する場合、次のクエリ文を使用して、返されるアクセスエラーを示すステータスコード、エラーが発生したマシンのIPアドレス、エラーが発生した回数などの情報を取得できます。 次に、情報に基づいてアラートモニタリングルールを作成し、アラートテンプレートの情報を参照できます。 ステータスコードが400以上の場合、Simple Log Serviceはステータスコード、エラーが発生したマシンのIPアドレス、およびエラーが発生した回数を含むアラート通知を送信します。
クエリ文
status >=400 | SELECT status, __source__ AS ip, count(*) AS cnt GROUP BY status,ip
クエリ結果
ラベル変数を使用するUse the labels variable
アラートテンプレートのlabels変数を使用して、アラート通知のログコンテンツを参照できます。
アラートモニタリングルール
アラートモニタリングルールを作成するときに、ラベルを追加したり、グループ評価を設定したりできます。 アラートがトリガーされると、ラベルに関する情報が生成され、アラートメッセージに含まれます。
グループ評価の設定: グループ評価を設定すると、グループ評価用に選択したフィールドがラベルに関する情報に自動的に追加されます。 詳細については、「グループ評価機能の使用」をご参照ください。
重要グループ評価のフィールドを選択するときは、監視対象エンティティを識別でき、値を列挙できるフィールドを選択します。 たとえば、グループ評価でstatusフィールドを選択した場合、エラーログが記録されたときにステータスコードによって異なるアラートがトリガーされます。 監視対象エンティティを識別できないフィールドは選択しないでください。 そのようなフィールドを使用すると、多数のグループが生じる。 グループ内のトリガー条件が満たされると、アラートがトリガーされます。 多数のグループが存在する場合、アラートストームが発生する可能性があります。 この場合、重要なアラート情報を見逃す可能性があります。
ラベルの追加: ラベルは属性を識別します。 詳細については、「ラベル」をご参照ください。
たとえば、ログソース、環境、ステータスコードなどの情報をアラートメッセージに追加する場合は、
app:nginx
ラベルとenv:prod
ラベルを追加し、グループ評価用のstatusフィールドを選択します。アラートメッセージ
アラートがトリガーされると、Simple Log Serviceは次の情報を含むアラートメッセージを生成します。
{ "labels": { "app": "nginx", "env": "prod", "status": "404" } }
アラートンプレート
labels変数をアラートテンプレートに追加して、アラート通知で指定されたログコンテンツを参照できます。 アラートテンプレートの作成方法の詳細については、「アラートテンプレートの作成」をご参照ください。
アノテーション変数を使用するUse the annotations variable
アラートテンプレートのannotations変数を使用して、アラート通知のログコンテンツを参照できます。
アラートモニタリングルール
アラートモニタリングルールの作成時に、アノテーションに関する情報を手動で追加したり、アノテーションの自動追加をオンにして、アノテーションに関する情報を自動的に追加したりできます。 アラートがトリガーされると、アノテーションに関する情報が生成され、アラートメッセージに含まれます。 詳細については、「注釈」をご参照ください。
説明Simple Log Serviceは、デフォルトで2つのアノテーションを提供します。
たとえば、返されるアクセスエラーを示すステータスコード、エラーが発生したマシンのIPアドレス、エラーが発生した回数などの情報をアラートメッセージに追加する場合は、
status :${ status}
、ip :${ ip}
、cnt :${ cnt}
などの注釈を追加できます。注釈に関する情報を手動で追加する
自動注釈の追加をオンにして、注釈に関する情報を自動的に追加します
アラートメッセージ
アラートがトリガーされると、Simple Log Serviceは次の情報を含むアラートメッセージを生成します。
{ "annotations": { "title": "Alert is triggered by an NGINX access error", "desc": "The error that is indicated by the status code 400 occurred 15 times" "status": "400" "ip": "127.0.0.1" "cnt": "15" "__count__": "1" } }
アラートンプレート
アノテーション変数をアラートテンプレートに追加して、アラート通知で指定されたログコンテンツを参照できます。 アラートテンプレートの作成方法の詳細については、「アラートテンプレートの作成」をご参照ください。
fire_results変数の使用
アラートテンプレートでfire_results変数を使用して、アラート通知のログコンテンツを参照できます。
アラートモニタリングルール
Simple Log Serviceは、作成したアラートモニタリングルールに基づいてアラートメッセージを生成します。
アラートメッセージ
アラートがトリガーされると、Simple Log Serviceは次の情報を含むアラートメッセージを生成します。 この情報には、返されるアクセスエラーを示すステータスコード、エラーが発生したマシンのIPアドレス、およびエラーが発生した回数が含まれます。
{ "fire_results": [ { "status": "401", "ip": "127.0.0.1", "cnt": "3" }, { "status": "400", "ip": "127.0.0.1", "cnt": "7" }, { "status": "501", "ip": "127.0.0.1", "cnt": "4" }, { "status": "404", "ip": "127.0.0.1", "cnt": "4" }, { "status": "402", "ip": "127.0.0.1", "cnt": "6" }, null ] }
アラートンプレート
fire_results変数をアラートテンプレートに追加して、アラート通知で指定されたログコンテンツを参照できます。 アラートテンプレートの作成方法の詳細については、「アラートテンプレートの作成」をご参照ください。
結果変数を使用するUse the results variable
アラートテンプレートの結果変数を使用して、アラート通知のログコンテンツを参照できます。
アラートモニタリングルール
Simple Log Serviceは、作成したアラートモニタリングルールに基づいてアラートメッセージを生成します。
アラートメッセージ
アラートがトリガーされると、Simple Log Serviceは次の情報を含むアラートメッセージを生成します。 この情報には、返されるアクセスエラーを示すステータスコード、エラーが発生したマシンのIPアドレス、およびエラーが発生した回数が含まれます。
説明アラートモニタリングルールに複数のクエリステートメントが含まれている場合、results配列には複数の項目が含まれます。 各アイテムはクエリ文に対応します。
{ "results": [{ "store_type": "log", "region": "cn-hangzhou", "project": "test-alert", "store": "nginx-access-log", "query": "status >= 400 | select status, __source__ as ip, count(*) as cnt group by status, ip", "start_time": 1640006894, "end_time": 1640007014, "dashboard_id": "", "raw_results": [ { "status": "401", "ip": "127.0.0.1", "cnt": "3" }, { "status": "400", "ip": "127.0.0.1", "cnt": "7" }, { "status": "501", "ip": "127.0.0.1", "cnt": "4" }, { "status": "404", "ip": "127.0.0.1", "cnt": "4" }, { "status": "402", "ip": "127.0.0.1", "cnt": "6" }, null ], "raw_result_count": 6, "fire_result": { "status": "401", "ip": "127.0.0.1", "cnt": "3" }, "has_sql": true, "truncated": false, "role_arn": "" }] }
アラートンプレート
結果変数をアラートテンプレートに追加して、アラート通知で指定されたログコンテンツを参照できます。 アラートテンプレートの作成方法の詳細については、「アラートテンプレートの作成」をご参照ください。
テンプレート変数
{{ alert.results[0].raw_results | to_json }}
などのアラートテンプレートでJSON形式の変数を参照すると、変数の内容がJSON文字列としてアラート通知に表示されます。 アラート通知のコンテンツを行ごとに表示するようにアラートテンプレートを設定するときに、サイクルメソッドを使用することもできます。 このように、内容は読みやすいです。 詳細については、「新しいアラートテンプレートの構文」をご参照ください。 例:
{%-アラートの結果。fire_results %}
-status: {{ result.status }}, count: {{ result.cn t }}
{%- endfor %}
Simple Log Serviceでは、組み込み関数を使用してアラート通知の内容をフォーマットできます。 詳細については、「新しいアラートテンプレートの構文」および「アラートテンプレートの組み込み関数」をご参照ください。