0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

EC2からOpenTelemetryメトリクスを送ってCloudWatch Query Studioを試す

0
Posted at

CloudWatch のコンソールを開いたら、左タブの「すべてのメトリクス」が「クラシックメトリクス」に変わっていました。あと「Query Studio」という項目も増えていました。
最初はよくあるコンソール画面のUI変更と思ったのですが、CloudWatchのメトリクスに追加変更などがあったので検証しました。

この記事でやること・わかること

シンプルにまとめると以下です。

やること

  • EC2でOpenTelemetryメトリクスを送るようCloudWatchAgent設定
  • CloudWatch Query Studioでメトリクスを確認

わかること

  • EC2でのOpenTelemetryでメトリクスを送る設定方法
  • Query Studioでのメトリクスの簡単な見方

CloudWatchコンソールの変化

冒頭でも触れましたが「すべてのメトリクス」だったところが「クラシックメトリクス」になっています。
また、「Query Studio」という項目ができています。
スクリーンショット 2026-08-02 17.44.21.png

クラシックメトリクス

クラシックメトリクスの項目を選択すると従来から見慣れたメトリクス画面が表示されています。
スクリーンショット 2026-08-02 17.46.38.png

Query Studio

Query Studioには見慣れてない画面が表示されています。今回はこちらを使ってみます。
スクリーンショット 2026-08-02 17.47.16.png

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

メトリクスの確認方法

従来画面でのメトリクス確認方法

メモリ使用率が取得できています。よく見る画面だと思うので詳細は省きます。
image.png

Query Studio画面でのメトリクス確認方法

操作していて Datadog みたいな操作感だと思いました。

対象のメトリクスをまず選択します。
image-1.png

ラベルを選べます。アカウントIDやリージョン、ホストIDなど様々な項目があります。
今回はメモリ使用率を見たいため、state = used を選択しました。
image-2.png

Add binary operation という項目から * を選択します。
スクリーンショット 2026-08-02 23.04.15.png

operationに * と追加されるので Numberに 100 を追加します。
system.memory.utilization は 0〜1 の比率で返るので、%で見るために 100 をかけました)
スクリーンショット 2026-08-02 23.07.36.png

シンプルに設定するなら以下のように設定できます。

{"system.memory.utilization",state="used"} * 100

コンソール画面の赤枠部分をクリックするとGUIではなく文字列で設定できます。
スクリーンショット 2026-08-02 23.10.36.png

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

どちらを使うのがよいのか

基本的にこれからはOpenTelemetry側を使うのが良さそうです。ドキュメントの表記も「推奨」となっています。

ドキュメントに、従来からのメトリクスを使うユースケースとして挙げているのは以下の3つでした。これに当てはまらない場合はOpenTelemetryを使うのが良さそうです。

  • CloudWatch API との既存の統合がある場合
  • OpenTelemetry 形式ではまだ利用できない AWS サービスメトリクスとの互換性が必要な場合
  • CloudWatch Metrics Insights による SQL ベースのクエリを希望する場合

まとめ

EC2でOpenTelemetryでメトリクス送信をする設定をやってみました。これまでjsonだったのがyamlになるのとQuery Studioがまだ慣れないですが今後使う機会が増えるのでどんどん使っていきたいです。
コスト比較もそのうち調査してまとめます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?