2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Amazon ECS のメトリクスデータを、ADOT Collector を使って Prometheus と Garafana で可視化してみた

Last updated at Posted at 2022-11-20

はじめに

前回の記事 では、Amazon ECS のモニタリングを、Container Insights で行う方法を紹介しました。AWS CLI のコマンド 1 個だけで、Container Insights が利用できるので、非常に素早く利用開始できるのが特徴です。

Container Insights でも十分運用が出来ると思いますが、個人的に気になる点があります。Container Insights では、タスク単位の過去のメトリクスが取得出来ない挙動となっています。最新のメトリクスはタスク単位で取得できますが、過去に遡って確認することはできません。とはいえ、サービス単位の過去メトリクスが取得できるので、これで十分と考えることも出来ます。が、個人的にはタスク単位で過去のメトリクスが見たいときがあるので、別の方法を検証してみます。

Prometheus, Grafana で可視化

ECS には、ADOT Collector (AWS Distro for OpenTelemetry Collector) を利用して、コンテナのメトリクスを収集する仕組みがあります。これを利用すると、タスク単位で過去のメトリクスを取得し、可視化することが出来ます。今回は、ADOT Collector を使って、Prometheus と Grafana のマネージドサービスを利用する方法を整理します。

image-20221120180235552.png

まずどんな可視化ができるのかを紹介すると、シンプルな可視化の例ですが、次のように ECS Task ごとに Memory や CPU の使用率が取得できます。ECS Task の増減や再作成に合わせて、自動的に可視化ができるので、便利にモニタリングができます。

image-20221120181028802.png

「5b59c2643a7e4dba9749b8ad98d86ecb」や「c3b87ca3f42540689ac3f0a00f23843f」の文字列の羅列が見えますが、これは ECS の Task ID です。グラフの中に、黄色と緑の線が見えており、2 つの Task の状況がわかります。

それでは、ADOT Collector を使った構成方法を確認していきましょう!

Amazon Managed Service for Prometheus

Amazon Managed Service for Prometheus (AMP) は、既に作成している状態です。AMP の詳細画面に Endpoint - remote write URL が表示されています。

image-20221114003918307.png

ECS Task 定義作成

ECS の Task 定義を作成します。Task 定義の中で、ADOT Collector を有効化する欄があります。Create new task definition を選択します。

image-20221114004217197.png

適当に名前を入れます。

image-20221114004358969.png

1 個目のコンテナイメージを適当に指定します。中身はなんでも良い、独自アプリケーションの立ち位置のコンテナです。

image-20221114004500551.png

2 個目のコンテナイメージも同様に適当に指定します。

image-20221114004558002.png

Next を押します。

image-20221114005131800.png

Role を指定します。以下のものは、ADOT Collector に関する権限を付与しているロールです。

image-20221114005231588.png

Use log collection の部分はデフォルトのままです。

image-20221114005508644.png

ここが、ADOT Collector に関する大事な部分です。以下のように指定することで、ADOT Collector のコンテナが ECS Task 内で起動します。

  • Use trace colelction : on
  • Use metric collection : on
  • Amazon Managed Service for Prometheus の [Endpoint - remote write URL] を指定

image-20221114005532606.png

Create を押します。

image-20221114005552785.png

Task 定義が作成されました。

  • Container に、自動的に aws-otel-collector が入っている。これは、AWS Distro for OpenTelemetry Collector のコンテナイメージとなる。

image-20221114005732198.png

Service の作成

作成した ECS Task を使って、適当に Service を作成します。

image-20221114005948390.png

適当に指定して、Deploy します。

image-20221114010108525.png

Deploy が出来ました。

image-20221114010621112.png

ADOT Collector のログ

CloudWatch Logs に、ADOT Collector に関する Log group があります。

image-20221114011055870.png

適当に選択すると

image-20221114011129417.png

いろいろログが出ています。

image-20221114011151172.png

Grafana 権限設定

Amazon Managed Grafana (AMG) は事前に有効化していますが、AMP にアクセスするための権限設定が必要です。

image-20221114011806370.png

AMP に関して、Enable をします。

image-20221114011830109.png

Updating となります。

一定時間後、Active に変わりました。

image-20221114011857901.png

Grafana で可視化

Grafana のページを表示します。

image-20221114011500871.png

AWS Services を選びます。

image-20221114011607916.png

Prometheus を選択します。

image-20221114011644588.png

Region や、AMP を指定して、Add 1 data source を押します。

image-20221114012024805.png

Dashboard を開きます。

image-20221114013346178.png

新しい panel を追加します。

image-20221114013404274.png

データソースを変更して、AMP を選択します。

image-20221114013528699.png

以下の文字列を指定して Aplly を押します。Task ごとに CPU 使用率が取得できています。

ecs_task_cpu_utilized
{{aws_ecs_task_id}}
ECS CPU Utilized

image-20221114013848402.png

また、2枚目の Add Panel を押します。

image-20221114015530776.png

add

image-20221114015558231.png

メモリに関するパネルを追加します。

ecs_task_memory_utilized
{{aws_ecs_task_id}}

image-20221114015810507.png

このように、Memory と CPU に関するメトリクスが正しく取得できました。

image-20221114015837521.png

検証を通じてわかったこと

参考 URL

2
3
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
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?