DevOps Agentのメトリクスとログを確認してみた

DevOps Agentのメトリクスとログを確認してみた

2026.04.28

こんにちは。たかやまです。

AWS DevOps AgentはGAに伴い、メトリクスとログの配信がサポートされました。

https://docs.aws.amazon.com/devopsagent/latest/userguide/configuring-capabilities-for-aws-devops-agent-vended-logs-and-metrics.html#vended-cloudwatch-metrics

今回のサポートでDevOps Agentでは調査タスクや評価タスクの稼働状況をCloudWatchメトリクスで確認できるようになりました。

また、サードパーティーからの受信イベントやトポロジ作成といったサービス運用イベントをVended Logsで確認できるようになりました。

今回は DevOps Agentのメトリクスとログ を実際に確認していきたいと思います。

さきにまとめ

メトリクス

  • Service-Linked Role AWSServiceRoleForAIDevOps が前提条件(プレビュー期間中に Agent Space を作成した場合は手動作成が必要)
  • AWS/AIDevOps ネームスペースに以下5種類のメトリクスが AgentSpaceUUID ディメンション単位で発行される
    • TopologyCompletionCount トポロジ処理の完了数
    • ConsumedInvestigationTime 調査タスクの実行時間(秒)
    • ConsumedEvaluationTime 評価タスクの実行時間(秒)
    • ConsumedOnDemandTime オンデマンドSREタスクの実行時間(秒、公式ドキュメント未記載)
    • ConsumedChatRequests チャットリクエスト数

ログ

  • Vended LogsはDevOps Agentサービスの運用イベントログ(調査タスクの内部処理は対象外)
  • 配信先はCloudWatch Logs / S3 / Firehoseの3種類から選択可能
  • 配信レベルはサービスレベル / Agent Spaceレベルで設定可能

メトリクス確認

Service-Linked Roleの作成

こちら前提条件としてService-Linked Roleが必要になります。

プレビュー期間中にDevOps Agentを作成していた方は、手動で作成する必要があります。
※3月13日以降にDevOps Agentを作成して、Service-Linked Roleが作成されている場合には対応不要です。

CleanShot_2026-04-18_18-03-26@2x.png
Vended Logs and Metrics - AWS DevOps Agent

作成については、IAMコンソールまたはAWS CLIのいずれかで作成できます。

  • IAMコンソールで「AWS DevOps Agent」サービスに対応する AWSServiceRoleForAIDevOps ロールを作成
  • AWS CLIで以下のコマンドを実行して作成
    aws iam create-service-linked-role --aws-service-name aidevops.amazonaws.com
    

私の環境では AWSServiceRoleForAIDevOps ロールが存在しなかったため、今回はAWS CLIで作成します。

実行した結果は以下のとおりです。

~ $ aws iam create-service-linked-role --aws-service-name aidevops.amazonaws.com
{
    "Role": {
        "Path": "/aws-service-role/aidevops.amazonaws.com/",
        "RoleName": "AWSServiceRoleForAIDevOps",
        "RoleId": "AROAT37FWTZQSFGC5WVQB",
        "Arn": "arn:aws:iam::266232831585:role/aws-service-role/aidevops.amazonaws.com/AWSServiceRoleForAIDevOps",
        "CreateDate": "2026-04-18T08:48:24+00:00",
        "AssumeRolePolicyDocument": {
            "Version": "2012-10-17",
            "Statement": [
                {
                    "Effect": "Allow",
                    "Action": [
                        "sts:AssumeRole"
                    ],
                    "Principal": {
                        "Service": [
                            "aidevops.amazonaws.com"
                        ]
                    }
                }
            ]
        }
    }
}

作成後、IAMコンソールで以下のようにService-Linked Roleが表示されています。

CleanShot_2026-04-18_17-49-30@2x.png

作成されたロールのポリシーと信頼関係は以下の通りです。

IAMポリシー
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "sid1",
            "Effect": "Allow",
            "Action": [
                "cloudwatch:PutMetricData"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "cloudwatch:namespace": [
                        "AWS/AIDevOps"
                    ]
                }
            }
        },
        {
            "Sid": "LatticeCreateResourceGateway",
            "Effect": "Allow",
            "Action": [
                "vpc-lattice:CreateResourceGateway"
            ],
            "Resource": "arn:aws:vpc-lattice:*:*:resourcegateway/*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestTag/AWSAIDevOpsManaged": "true"
                }
            }
        },
        {
            "Sid": "LatticeTagResourceGateway",
            "Effect": "Allow",
            "Action": [
                "vpc-lattice:TagResource"
            ],
            "Resource": "arn:aws:vpc-lattice:*:*:resourcegateway/*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestTag/AWSAIDevOpsManaged": "true"
                }
            }
        },
        {
            "Sid": "LatticeManageTaggedResourceGateways",
            "Effect": "Allow",
            "Action": [
                "vpc-lattice:DeleteResourceGateway"
            ],
            "Resource": "arn:aws:vpc-lattice:*:*:resourcegateway/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/AWSAIDevOpsManaged": "true"
                }
            }
        },
        {
            "Sid": "LatticeGetResourceGateway",
            "Effect": "Allow",
            "Action": [
                "vpc-lattice:GetResourceGateway"
            ],
            "Resource": "arn:aws:vpc-lattice:*:*:resourcegateway/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/AWSAIDevOpsManaged": "true"
                }
            }
        },
        {
            "Sid": "DescribeApis",
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeVpcs",
                "ec2:DescribeSubnets",
                "ec2:DescribeSecurityGroups"
            ],
            "Resource": "*"
        },
        {
            "Sid": "CreateLatticeServiceLinkedRole",
            "Effect": "Allow",
            "Action": "iam:CreateServiceLinkedRole",
            "Resource": "arn:aws:iam::*:role/aws-service-role/vpc-lattice.amazonaws.com/AWSServiceRoleForVpcLattice",
            "Condition": {
                "StringLike": {
                    "iam:AWSServiceName": "vpc-lattice.amazonaws.com"
                }
            }
        }
    ]
}

おもな権限として以下になりますね

  • CloudWatchメトリクス発行: cloudwatch:PutMetricDataAWS/AIDevOps ネームスペースに限定
  • VPC Lattice Resource Gateway管理: AWSAIDevOpsManaged タグ付きリソースに限定して作成・削除・参照・タグ付け
  • EC2ネットワーク情報参照: ec2:DescribeVpcs / DescribeSubnets / DescribeSecurityGroups で構成把握
  • VPC Lattice用SLR作成: AWSServiceRoleForVpcLattice の自動作成委譲
信頼関係
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "aidevops.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}

メトリクスの確認

Service-Linked Roleが適切に設定されると、DevOps Agent は CloudWatch に対して自動的にメトリクスを発行します。

メトリクスは AgentSpaceUUID ディメンション単位で 発行されます。

現在利用可能なメトリクスとして以下のメトリクスが発行されます。

メトリクス名 説明 単位 有用な統計
ConsumedChatRequests Agent Spaceが消費したチャットリクエスト数 Count Sum, Average
ConsumedInvestigationTime 調査タスクの実行時間 Seconds Sum, Average, Maximum
ConsumedEvaluationTime 評価タスク(Prevention)の実行時間 Seconds Sum, Average, Maximum
TopologyCompletionCount トポロジ処理(初期作成・手動更新・日次更新)の完了数 Count Sum, SampleCount
メトリクス一覧

後述する載っていないメトリクスもあるので執筆時点の内容を魚拓としてスクショを載せておきます。

CleanShot_2026-04-18_23-40-57@2x.png

Vended Logs and Metrics - AWS DevOps Agent

メトリクスはCloudWatchコンソールの、左ペインの「メトリクス」>「すべてのメトリクス」>「AIDevOps」から確認できます。

CleanShot_2026-04-18_22-11-53@2x.png

メトリクスはAgent Space の UUID 単位でメトリクスが表示されます。

CleanShot_2026-04-18_22-13-50@2x.png

コンソール上ではドキュメントではなかった、 ConsumedOnDemandTime メトリクスがありました。
多分こちらは オンデマンド SRE タスク の稼働時間を表すメトリクスになりそうですね。

この辺りも追ってドキュメントが追いついてくれると思います。

総稼働時間にアラート設定しようとしてみる

ここからはありそうなユースケースとして、DevOps Agentの合計調査時間を可視化してコスト監視アラートを設定してみたいと思います。

DevOps Agentは、各タスクの稼働時間に対して「$0.0083 / エージェント秒(1時間あたり約 $29.88)」の従量課金が発生します。
(また、初回タスク実行後2ヶ月間はAWS Free Tierが提供されます。)

項目 料金
Investigation(調査) $0.0083 / エージェント秒
Evaluation(評価) $0.0083 / エージェント秒
On-demand SRE tasks(チャット) $0.0083 / エージェント秒

参照 : AWS DevOps Agent Pricing

そのため「今月、調査タスクが何時間動いたのか」はコスト感の把握に直結します。

ConsumedInvestigationTime は各 Agent Space で5分ごとに秒単位で発行されます。
全 Agent Space を横断して合算し、月初からの累計時間として算出することで「今月の総稼働時間」が把握できます。

合計調査時間のメトリクス式

CloudWatchコンソールの「グラフ化したメトリクス」タブで「数学式を追加」→「空の式」を選択し、以下の3つの式を入力します。

e1(検索式・グラフ非表示)として全 Agent Space の系列を動的に取得します。

SEARCH('{AWS/AIDevOps,AgentSpaceUUID} MetricName="ConsumedInvestigationTime"', 'Sum', 300)

e2(合算・時間単位・グラフ非表示)として全系列を合算し秒→時間に変換します。後続のダッシュボードで参照する中間値です。

SUM(e1)/3600

e3(月間累積・グラフ表示)として e2 を累積し、月初からの合計調査時間を右肩上がりの線グラフで表示します。

RUNNING_SUM(e2)

RUNNING_SUM は前のデータポイントに現在値を加算する演算子です。
e2 が「その5分で消費した時間」なので、累積することで月初からの累計時間になります。

e1で設定した SEARCH 式を使うことで、新しい Agent Space が追加された場合も自動的に合算対象に含まれます。

CleanShot_2026-04-19_10-44-08@2x.png

次にこちらの数式を使ってアラートを設定してみます。

メトリクスから設定してみようとしますが... SEARCH 関数を含む数式はアラームを設定できないと出ました。

CleanShot_2026-04-26_16-47-44@2x.png

公式ドキュメントにも以下の通り記載されており、複数の時系列を対象にするには Metrics Insights SQL を使用する必要があるとのことです。

You can't create an alarm based on the SEARCH expression. Only alarms based on Metrics Insights SQL queries can operate on multiple time series.

https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Create-alarm-on-metric-math-expression.html

「アラームの作成」→「マルチソースクエリ」タブから以下のSQLクエリを入力します。

SELECT SUM("ConsumedInvestigationTime")
FROM "AWS/AIDevOps"

ただ、Metrics Insights でのアラームは最大3時間の集計期間しか設定できないため、月間監視という意味ではできなさそうです。

Only the latest 3 hours of data can be used for evaluating the alarm's conditions. However, you can visualize up to two weeks of data on the alarm's detail page graph

https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/alarm-limits.html

CleanShot_2026-04-26_17-27-21@2x.png

そもそもDevOps Agent自体で月間の合計時間を出しています。

CleanShot_2026-04-26_19-12-54@2x.png

月初からの正確な累計時間の利用状況を取得したい場合は、aws devops-agent get-account-usage APIを利用するのが確実だと思います。

実行すると以下のようなレスポンスがかえってきます。
内容としては monthlyAccountInvestigationHours.usage / limit が時間単位で含まれており、月初リセットも API 側で管理されます。
(こちらのAPIを使ったアラームの設定はまた別記事で検証したいと思います)

$ aws devops-agent get-account-usage
{
    "monthlyAccountInvestigationHours": {
        "limit": 200,
        "usage": 2.3852777777777776
    },
    ...
    "usagePeriodStartTime": "2026-04-01T00:00:00+00:00",
    "usagePeriodEndTime":   "2026-04-25T07:59:43.918000+00:00"
}

get-account-usage - AWS CLI Command Reference

ただ、通常のメトリクスでも単一のAgent SpaceになりますがCloudWatchアラームで最大7日間の集計期間であれば設定できるので、短期間でのスパイク検知には利用できますね

CleanShot_2026-04-26_20-51-21@2x.png

ログ確認

次はログ確認です。

ここで配信されるログは「DevOps Agent サービス自体の運用イベントログ」です。
具体的にはエージェントが外部サービスから受信したイベント、トポロジ作成・更新ジョブの状態変化、Webhook検証エラー、サービス登録失敗などが対象になります。

調査タスク(Investigation)や評価タスク(Evaluation)の 内部処理内容そのもの はログとして配信されないので、調査時間・回数のトラッキングは前のセクションで紹介した CloudWatch メトリクスを利用します。

主なログイベント種別

イベント 内容 レベル
Agent inbound event received 統合ソースからのイベント受信(例 PagerDutyのインシデントイベント) INFO
Agent inbound event dropped 受信イベントがエージェント処理前に破棄された(不正データ等の理由が含まれる) TBD
Agent outbound communication failure 第三者連携への外部通信失敗(タスクIDと宛先識別子を含む。例 認証エラー) TBD
Topology creation queued トポロジ作成ジョブがキューイングされた INFO
Topology creation started トポロジ作成ジョブの処理が開始された INFO
Topology creation finished トポロジ作成ジョブの完了(初回作成・更新・日次リフレッシュ) INFO
Resource discovery failed トポロジ作成中のリソースディスカバリ失敗 ERROR
Service registration failed サービス登録の不可逆な失敗 ERROR
Webhook Validation fails DevOps Agentが受信したWebhookが期待するスキーマと一致しない ERROR
Association Validation status updates Agent Spaceアソシエーションの検証ステータスがvalid⇔invalidに変化(IAMロール不正等が原因) ERROR/INFO

DevOps Agentでは、Vended LogsとしてCloudWatch Logs / Amazon S3 / Amazon Data Firehoseの3つの配信先にログを送信できます。

配信されるログタイプは執筆時点で APPLICATION_LOGS の1種類で、サービスが発行する全ての運用イベントが含まれます。

裏ではCloudWatch Logsの配信基盤(Delivery Source / Destination / Delivery)を経由してログがルーティングされる仕組みです。

Vended Logs and Metrics - AWS DevOps Agent

ログ配信設定

ログ配信は以下の2つのレベルで設定できます。

配信レベル 設定画面 含まれるイベント
サービスレベル サービス登録 (Service Registration) アカウント全体のサービス連携イベント
Agent Spaceレベル Agent Space ページ 個別Agent Spaceに紐づくイベント

サービスレベル
CleanShot_2026-04-26_21-40-31@2x.png

Agent Spaceレベル
CleanShot_2026-04-26_21-46-16@2x.png

配信レベルでの設定は変わらないので、今回はAgent SpaceからS3を指定して設定します。

S3のみオプションでHive互換ファイルの指定とパーティションの指定設定があります。

CleanShot_2026-04-26_22-12-00@2x.png

ログ配信を設定するIAMユーザー/ロールには aidevops:AllowVendedLogDeliveryForResource 権限が必要です。

加えて、CloudWatch Logsの配信API群(logs:PutDeliverySource / logs:PutDeliveryDestination / logs:CreateDelivery 等)と、配信先別の権限(CloudWatch Logs / S3 / Firehose)が必要になります。

詳細な権限要件は公式ドキュメントを参照してください。

なお、コンソールから設定する場合は、設定者に上記権限が付与されていればコンソール側で自動的に必要なAPIが呼び出されます。

配信されたログの確認

数分後、指定したS3バケットにログが配信されてきました。

S3バケットには AWSLogs/{アカウントID}/aidevops/{リージョン}/{yyyy}/{MM}/{dd}/{HH}/ のパーティション形式でgzip圧縮されたNDJSONファイルとして格納されます。

CleanShot_2026-04-27_23-00-13@2x.png

実際のログイベントは以下のようなJSON形式です。

PagerDutyからの受信イベント(Agent inbound event received)

{
  "optional_account_id": "123456789012",
  "optional_agent_space_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "optional_level": "INFO",
  "optional_association_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "optional_status": "PROCESSING",
  "optional_webhook_id": "-",
  "optional_mcp_endpoint_url": "-",
  "optional_service_type": "pagerduty",
  "optional_service_endpoint_url": "-",
  "optional_service_id": "-",
  "optional_request_id": "-",
  "optional_operation": "-",
  "optional_task_type": "-",
  "optional_task_id": "-",
  "optional_reference": "-",
  "optional_error_type": "-",
  "optional_error_message": "-",
  "optional_details": {},
  "resource_arn": "arn:aws:aidevops:us-east-1:123456789012:agentspace/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "event_timestamp": 1776810884234,
  "timestamp": "1776810884234",
  "resource_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
他のサンプル(Topology作成完了 / optional_details)

Topology作成完了イベント(Topology creation finished)

{
  "optional_account_id": "123456789012",
  "optional_agent_space_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "optional_level": "INFO",
  "optional_association_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "optional_status": "COMPLETED",
  "optional_webhook_id": "-",
  "optional_mcp_endpoint_url": "-",
  "optional_service_type": "-",
  "optional_service_endpoint_url": "-",
  "optional_service_id": "-",
  "optional_request_id": "-",
  "optional_operation": "TOPOLOGY_REFRESH",
  "optional_task_type": "-",
  "optional_task_id": "-",
  "optional_reference": "-",
  "optional_error_type": "-",
  "optional_error_message": "-",
  "optional_details": {},
  "resource_arn": "arn:aws:aidevops:us-east-1:123456789012:agentspace/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "event_timestamp": 1776963808950,
  "timestamp": "1776963841260",
  "resource_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

optional_details にサービス固有のメッセージが入る場合もあります(PagerDuty受信のevent ID付き例)。

{
  "optional_level": "-",
  "optional_status": "-",
  "optional_service_type": "-",
  "optional_operation": "-",
  "optional_details": {
    "message": "Received event from PagerDuty with event ID XXXXXXXXXXXXXX"
  },
  "resource_arn": "arn:aws:aidevops:us-east-1:123456789012:agentspace/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "event_timestamp": 1777296184981,
  "timestamp": "1777296223332",
  "resource_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

ログのフィールドは以下のとおりです。

フィールド 説明
event_timestamp Long イベント発生時刻(Unixタイムスタンプ)
resource_arn String イベントを発行したリソースのARN
request_id String AWS CloudTrailやサポートチケットと紐付けるためのリクエスト識別子
optional_account_id String ログに紐づくAWSアカウントID
optional_level String ログレベル(INFO / WARN / ERROR
optional_agent_space_id String Agent Space の識別子
optional_association_id String ログに紐づくアソシエーション識別子
optional_status String トポロジ操作のステータス
optional_webhook_id String Webhook識別子
optional_mcp_endpoint_url String MCPサーバーのエンドポイントURL
optional_service_type String 連携サービス種別(PAGERDUTY / DYNATRACE / DATADOG / GITHUB / SLACK / SERVICENOW
optional_service_endpoint_url String 第三者連携のエンドポイントURL
optional_service_id String ソースの識別子
optional_operation String 実行された操作名
optional_task_type String エージェントバックログタスク種別(INVESTIGATION / EVALUATION
optional_task_id String エージェントバックログタスクの識別子
optional_reference String エージェントタスクからの参照情報(例 Jiraチケット)
optional_error_type String エラー種別
optional_error_message String 操作失敗時のエラー内容
optional_details String/JSON 操作パラメータや結果を含むサービス固有のイベントペイロード

optional_ プレフィックスのフィールドはイベント種別に応じて値が入る条件付きフィールドで、すべてのログイベントがすべてのフィールドを使うわけではありません。

最後に

DevOps Agent のメトリクスとログを実際にCloudWatchで確認してみました。

メトリクス側は ConsumedInvestigationTime をSum集計し、math式(SEARCH() + SUM(e1)/3600)で全 Agent Space 横断の合計調査時間を時間単位で可視化できました。

SEARCH式を使う数式はそのままではアラームに利用できないため、累計値を扱いたい場合は aws devops-agent get-account-usage APIが選択肢になります。

ログ側はVended LogsとしてS3に配信し、Agent inbound event receivedTopology creation 系のサービス運用イベントが流れていることが確認できました。

こうしたメトリクスとログの可観測性が揃ったことで、DevOps Agentを本格運用に乗せやすくなりますね。

このブログがどなたかの参考になれば幸いです。

以上、たかやま(@nyan_kotaroo)でした。

この記事をシェアする

関連記事