2018年10月1日月曜日

Prometheus と cAdvisor を連携してコンテナごとのメトリックを取得する方法

概要

前回 dockerd の Daemon metrics を使って docker コンテナのメトリック情報を監視してみました
ただ Daemon metrics の場合各コンテナごとのメトリック情報は取得できませんでした
今回は代わりに cAdvisor を使い各コンテナごとのメトリック情報を取得してみました

環境

  • Ubuntu 16.04 LTS
  • Prometheus 2.4.2
  • docker 18.03.1-ce
  • cAdvisor v0.27.4

cAdvisor のインストール

監視対象の docker ホストで以下のコマンドを実行します
普通に cAdvisor をインストールしています
ホスト側は 8080 ポートを使っているのですでに 8080 ポートを使っている場合は別のポートにしてください

docker run \
  --volume=/:/rootfs:ro \
  --volume=/var/run:/var/run:ro \
  --volume=/sys:/sys:ro \
  --volume=/var/lib/docker/:/var/lib/docker:ro \
  --volume=/dev/disk/:/dev/disk:ro \
  --publish=8080:8080 \
  --detach=true \
  --name=cadvisor \
  google/cadvisor:latest

この時点で cAdvisor はインストールされているので localhost:8080 にアクセスすると cAdvisor の UI でメトリック情報を確認することができます

Prometheus に監視対象を追加する

  • vim prometheus.yml

scrape_configs に以下の job_name を追加しましょう

scrape_configs:
  - job_name: 'worker_cadvisor'
    static_configs:
    - targets: ['192.168.100.12:8080']

追記したら Prometheus のコンテナを再起動します

  • docker restart prometheus

prometheus の部分は Prometheus のコンテナ名またはコンテナ ID になります

動作確認

Status -> Targets に監視対象の exporter が追加されていると思います
スタータスが UP になっていることを確認しましょう
メトリック名は container_ から始める項目になります

最後に

Prometheus と cAdvisor を連携してみました
これで各コンテナごとのメトリックが Prometheus で監視できるようになります
目的のコンテナのデータを取得するには promQL を駆使する必要があります

参考サイト

0 件のコメント:

コメントを投稿