コドモン Product Team Blog

株式会社コドモンの開発チームで運営しているブログです。エンジニアやPdMメンバーが、プロダクトや技術やチームについて発信します!

AWS DevOps Agent でアラートの一次対応を自動化する

SREチームの檜山です!

AWS DevOps Agentを使って、アラート発生時の一次対応を自動化する仕組みを作りました。

一般にアラートが上がると、調査して問題があるかないかを見極めて必要に応じて対処することになるかと思います。DevOps Agentはこのアラートに問題がないかどうかを見極めるという一次対応を自動で行なってくれます。

AWSのチュートリアルをもとに実際に試せる環境をTerraformで用意してみたので、参考にしてみてください。(コードはAIで作成しています)

GitHub

Terraform github.com

※ 参考:AWSのサンプルコード github.com

構成

DevOps Agentが有能なので、単純な処理であればこの構成で構築可能です。強いて言えばCloudWatch AlarmからDevOps Agentに対して認証が必要なので、そこにLambdaを配置するくらいでした。

この環境ではテストしやすいLambda→CloudWatchでアラートの起点を作っていますが、ここはなんでもOKです。DatadogやNew Relicでアラートを集約していれば、これらを起点にすることも可能です。直接連携できるので、認証用のLambdaが不要になります。

構築

DevOps AgentはTerraformでは作りきれない部分があるので手動で作成し、その後その他のリソースをTerraformで apply するという流れで作ります。

DevOps Agent

まずはエージェントスペースを作成します。応答言語を日本語にします。

次にウェブフックを追加します。URLとシークレットキーが出力されるのでダウンロードしてください。

Slackと連携します。表示される内容に従って対応すればOKです。

Terraformのデプロイ

下記の12リソースを記事冒頭のTerraformコードをつかって apply します。

  • 検証用 Lambda(error-generator) — エラー出力用
  • 中継用 Lambda(webhook-executor) — HMAC署名(認証)してDevOps Agentへ通知
  • IAM ロール(error-generator 用) — ログ出力のみの最小権限
  • IAM ロール(webhook-executor 用) — ログ出力+Secrets Manager 読み取り
  • IAM ポリシー付与 ×3 — 上記ロールに基本実行権限と Secrets 読み取りを割り当て
  • Lambda 実行許可 — CloudWatch アラームが中継用 Lambda を呼べるようにする許可
  • CloudWatch アラーム — 検証用 Lambda のエラー数を監視して発火
  • Secrets Manager — WebHook の URL と署名キーを保管
  • CloudWatch ロググループ ×2 — 各 Lambda のログ保存先

シークレットの登録

ウェブフック追加時に出力されたキーをTerraformで作成したSecrets Managerに登録してください。

動作確認

Lambdaエラーの出力

下記コマンドでエラーを出力します。

AWS_PROFILE=XXX aws lambda invoke \
  --function-name devops-agent-demo-error-generator \
  --region ap-northeast-1 /dev/stdout

出力結果

正しく構築できていれば下記がSlackに通知されます。

出させているエラーの割にとても細かく調査してくれていることがわかります。より詳細な情報を確認したい場合は、View investigation でDevOps Agent専用のコンソールを開くことができるので、そこから確認することができます。また対話式による調査の深掘りや、Skillsの作成も可能です。

コスト

時間単位の課金です。無料枠もあります。

項目 内容
課金単位 エージェント秒(agent-second)従量課金
単価 $0.0083 / agent-second(≒ $0.50/分、約 $30/時間)
対象タスク Investigations(調査)/ Evaluations(評価)/ On-demand SRE tasks(同単価)
無料トライアル 新規・2ヶ月:スペース最大10/調査20時間/評価15時間/オンデマンド20時間
アイドル時 課金なし(呼ばれた分だけ)

※ 参考 AWS DevOps Agent Pricing https://aws.amazon.com/jp/devops-agent/pricing/

さいごに

単純なエラーでも原因を該当行まで特定し、スロットルや同時実行といった要因まで切り分けてくれました。アラートの一次対応を任せるには十分な精度だと思います。構成もシンプルなので、導入のハードルもそこまで高くありません。アラート対応の負荷に悩んでいる方などいれば、ぜひお試しいただけるといいかなと思います。