Amazon Web Services ブログ
AWS Systems Manager Incident Manager からのインシデントレポートを自動化
本稿は、2024年4月15日に AWS Cloud Operations Blog で公開された “Automate incident reports from AWS Systems Manager Incident Manager” を翻訳したものです。
システムの信頼性を維持し、予期せぬインシデントに迅速に対応するためには、効果的なインシデント管理が最も重要です。AWS Systems Manager の機能である Incident Manager は、自動対応機能を提供することで、これらのインシデントの緩和と復旧を支援します。以前の Incident Manager に関するブログでは、エスカレーションメカニズムの設定、対応計画の作成、AWS Systems Manager Automation ランブックを使用した修復の自動化について説明しました。詳細については、 AWS Systems Manager Incident Managerで連絡先、エスカレーションプラン、対応プランを作成するをご覧ください。
インシデントライフサイクルの一環として、組織がインシデントの過去データを収集し、振り返って事後分析を行うことが重要です。お客様は AWS SDK を使用して、これらすべてのインシデントに関する情報をプログラムで収集してエクスポートすることができます。お客様からは、このレポート生成プロセスを自動化し、これらのレポートを一元化された場所に定期的にエクスポートする方法についてよく質問を受けます。
このブログでは、スケジュールに従って Incident Manager のレポートを生成し、Amazon Simple Storage Service (Amazon S3) に保存する方法を説明します。これらのレポートは、関係するリソース、頻発する問題、修正に要する時間などに基づいてインシデントを確認し、並べ替えるのに役立ちます。これらは、運用エンジニア、システム管理者、IT マネージャーに重要な気づきを与えます。過去のデータを掘り下げることで、アプリケーションやインフラストラクチャの異常を発見できます。
前提条件
このウォークスルーを行うには、以下の前提条件が必要です
ワークフロー
このソリューションは、以下のサービスによって実現されています。
- AWS CloudFormation
- Amazon S3
- AWS Identity and Access Management (IAM)
- AWS Systems Manager の機能である Automation
- AWS Systems Manager の機能である State Manager
- AWS Systems Manager の機能である Incident Manager
図1: Incident Manager レポート生成ソリューション
CloudFormation テンプレートは GitHub リポジトリ にホストされています。CloudFormation は、このソリューションで使用される必要なコンポーネントをデプロイします。これには、S3 バケット、Automation ランブック、State Manager アソシエーション、必要な IAM 権限が含まれます。Automation は Incident Manager API に接続して必要な情報を抽出し、CSV ファイル形式で S3 バケットにアップロードします。
ソリューションを実行するたびに、新しいレポートが生成されます。オプションとして、スケジュールでソリューションを実行することを選択した場合、CloudFormation テンプレートは、CloudFormation スタックの作成時にパラメータとして指定されたスケジュールで実行される State Manager アソシエーションを作成します。
Automation ランブックには、Python スクリプトを実行してレポートを生成および保存する aws:executeScript アクションが含まれています。Python スクリプトは ListIncidentRecords API を呼び出して、現在のリージョンのすべてのインシデントを取得します。次に、スクリプトはインシデントごとに ListRelatedItems API を実行して、関連するすべてのアイテムを取得します。収集したインシデントは CSV ファイルに保存され、IMReport-{Current Date}-{Time in UTC} の形式で名前が付けられます。この CSV ファイルは、ダウンロード用の S3 バケットにアップロードされます。さらに、このソリューションをカスタマイズして、各レポートを S3 へアップロードした時に SNS 通知を送信することができます。詳細については、 Amazon S3 イベント通知を参照してください。
ソリューションの手順
単一のアカウントまたはマルチアカウントおよびマルチリージョンのインシデント管理では、インシデントはすべてのアカウントとレプリケーションセットリージョンに複製されます。したがって、目的のアカウントとリージョンに CloudFormation テンプレートをデプロイして、インシデントとそれに関連するアイテムを取得できます。
ソリューションのデプロイ
- CloudFormation テンプレートをダウンロードします。
- レポートを生成したい AWS アカウントの CloudFormation コンソールに移動します。
- Create Stack で、with new resources (standard) を選択します。
- Prepare template で、Choose an existing template を選択し、Template source で Upload a template file を選択します。Choose file をクリックし、ステップ 1 でダウンロードしたテンプレートを選択します。
- Next をクリックします。
- Stack name に、スタック名 ( 例: incident-manager-reporting) を入力します。
- Parameters エリアで以下の操作を行い、Next をクリックします。
- ‘RunOnSchedule’ にて、定期的にレポートを生成する場合は true を選択し、レポートを手動で生成する場合は false を選択します。false を選択した場合、この CloudFormation テンプレートをデプロイした後、Generating OnDemand reports セクションを参照して、Automation ランブックを手動で実行する必要があります。
- ‘AssociationSchedule’ ( RunOnSchedule が true に設定されている場合のみ必要 ) では、CRON 式を入力します。デフォルトでは、毎週日曜日の 02:00 AM UTC に自動で実行されます。サポートされている CRON 式の詳細については、リファレンスを参照してください。
- Configure stack options ページで I acknowledge that AWS CloudFormation might create IAM resources. を選択し、Next をクリックします。
- Review and create ページで、Submit をクリックします。
テンプレートがデプロイされた後、図 2 に示されているように Outputs を選択して以下の値を確認してください。
- AWSSystemsManagerAutomationExecutionRole
- S3Bucket
- SystemsManagerAutomationDocument
図2:CloudFormation の出力リソース
オンデマンドレポートの生成
注意 – CloudFormation テンプレートをデプロイする際に `RunOnSchedule` パラメータを true に設定した場合は、このセクションをスキップして S3 コンソールからレポートをダウンロードのセクションに進んでください。
-
- Systems Manager Automationに移動します。
- Execute runbook をクリックします。
- Owned by me を選択し、Outputs で確認した SystemsManagerAutomationDocument の Value に表示されていたランブック名 (incident-manager-reporting-SystemsManagerAutomationDocument-*) を選択します。Next をクリックします。
図 3: Automation ランブック
- Simple execution を選択します。
- Input parameters エリアの AutomationAssumeRole には、 図 4 に示されているように CloudFormation スタックから出力された AWSSystemsManagerAutomationRole の Value を入力します。S3BucketName には、CloudFormation スタックから出力された S3Bucket の Value を入力します (これがデフォルト値になります)。
図 4: Automation Assume Role と S3 Bucket の入力
- Execute をクリックします。
Automation ランブックがアカウントのすべてのインシデントに関する情報を収集します。図 5 に示されているように、Executed steps で Step ID をクリックし、OutputPayload の Amazon S3 バケットと CSV ファイル名を確認します。
図 5: Systems Manager Automation の出力
S3 コンソールからレポートをダウンロード
S3 console に移動し、バケットを見つけて IM Report CSV をダウンロードします。図 6 に示されるように、ファイル名にはレポートが生成された日時 (UTC) が含まれています。
図 6: レポートファイルの IMReport CSV をダウンロード
図 7: Incident Manager レポートファイルの例
クリーンアップ
CloudFormation で作成したリソースをクリーンアップする:
- S3 バケット内に生成されたオブジェクトを手動で削除
- AWS S3 コンソールを開き、CloudFormation で生成された S3 バケットを見つけます。
- すべてのオブジェクトを選択し、Delete をクリックします。
- 削除を確定するには、テキスト入力フィールドに permanently delete と入力します。
- ‘Delete objects’ をクリックします。
- CloudFormation スタックを削除
- Open the AWS CloudFormation コンソールを開き、ナビゲーションペインで Stacks を選択します。
- 作成した CloudFormation スタックを選択し、Delete をクリックした後、確認画面で Delete をクリックします。
まとめ
このブログ記事では、Incident Manager API と AWS Systems Manager Automation および State Manager Association を使用して、全てのインシデントとそれに関連するアイテムをスケジュールに従って定期的に保存するレポート生成ソリューションについて説明しました。このソリューションでは以下のことができます:
- レポート生成の自動化: 手作業は不要 – プロセスを合理化し、レポートを Amazon S3 に安全に保存します。
- 貴重な傾向の発見: 頻繁に発生する問題、脆弱なリソース、解決時間を特定します。
- 効率と安全性の向上: ボトルネックを事前に解消し、再発を防止し、クラウド環境を最適化して最大限の回復力を実現します。
著者について: