CloudWatch エージェントでPrometheus エクスポーターのメトリクスを取得する

Pocket

CloudWatch エージェントでPrometheus エクスポーターのメトリクスを取得する

どんなAWSサービスを使うの?

  • ECS-Fargate
  • Cloud watch

具体的にどんな感じ?

前準備:ECS-FargateにCloudWatchエージェントとPrometheusのエクスポータを入れておく

実際の動作:CloudWatchエージェントがPrometheusのエクスポータを叩き、結果をCloudWatchへ送る

 

https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/monitoring/ContainerInsights-Prometheus-Setup-ECS.html

ここら辺の話。

試しにapache exporterを使って動作を確かめてみる

ソースファイル

Dockerfile

以下のものをインストールしている

  • apache
  • CloudWatch agent
  • Supervisord
  • Prometheus exporter(apache exporter)

「RUN_IN_CONTAINER=True」を記載しないとコンテナでCloudWatchエージェントが動かない

supervisord.conf

Dockerfileでインストールしたものを起動するように使用

amazon-cloudwatch-agent.json

task_definition_list内の条件に合致するメトリクス取得対象を自動検出して「/tmp/cwagent_ecs_auto_sd.yaml」に吐き出す。

metric_declaration内の条件でCloudWatchにメトリクスを送る

prometheus.yaml

「/tmp/cwagent_ecs_auto_sd.yaml」内の情報で15秒間隔でメトリクスを取得するよってこと

結果

複数のコンテナが立ち上がってる場合、「/tmp/cwagent_ecs_auto_sd.yaml」に複数コンテナの情報が書き込まれ、立ち上がってる分だけのコンテナの情報を収集するので、CloudWatchエージェント用のコンテナを立てるのが普通?

 

ちなみに、、自身のコンテナの情報だけをCloudWatchへ送る方法もある。この場合、CloudWatchエージェント用のコンテナは不要。やり方は↓↓↓↓↓↓↓↓↓↓↓

コンテナローカルのメトリクス 取得ver.

コンテナローカルのメトリクス 取得ver.

コンテナの自動検出機能を使わないと↓こんな感じ↓になる

amazon-cloudwatch-agent.json(コンテナローカルのメトリクス 取得ver.)

prometheus.yaml(コンテナローカルのメトリクス 取得ver.)