このページでは、 Google Cloud コンソールで、バックアップと DR サービスのログ エクスプローラからログベースのアラートを構成する方法について説明します。
ログベースのアラートの作成と編集を行う ログ エクスプローラのインターフェースでは、次の手順で操作できます。
- アラートの名前と説明を入力します。
- 通知を受け取るログを選択します。
- 通知の間隔を設定します。
- インシデントの自動クローズまでの時間を設定します。
- 通知先のユーザーを指定します。
権限とロール
ログベースのアラートを作成して管理するには、Identity and Access Management(IAM)ロールに、ログベースのアラートの権限で説明されている権限が必要です。
ログベースのアラートの作成
アラートを通知するには、通知チャンネルが必要です。通知チャンネルは、アラートの作成前または作成中に作成できます。
ログベースのアラートを作成する手順は次のとおりです。
- Google Cloud コンソールで、[Logging]、[ログ エクスプローラ] の順に選択します。
[クエリ] ペインを使用して、通知を受け取るイベントを定義します。クエリペインのサンプルクエリに示すクエリ例を使用して、アラートを構成できます。
特定のイベント ID のイベントに関する通知を受け取るサンプルクエリを次に示します。
logName="projects/PROJECT_ID/logs/backupdr.googleapis.com%2Fbackup_recovery_appliance_events" jsonPayload.eventId=10046
[クエリ結果] ペインの上部にある [アラートを作成] をクリックします。ウィンドウの幅が狭すぎる場合、[アラートを作成] オプションは [その他の操作] メニューに表示されます。
[アラートの詳細] ペインで、アラートの名前と説明を入力します。
- [アラート ポリシー名] フィールドにアラートの名前を入力します。この名前は通知ヘッダーに表示されます。
- [ドキュメント] フィールドに、アラートの説明を入力します。このフィールドの内容のフォーマットと調整の詳細については、ドキュメント テンプレートでマークダウンと変数を使用するをご覧ください。管理コンソールの URL をドキュメント フィールドに含めることをおすすめします。回避策を追加してイベントを解決することもできます。
[次へ] をクリックします。
[アラートに含めるログを選択] ペインで、次の操作を行います。
- [ログをプレビュー] をクリックして、クエリと結果を確認します。必要に応じて、このペインでクエリを編集することもできます。
ラベルを追加して通知をカスタマイズし、より有益な情報を提供できます。[ラベルを追加] をクリックして、次の操作を行います。
- ラベルの表示名を入力します。
- リストから [ログフィールド名] を選択します。これらのフィールドは、選択したクエリ結果に基づいて表示されます。
- [正規表現] を入力して、正規表現グループが 1 つだけ含まれているフィールドから値を抽出します。
[次へ] をクリックします。
通知間の最小時間を選択します。この値により、このアラートが複数回トリガーされた場合に受信する通知の数を制御できます。たとえば、オプションから [5 分] を選択すると、通知を 5 分ごとに制限できます。必要に応じて、メニューでオプションを選択してインシデントの自動クローズ期間を調整できます。
[次へ] をクリックします。
アラートの通知チャンネルを 1 つ以上選択します(メール通知チャンネルを選択します)。すでにメール通知チャンネルを構成している場合は、リストからそれを選択できます。そうでない場合は、[通知チャンネルを管理] をクリックしてメール チャンネルを追加します。通知チャンネルの作成については、通知チャンネルを管理するをご覧ください。
[保存] をクリックします。
重要なイベント ID にアラートを設定することをおすすめします。
ログベースのアラートをテストする
作成したログベースのアラートをテストするには、クエリに一致するログエントリを手動で記述します。ログエントリを記述する手順は次のとおりです。
logEntries.write
リファレンス ページに移動するか、次のボタンをクリックします。次のログエントリを、PROJECT_ID 変数はプロジェクト ID に変更して構成します。アラート ポリシーに特定のイベント ID が含まれている場合や、特定のイベント ID が除外されている場合は、イベント ID も変更する必要があります。
"entries": [ { "jsonPayload": { "eventId": 10046, "errorMessage": "this is a manually generated error message created for testing" }, "resource": { "type": "backupdr.googleapis.com/BackupRecoveryAppliance", }, "severity": "ERROR", "logName": "projects/PROJECT_ID/logs/backupdr.googleapis.com%2Fbackup_recovery_appliance_events", } ]
構成したログエントリをコピーします。
[この API を試す] ペインで、次の手順を行います。
- API Explorer の [リクエスト本文] フィールドの内容を、前の手順でコピーしたログエントリに置き換えます。
- [実行] をクリックします。入力を求めるメッセージが表示されたら、認証フローに従います。
logEntries.write 呼び出しが成功すると、HTTP 200 レスポンス コードと空のレスポンス本文 {} が返されます。API Explorer の詳細については、API Explorer の使用をご覧ください。API Explorer の動作は Logging API と同じです。
ログエントリは、次の方法でアラートに指定されたフィルタと一致します。
- logName 値は、Cloud プロジェクトのバックアップ/リカバリ アプライアンス イベントのログイン情報を指定します。
- このログエントリの重大度の値は ERROR です。
- jsonPayload には、10046 プール満杯イベントが含まれています。
ログエントリを書き込むと、次のシーケンスが発生します。
- 新しいログエントリがログ エクスプローラに表示され、アラートがトリガーされます。
- インシデントが Cloud Monitoring で開かれます。
- インシデントの通知が届きます。メール通知チャンネルを構成した場合、通知が表示されます。
メール内の [インシデントを表示] をクリックすると、Cloud Monitoring でインシデントを確認できます。インシデントの詳細(確認とクローズの方法など)については、ログベースのアラートのインシデントを管理するをご覧ください。
複数のアラート ポリシーを作成する
イベントの優先度と緊急性に基づいてアラート ポリシーを作成できます。アラートの観点から、イベントは大きく次のカテゴリに分類できます。
緊急に対応する必要があるイベントで、より頻繁な通知が必要なイベント。たとえば、イベント ID 43901(失敗したスナップショット ジョブ)は 30 分ごとに報告する必要があります。次のクエリを使用してアラートを作成します。
Policyname = 'Snapshot job has failed' Notification rate limit = 30 min logName="projects/PROJECT_ID/logs/backupdr.googleapis.com%2Fbackup_recovery_appliance_events" AND jsonPayload.eventId=43901
緊急性が低く、通知の頻度を抑えることができるイベント。たとえば、イベント ID 10085(バックアップ プラン違反)は 1 日に 1 回だけ報告する必要があります。次のクエリを使用してアラートを作成します。
Policyname = 'Backup Plan Violation has occurred' Notification rate limit = 1 day logName="projects/PROJECT_ID/logs/backupdr.googleapis.com%2Fbackup_recovery_appliance_events" AND jsonPayload.eventId=10085
影響がなく、無視できるイベント。たとえば、イベント ID 10229(ストレージ容量超過エラー)と 42356(ファイルの変更が検出されました)は、Google サポートが誤検出であると宣言しているため、無視できます。次のクエリを使用してアラートを作成します。
Policyname = 'Backup/DR event has occurred' Notification rate limit = 6 hr logName="projects/PROJECT_ID/logs/backupdr.googleapis.com%2Fbackup_recovery_appliance_events" AND NOT jsonPayload.eventId=(10085 OR 10229 OR 42356 OR 43901)