CloudWatch のコンソールを開いたら、左タブの「すべてのメトリクス」が「クラシックメトリクス」に変わっていました。あと「Query Studio」という項目も増えていました。
最初はよくあるコンソール画面のUI変更と思ったのですが、CloudWatchのメトリクスに追加変更などがあったので検証しました。
この記事でやること・わかること
シンプルにまとめると以下です。
やること
- EC2でOpenTelemetryメトリクスを送るようCloudWatchAgent設定
- CloudWatch Query Studioでメトリクスを確認
わかること
- EC2でのOpenTelemetryでメトリクスを送る設定方法
- Query Studioでのメトリクスの簡単な見方
CloudWatchコンソールの変化
冒頭でも触れましたが「すべてのメトリクス」だったところが「クラシックメトリクス」になっています。
また、「Query Studio」という項目ができています。

クラシックメトリクス
クラシックメトリクスの項目を選択すると従来から見慣れたメトリクス画面が表示されています。

Query Studio
Query Studioには見慣れてない画面が表示されています。今回はこちらを使ってみます。

2026年6月15日に一般提供開始されたサービスらしいですね。
画面以外のCloudWatchメトリクスの変化
ドキュメントとかを調べたら画面以外の部分も変更がありました。
ドキュメントにも CloudWatch メトリクス (Classic) と OpenTelemetry メトリクス (推奨) という形で記載されており、CloudWatch の OpenTelemetry メトリクス のドキュメントには「CloudWatch の OpenTelemetry メトリクスは、データ取り込みに OpenTelemetry Protocol (OTLP) を、クエリに PromQL を使用します」とあります。
使っていくとわかりますが、Query Studio は OpenTelemetry メトリクス機能が生えたことにより追加されたものです。従来のメトリクス画面が新しくなったわけではありませんでした。
OpenTelemetryとは
AWSドキュメントではのように書かれています。
OpenTelemetry は、アプリケーションからメトリクス、ログ、トレースを収集するためのベンダーに依存しない計装を提供するオープンソースのオブザーバビリティフレームワークです。
Amazon CloudWatch は OpenTelemetry をネイティブにサポートしているため、コミュニティ標準の SDK とコレクターを使用して、ベンダーロックインに縛られずにメトリクスを CloudWatch に直接送信できます。
ドキュメントにあるとおり、メトリクス、ログ、トレースを収集するためのベンダーに依存しない計装を提供するオープンソースのオブザーバビリティフレームワークです。
ベンダーロックインに縛られないことやよく使われているクエリ言語を使用できる、低コストなどのメリットもあるそうです。
CloudWatchメトリクスのクラシックと OpenTelemetry は何が違うのか
ドキュメントに主な違いの表があったので記載します。
| クラシック | OpenTelemetry | |
|---|---|---|
| 識別子 | 名前空間、メトリクス名、最大 30 個のディメンション | メトリクス名、最大 150 個のラベル |
| メトリクスのタイプ | 単一値、統計セット | ゲージ、合計、ヒストグラム、指数ヒストグラム |
| 取り込み | PutMetricData API または AWS CLI | OpenTelemetry Protocol (OTLP) |
| クエリ言語 | GetMetricStatistics、Metrics Insights | Prometheus クエリ言語 (PromQL) |
| アラーム | 標準CloudWatchアラーム | PromQL ベースの CloudWatch アラーム |
| コンソールエクスペリエンス | CloudWatch メトリクスコンソール | CloudWatch Query Studio |
| 保持期間 | 最大15か月 | 最大15か月 |
CloudWatchAgentを入れて OpenTelemetry でメトリクスを送る
EC2にCloudWatchAgentを入れて OpenTelemetry でメトリクスを送る設定を試します。比較のために従来の設定も試します。
CloudWatch エージェントを入れる
ここは従来から変わらず共通です。
以下コマンドでCloudWatchAgentをインストールします。
dnf install amazon-cloudwatch-agent
OpenTelemetry でメトリクスを送るための設定
以下内容を/opt/aws/amazon-cloudwatch-agent/etc/otel-config.yamlに作成します。
receivers:
hostmetrics/cwagent:
collection_interval: 60s
scrapers:
memory:
metrics:
system.memory.utilization:
enabled: true
filesystem:
metrics:
system.filesystem.utilization:
enabled: true
processors:
resourcedetection/cwagent:
detectors: [env, ec2]
batch/cwagent: {}
exporters:
otlphttp/cwagent:
metrics_endpoint: https://monitoring.ap-northeast-1.amazonaws.com/v1/metrics
auth:
authenticator: sigv4auth/cwagent
extensions:
sigv4auth/cwagent:
region: "ap-northeast-1"
service: "monitoring"
service:
extensions: [sigv4auth/cwagent]
pipelines:
metrics/cwagent:
receivers: [hostmetrics/cwagent]
processors: [resourcedetection/cwagent, batch/cwagent]
exporters: [otlphttp/cwagent]
設定ファイルを保存後、以下コマンドで設定反映します。
/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/etc/otel-config.yaml -s
従来からの設定方法でメトリクスを送る
以下内容を/opt/aws/amazon-cloudwatch-agent/etc/agent-config.jsonに作成します。
{
"agent": {
"metrics_collection_interval": 60,
"run_as_user": "cwagent"
},
"metrics": {
"namespace": "CWAgent",
"append_dimensions": {
"InstanceId": "${aws:InstanceId}"
},
"metrics_collected": {
"mem": {
"measurement": ["mem_used_percent"]
},
"disk": {
"measurement": ["disk_used_percent"],
"resources": ["/"]
}
}
}
}
設定ファイルを保存後、以下コマンドで設定反映します。(前に追加したOpenTelemetryの設定に追加するのでappend-config)
/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a append-config -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/etc/agent-config.json -s
メトリクスの確認方法
従来画面でのメトリクス確認方法
メモリ使用率が取得できています。よく見る画面だと思うので詳細は省きます。

Query Studio画面でのメトリクス確認方法
操作していて Datadog みたいな操作感だと思いました。
ラベルを選べます。アカウントIDやリージョン、ホストIDなど様々な項目があります。
今回はメモリ使用率を見たいため、state = used を選択しました。

Add binary operation という項目から * を選択します。

operationに * と追加されるので Numberに 100 を追加します。
(system.memory.utilization は 0〜1 の比率で返るので、%で見るために 100 をかけました)

シンプルに設定するなら以下のように設定できます。
{"system.memory.utilization",state="used"} * 100
コンソール画面の赤枠部分をクリックするとGUIではなく文字列で設定できます。

次のようなメトリクスグラフが確認できました。以外と簡単でした!

どちらを使うのがよいのか
基本的にこれからはOpenTelemetry側を使うのが良さそうです。ドキュメントの表記も「推奨」となっています。
ドキュメントに、従来からのメトリクスを使うユースケースとして挙げているのは以下の3つでした。これに当てはまらない場合はOpenTelemetryを使うのが良さそうです。
- CloudWatch API との既存の統合がある場合
- OpenTelemetry 形式ではまだ利用できない AWS サービスメトリクスとの互換性が必要な場合
- CloudWatch Metrics Insights による SQL ベースのクエリを希望する場合
まとめ
EC2でOpenTelemetryでメトリクス送信をする設定をやってみました。これまでjsonだったのがyamlになるのとQuery Studioがまだ慣れないですが今後使う機会が増えるのでどんどん使っていきたいです。
コスト比較もそのうち調査してまとめます。
