1
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?

AWS Container InsightのメトリクスをDatadogで表示し、CloudWatch Logsと連携する

Last updated at Posted at 2025-01-06

はじめに

Datadogのメトリクスやログは統合タグ付けを設定すると、関係するデータ間を自動的にリンクしてくれるのでとても使いやすいのですが、統合タグ付けが設定されていないデータもダッシュボードのContext Linkを設定することで行き来することができます。

今回はこの頃AWSで強化された下記のメトリクスをカスタムメトリクスとしてDatadogに連携したのち、作成したダッシュボードからCloudWatch Logsに連携するようにContext Linkを設定してみます。

オブザーバビリティーが強化されたContainer Insight

2024年12月に公開された改善で、EKSではすでに提供されていたコンテナレベルのメトリクスをECSでも利用できるようにした改善です。これまでもCloudWatch Logsに出力されたContainer Insightのログを集計すれば同様の情報は手に入ったのですが、メトリクスとして提供されることでECSのサービスに含まれるタスクやコンテナごとのメトリクスを簡単に視覚化することができるようになりました。

image.png

Datadogには似たような(ほぼ同じ)機能としてライブコンテナがあるのですが、こちらはFargateとのインテグレーションが設定されたサービスのみ表示されるのと、表示できる期間が36時間と短いので注意が必要です。
image.png

ContainerInsightで収集できるメトリクス

下のキャプチャはAWS側でオブザーバビリティーが強化されたContainer Insightを有効にしていないテナントと、有効にしたテナントで流れてきたメトリクスサマリーをContainer Insightという文字でフィルタした例です。
タスクごとやコンテナごとのCPU、メモリ、ネットワーク、ストレージアクセスなどの情報を取得できるようになったことがわかります。

有効にしていないテナントのメトリクスサマリー
image.png

有効にしたテナントのメトリクスサマリー
image.png

下のグラフはecs.containerinsights.ContainerCpuUtilizedをサービス、タスク、コンテナごとのCPU利用率を表示した例です。
このメトリクスを使うと、Fargateとのインテグレーションを設定していないタスクについてもコンテナレベルのメトリクスをDatadogへ表示できるようになります。また、メトリクスとして取り込まれたデータはAPIクローラーが収集したデータとして15か月保存されるので、これまでよりもかなり長い期間表示することができます。

image.png

Context Menuを追加する

これだけでもだいぶうれしいのですが、せっかくDatadogを利用しているので、ダッシュボードにContext Linkを作成してグラフからCloudWatch Logs Insightのクエリへ移動できるようにしてみましょう。

ダッシュボードにコンテナごとのCPU利用率を表示する

コンテナごとのCPU利用率はecs.containerinsights.ContainerCpuUtilizedメトリクスで提供されるので、コンテナごとのCPU利用率をグラフに表示させたい場合次のようなグラフを作成します。

image.png

DatadogのダッシュボードからCloudWatch Logs Insightに連携する

DatadogのダッシュボードからDatadogにログの連携をしていないコンテナのログをCloudWatch Logs Insightで検索するには、次のようにグラフを設定します。

CloudWatch Logs Insightでログを検索するクエリとURLから確認していきます。

ECSではawslogsログドライバーでCloudWatch Logsにログを出力する場合、LogStream名はawslogs-stream-prefix/コンテナの名前/タスク IDというルールで設定されます。

例えば、awslogs-stream-prefixを標準のecsにした場合、特定のタスク(7ab9a90e0f6axxxxxxxxxxxxxxxxxxx)に含まれるappコンテナのログを検索するCWL Insightのクエリは次のようになります。

filter @logStream = 'ecs/app/7ab9a90e0f6axxxxxxxxxxxxxxxxxxx'
| fields @timestamp, @logStream, @message

ロググループMyAppに対し直近60分間のログを対象に検索する場合、CWL InsightのURLは次のようになります(見やすくするため改行を追加していますが本来は1行のURLです)。

https://ap-northeast-1.console.aws.amazon.com/cloudwatch/home?region=ap-northeast-1
#logsV2:logs-insights$3F
queryDetail$3D~(end~0~start~-3600~timeType~'RELATIVE~tz~'LOCAL~unit~'seconds~
editorString~'
filter*20*40logStream*20*3d*20*27ecs*2fapp*2f7ab9a90e0f6axxxxxxxxxxxxxxxxxxx*27*0a*
7c*20fields*20*40timestamp*2c*20*40logStream*2c*20*40message
~source~(~'*2fecs*2fMyApp)~lang~'CWLI)

コンテナのタスクIDは{{taskid.value}}で参照できるので、コンテキストリンクのURLは次のようになります。

https://ap-northeast-1.console.aws.amazon.com/cloudwatch/home?region=ap-northeast-1
#logsV2:logs-insights$3F
queryDetail$3D~(end~0~start~-3600~timeType~'RELATIVE~tz~'LOCAL~unit~'seconds~
editorString~'
filter*20*40logStream*20*3d*20*27ecs*2fapp*2f{{taskid.value}}*27*0a*
7c*20fields*20*40timestamp*2c*20*40logStream*2c*20*40message
~source~(~'*2fecs*2fMyApp)~lang~'CWLI)

Context Linksの+ Add a Context Linkをクリックしメニューを追加します。
image.png

適当に名前を付け、URLにはCWL InsightのクエリURLを設定します。

image.png

メトリクスをクリックすると、設定した値でコンテキストリンクが表示されます。

image.png

クリックすると、CWL Insightに移動しそのまま検索できます。

image.png

おわりに

DatadogのダッシュボードでAWSのカスタムメトリクスを表示すると、関連するデータへのリンクを簡単に追加することができるようになります。最初はダッシュボードをカスタマイズするというと少し難しく感じますが設定してみると意外と簡単にできるのでぜひ試してみてください。

1
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
1
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?