Simple Log Service (SLS) は、各アラートのライフサイクル全体をログエントリとして専用の Logstore に記録します。これらのログにクエリを実行することで、監視対象リソースの全体的なステータスと安定性を把握できます。本トピックでは、この専用 Logstore でカスタムクエリを実行してアラートログを分析する方法について説明します。
背景情報
SLS のアラート機能を初めて使用する際、リージョンを選択するプロンプトが表示されます。その後、システムは選択したリージョンに必要な SLS リソースを自動的に作成します。具体的には、[sls-alert-<Alibaba-Cloud-account-ID>-<region>] という名前のプロジェクトと、アラートログを格納するためのinternal-alert-center-log という名前の Logstore が作成されます。
internal-alert-center-log Logstore は無料で提供され、デフォルトのインデックスが含まれています。
SLS は internal-alert-center-log Logstore を使用して、アラートのトリガーや通知などに関する統計を提供する組み込みダッシュボードを生成します。詳細については、「アラートセンターダッシュボード」をご参照ください。この Logstore で独自のクエリと分析文を実行して、アラートログのカスタム分析を実行することもできます。
ログトピック
アラートログのトピックは、そのステータスによって異なります。__topic__ フィールドの値に基づいて、アラートログのステータスを識別できます。次の表で、一般的なログトピックを説明します。
ログトピック | 説明 |
__topic__: alert_state | データはアラート監視ルールに基づいて評価されます。 |
__topic__: alert_received | アラート管理システムがアラートを受信します。 |
__topic__: alert_routed | アラートが受信されると、アラートポリシーに基づいてルートごとにマージされます。 |
__topic__: alert_pre_filter | アラートが抑制またはサイレンスの段階に入ります。 |
__topic__: alert_silenced | アラートは抑制されるか、サイレンスされます。 |
__topic__: alert_pre_notify | アラートが通知送信の段階に入ります。 |
__topic__: alert_notified | アラート通知が送信されます。 |
__topic__: system_config | 設定エラーが発生するとログが生成されます。 |
操作手順
Log Serviceコンソールにログインします。
[プロジェクト] セクションで、管理するプロジェクト (例:sls-alert-13****47-cn-hangzhou) をクリックします。
タブで、internal-alert-center-log をクリックします。
Logstore のクエリと分析ページで、カスタムクエリを実行してアラートログを分析します。
クエリ文は、検索文と分析文から構成され、
検索文 | 分析文の形式になります。クエリ文の構文の詳細については、「検索構文と関数」および「SQL 分析構文」をご参照ください。例 1:特定の期間内にアラートをトリガーしたアラート監視ルールの総数と、各アラート監視ルールのトリガー数を計算します。
クエリ文
__topic__: alert_received | select "alert.project" as project, "alert.alert_name" as alert_name, count(*) as cnt group by project, alert_name order by cnt descクエリ結果には、プロジェクト、アラート監視ルールの名前、および対応するトリガー数が表示されます。
例 2:特定の期間内に、通知方法ごとにアラート通知の送信が失敗した回数を計算します。
クエリ文
__topic__: alert_notified and level: error | select "notifierConfig.type" as notificationType, count(*) as cnt group by notificationType order by cnt descクエリ結果には、各通知タイプとそれに対応するカウントが表示されます (例:Webhook が 77、DingTalk が 39)。
例 3:アラート通知の失敗原因を確認します。
クエリ文
__topic__: system_config and alert.alert_id: alert -1626423664 -868572 | select level, error, msg, "desc"クエリと分析結果
クエリで結果が返された場合、設定に問題があることを示します。設定エラーの詳細については、「設定エラー」をご参照ください。結果には、level、error、msg、desc 列が含まれます。たとえば、level が
warning、error がUserGroupEmpty、msg がgroup sls.app.audit.builtin is empty、desc がthis group will not be notifiedの結果は、ユーザーグループsls.app.audit.builtinが空であり、通知を受信しないことを示します。クエリと分析結果にデータが含まれていない場合、指定された通知方法が無効である可能性があります。たとえば、指定された Webhook URL が無効であるか、指定された DingTalk チャットボットが削除されています。次のクエリ文を実行して、詳細な原因を確認できます。
__topic__: alert_notified and level: error and alert.alert_id: alert -1626423664 -868572 | select errorこの例では、次のメッセージが返されます。このメッセージは、指定された Webhook URL が無効なため、アラート通知の送信に失敗したことを示しています。
Unexpected status code 400, response: {"code":"InvalidParameter","message":"invalid uri:http://localhost Failed to connect to localhost port 80: Connection refused"}