Amazon DevOps Guru のベースラインを整備して1ヶ月ほど運用してみた #jawsug_asa

Amazon DevOps Guru のベースラインを整備して1ヶ月ほど運用してみた #jawsug_asa

Clock Icon2025.06.10

2025/06/10に開催された JAWS-UG朝会 #70 にて、 「 Amazon DevOps Guru のベースラインを整備して1ヶ月ほど運用してみた 」 というタイトルで登壇しました。

参加いただいた皆様、そして運営の皆様、ありがとうございました!

本ブログでセッションスライド、およびその内容を記載します。

セッションスライド

前提: AWS環境について

組織環境

  • AWS Organizations 環境
  • AWSアカウント数: 40以上
  • 複数の利用部門/システムが存在

私の役割

  • CCoEの技術メンバー として活動
  • 全AWSアカウントの統制(ベースライン)
  • 各利用部門とのコミュニケーション

DevOps Guru について

DevOps Guru とは?

https://aws.amazon.com/jp/devops-guru/

AWSアプリケーションの運用問題を自動検出・予測するマネージド監視サービス です。

  • 機械学習を使ってリソースのメトリクス/ログを分析
  • 異常なパフォーマンスや障害の兆候を インサイト として自動生成

小ネタですが、昔の公式ドキュメント 機械翻訳では「DevOpsアマゾンの達人」と書かれていたみたいです。 ※ Guru は "指導者" の意味

sc-2025-06-08_15-17109
画像引用: AWS上のアプリの障害監視をAIに任せる(DevOps Guru + Chatbotのカスタム通知) - Zenn

インサイトは2種類ある

  • 事後的インサイト(reactive): 既に発生した問題を検出
  • 予測的インサイト(proactive): 将来発生する可能性のある問題を予測

ほか補足

  • エージェント不要でワークロードに影響なし
  • 分析した分の従量課金。気軽に始められる
  • 多くのリソースタイプに対応(25以上)

sc-2025-06-08_15-19861
料金グループA: 約$2/month

sc-2025-06-08_15-12214
料金グループB: 約$3/month

DevOps Guru を導入してみた

目的と目標

導入の目的は以下を想定していました。

  1. 信頼性向上
  2. パフォーマンス効率向上
  3. コスト最適化
    • RDSが総コストの相当な割合を占有
    • ボトルネックとなるクエリやDB固有の問題を特定して、 パフォーマンス効率を改善できれば…
    • → 結果的にコスト最適化に繋がるはず!

そして目標は以下のとおり。

  • 各利用部門のAWSアカウントにてリソースに特定タグを付与するだけで、 DevOps Guru分析をすぐに開始できる状態。

実装方法

CloudFormation StackSet として全アカウントに展開しました。

AWSTemplateFormatVersion: "2010-09-09"
Description: Enable DevOps Guru baseline
Resources:
  ### リソース収集の設定
  CollectionByTagKey:
    Type: AWS::DevOpsGuru::ResourceCollection
    Properties:
      ResourceCollectionFilter:
        Tags:
          - AppBoundaryKey: devops-guru-monitoring
            TagValues:
              - default # 複数値指定可

  ### ログ異常検知機能を有効化(追加コスト無し)
  EnableLogAnomalyDetection:
    Type: AWS::DevOpsGuru::LogAnomalyDetectionIntegration
    DependsOn: CollectionByTagKey

ResourceCollectionFilter 部分にて分析対象の 登録方法を指定します。 以下3とおりの指定があります。

  • アカウント全体: サポートされる全てのAWSリソースを分析(コストに注意)
  • CloudFormationスタック単位: 特定のスタックに含まれるリソースを分析
  • タグベース(★今回の方式): 特定タグベースで分析

やらかしポイント: ワイルドカードの罠

最初は以下のようなテンプレートを書いちゃっていました。

# 抜粋
CollectionByTagKey:
 Type: AWS::DevOpsGuru::ResourceCollection
 Properties:
   ResourceCollectionFilter:
     Tags:
       - AppBoundaryKey: devops-guru-monitoring
         TagValues:
           - "*" # ← ワイルドカード!

さて、このときの挙動はどうなるでしょう。 「特定タグが付いているリソース "のみ" が分析される」でしょうか?

実際には 全リソーススキャン が発生しました。 その日に気づいて、すぐにロールバックしましたが 少しコストになってしまいました。

sc-2025-06-08_15-31595
全リソーススキャンが走った日の DevOps Guru 使用タイプ別コスト

ワイルドカードを設定すると以下のような挙動になります。

  1. アカウント内の全リソースをスキャン する (ここ大事)
  2. 指定タグがあれば、その値がアプリケーション境界としてグループ化される

DevOps Guru を少し運用してみて

トライアルとして、以下2件を1~2ヶ月 分析させてみた。

  • 利用部門の Aurora MySQL
  • CCoE管理の NATゲートウェイ

Aurora MySQL での検証

事前に Performance Insights を有効化 ※ して、 タグを付与してもらって分析開始しました。

DevOps Guru for RDS の前提条件。より高精度/詳細なインサイトを生成できる

結果、インサイトは特に出なかったです😢。 (いい解釈をすると、特に問題は無かった)

CCoE管理 NATゲートウェイでの検証

前提として、 各AWSアカウントのアウトバウンド通信を、CCoE管理 NATゲートウェイに集約しています。

sc-2025-06-09_06-15083
CCoE管理NATゲートウェイを分析

結果、数件のインサイトが発生しました。

NATゲートウェイのインサイトを深堀り

出てきたインサイトは The number of idle connections to NAT Gateway nat-example increased です。 実際のマネコン画面を以下に貼ります。

sc-2025-06-08_16-21833
インサイトの概要

sc-2025-06-08_16-881
グラフ化された異常

sc-2025-06-08_16-24872
集約されたメトリクス

sc-2025-06-09_06-25747

sc-2025-06-09_06-20806
レコメンデーション

実のところ、上記 DevOps Guruインサイトの情報だけでは、 「どこからどこへの通信」が局所的に発生したかは分からなかったです。

そのため、以下追加調査をしました。

追加調査1: VPC Flow Logs の分析

sc-2025-06-09_07-14017
Source/DestinationのIPを特定する(参考ブログ)

追加調査2: DNSクエリログ の分析

sc-2025-06-09_07-13982
Destinationドメインを特定する(参考ブログ)

最終的に、事象をまとめて利用部門に連携、 アプリログなどを見てもらうよう依頼しました。

手動の追加調査はあったものの、 DevOps Guru インサイトきっかけで 改善のネタが生まれたのは良いことかなと思います。

通知の仕組み

しばらく触っての所感ですが、 マネージドCloudWatchアラーム みたいで良いなという感じです。

高重要度のインサイトはやっぱり通知させたい、 ということで通知の仕組みも作りました。

Tips: 注意ポイント

前提として DevOps Guru には Organizations連携機能があり、 これを使うことでメンバーアカウントを委任管理者にできます。

sc-2025-06-09_07-23918
委任管理者内でインサイトを集約して確認可能

ただし委任管理者内の [設定 >SNSトピック] や EventBridgeイベントには集約されない 点に注意が必要です。

sc-2025-06-09_07-4018

最終的に実装した通知アーキテクチャ

以下のようなアーキテクチャを作りました。

sc-2025-06-09_07-5937
EventBridge → Lambda → SNS → Q → Slack

sc-2025-06-09_07-317
通知サンプル

(将来的には Bedrock あたりを呼び出して、インサイトを要約させて通知したいですね)

思ったこと

インサイトの通知テストがめっちゃ面倒! です。

機械学習による異常検知のため意図的な発生が難しく、 難儀しました。 ここについては GuardDuty のようなサンプル生成 API が欲しいですね…。

まとめ

以下まとめです。参考になれば幸いです。

  • DevOps Guruは AWSアプリケーションの運用問題を自動検出・予測するマネージド監視サービス
  • 事後的インサイト、予測的インサイトがある
  • 従量課金で気軽に始められる
  • 全リソーススキャンには注意
  • 使ってみた感想
    • 関連するメトリクスやイベントを良い感じに並べてくれる
    • 推奨事項も出してくれる
    • → マネージドCloudWatchアラームみたいな感じで良さそう

参考資料

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.