この記事のポイント
- cAdvisor は apt リポジトリに収録されていないため、
gcr.io/cadvisor/cadvisorの公式Dockerイメージ(v0.55.1)を使う - Prometheus は Docker版(3.12.0)が apt版(2.45系)より大幅に新しい。15秒ごとに cAdvisor の
/metricsをスクレイプする - 実測で cAdvisor は 15.1 MiB / 約2.0% CPU、Prometheus は 37.1 MiB / 約0.4% CPU。2つ合わせても 合計52 MiB と軽量
- cAdvisor が公開するメトリクスは実測で 109種・5,062行。CPU・メモリ・ネットワーク・ディスクを網羅
- 同じ Docker ネットワークに載せれば
cadvisor:8080をスクレイプ先に書くだけで疎通する。Prometheus UI(:9090)の Targets がUPになれば成功
「Dockerコンテナが何個も動いているけど、どれがメモリを食っているのか分からない」──VPSでDockerを運用し始めると、必ずこの悩みにぶつかります。本記事では cAdvisor(Container Advisor)と Prometheus を組み合わせて、Dockerコンテナのメトリクスをリアルタイムで可視化する方法を、実際に動かしながら解説します。
結論から言うと、コンテナを2つ起動して設定ファイルを1枚書くだけでコンテナ監視が始められます。2026年6月15日に Docker 20.10.12 環境で cAdvisor v0.55.1 + Prometheus 3.12.0 を実際にセットアップし、メトリクス・リソース使用量・Prometheus UI の動作を確認しました。スクリーンショットもすべて実画面です。
注意
本記事のコマンドは Docker 20.10.12 で検証しています。Docker がまだ入っていない場合は先にインストールしてください(Ubuntu 24.04 に Docker をインストールする方法)。ホストOSが Ubuntu 24.04 LTS でもコマンドは同じです。
目次
- cAdvisorとPrometheusでできること
- バージョンを実測で確認する
- cAdvisorをDockerで起動する
- PrometheusをDockerで起動する
- メトリクスとリソース使用量を確認する
- Prometheus UIでクエリを実行する
- よくあるエラーと解決策
- まとめ
cAdvisorとPrometheusでできること
cAdvisor(Container Advisor)は Google が開発したOSSで、ホスト上で動いているDockerコンテナのリソース使用量(CPU・メモリ・ネットワーク・ディスク)を自動で収集し、/metrics エンドポイントで公開します。コンテナの cgroup(リソース制御の仕組み)統計を読み取るので、監視対象側に何も仕込む必要がありません。
Prometheusは cAdvisor の /metrics を定期的に取得(スクレイプ)して時系列データベース(TSDB)に蓄積し、独自のクエリ言語 PromQL でグラフ化・アラート設定ができるモニタリングシステムです。

図のとおり、コンテナ群 → cAdvisor → Prometheus → 可視化、という流れです。2台のコンテナを起動するだけでこの仕組みが動き始めます。正直、「こんなに簡単に始められるのか」と少し驚きました。
バージョンを実測で確認する
まず実際に動かすバージョンを確認します。cAdvisor は apt リポジトリには収録されていないため、Dockerイメージで取得するのが正しい方法です。2026年6月15日時点で gcr.io/cadvisor/cadvisor の最新は v0.55.1 でした。
cAdvisor version v0.55.1 (f5bec374)
$ docker run –rm prom/prometheus:v3.12.0 –version
prometheus, version 3.12.0 (branch: HEAD, revision: 9f27dffc1f93ca23287972f632025879f2d1c658)
build date: 20260528-15:53:38
go version: go1.26.3
platform: linux/arm64
一方で、Ubuntu 24.04 の apt で同じものを探すとどうなるか。実際に apt-cache policy と apt-get install -s(シミュレーション)を叩いてみました。
$ apt-get install -s cadvisor
E: Unable to locate package cadvisor
$ apt-cache policy prometheus
prometheus:
Installed: (none)
Candidate: 2.45.3+ds-2ubuntu0.3
cadvisor は apt にそもそも存在せず(E: Unable to locate package cadvisor)、Prometheus も apt版は 2.45系どまりでした。Docker版(3.12.0)の方が大幅に新しいので、両方ともDockerイメージを使うのが正解です。

cAdvisorをDockerで起動する
手順1:監視用のDockerネットワークを作る
cAdvisor と Prometheus を同じユーザー定義ネットワークに載せておくと、コンテナ名(cadvisor)でお互いを呼べるようになり、スクレイプ設定がぐっと楽になります。先にネットワークを作っておきましょう。
f3c1a9b2e8d7…
手順2:cAdvisorコンテナを起動する
cAdvisor はホストの Docker ソケットや /sys などのシステムディレクトリをマウントしてコンテナ情報を収集します。ホスト全体のリソースを読むため --privileged フラグが必要です。
–name cadvisor \
–network monitoring \
-p 8080:8080 \
–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 \
–privileged \
gcr.io/cadvisor/cadvisor:v0.55.1
起動したら /healthz エンドポイントで生存確認をします。実測では起動から数秒で ok が返り、コンテナの状態も running になりました。
ok
$ docker inspect –format ‘{{.State.Status}}’ cadvisor
running
手順3:cAdvisor WebUIを確認する
ブラウザで http://localhost:8080/ を開くと、フクロウのロゴでおなじみの cAdvisor ダッシュボードが表示されます。ルート階層には「Docker Containers」「Podman Containers」へのリンクと、ホスト上の各 cgroup(Subcontainers)が並びます。

/docker/ にアクセスすると、Docker デーモンの情報(Driver Status)が表示されます。実画面では Docker 20.10.12 / API 1.41 / Kernel 5.10.76-linuxkit / コンテナ数30 などが読み取れました。

さらに個別の階層に入ると、コンテナごとの CPU・メモリ・ネットワークがリアルタイムで集計されているのが分かります。

PrometheusをDockerで起動する
手順4:Prometheus設定ファイルを作る
Prometheus が cAdvisor のメトリクスを取得するよう設定ファイルを作ります。ここだけは順番を間違えると動きません──先に設定ファイルを作ってからコンテナを起動する必要があります。
global:
scrape_interval: 15s
scrape_configs:
– job_name: ‘cadvisor’
static_configs:
– targets: [‘cadvisor:8080’]
metrics_path: /metrics
EOF
scrape_interval: 15s は15秒ごとにスクレイプする設定です。スクレイプ先を cadvisor:8080 とコンテナ名で書ける点がポイントで、同じ monitoring ネットワークに載せているおかげでDNS解決が自動で効きます。
手順5:PrometheusコンテナをDockerで起動する
–name prometheus \
–network monitoring \
-p 9090:9090 \
-v ~/monitoring/prometheus.yml:/etc/prometheus/prometheus.yml \
prom/prometheus:v3.12.0
必ず --network monitoring を付けてください。これを忘れると Prometheus から cadvisor という名前が解決できず、後述の Targets が DOWN になります。
手順6:起動状態を確認する
起動できたら docker stats でリソース使用量を見てみましょう。実測では次のような値でした。
NAME CPU % MEM USAGE / LIMIT PIDS
cadvisor 1.83% 15.86MiB / 11.68GiB 12
prometheus 0.41% 36.91MiB / 11.68GiB 10
3回サンプリングした平均で、cAdvisor は約 15.1 MiB / 2.0% CPU、Prometheus は約 37.1 MiB / 0.4% CPU。2コンテナ合計でも 52 MiB ほどです。VPS の 1GB プランでも余裕で動かせる軽さでした。

メトリクスとリソース使用量を確認する
cAdvisorの /metrics エンドポイントを確認する
cAdvisor が公開するメトリクスは curl http://localhost:8080/metrics で確認できます。実測では 5,062行、メトリクス名で数えて 109種が返ってきました。
5062
$ curl -s http://localhost:8080/metrics | grep -v ‘^#’ | sed ‘s/[ {].*//’ | sort -u | wc -l
109
$ curl -s http://localhost:8080/metrics | grep ‘^# HELP container_cpu_usage_seconds_total’
# HELP container_cpu_usage_seconds_total Cumulative cpu time consumed in seconds.
主要なメトリクスを表にまとめました。Prometheus からクエリするときに使うメトリクス名なので、よく使うものは覚えておくと便利です。

Prometheus UIでクエリを実行する
http://localhost:9090/ にアクセスすると Prometheus の Web UI が開きます。3.12系はモダンなUIになっており、起動直後は「No data queried yet」と表示されます。

Targetsでスクレイプ状態を確認する
まず Status → Target health メニューを確認します。cAdvisor が UP になっていれば、Prometheus が正常にメトリクスを取得できています。実画面では http://cadvisor:8080/metrics が 1/1 up、スクレイプ時間は約29msでした。

コマンドラインから確認したい場合は /api/v1/targets を叩くと、"health":"up" が確認できます。
“scrapeUrl”: “http://cadvisor:8080/metrics”,
“health”: “up”,
PromQLクエリでコンテナのCPUを可視化する
Prometheus UI の Expression フォームに以下のクエリを入力して Execute を押すと、コンテナ別のCPU使用率が取得できます。実測ではこのクエリが 64系列を返しました。

そのほか、よく使う PromQL クエリをまとめました。{name!=""} を付けるとDockerコンテナだけに絞り込めます。

よくあるエラーと解決策
①Prometheus の Targets が DOWN になる
エラー例
Get "http://cadvisor:8080/metrics": dial tcp: lookup cadvisor: no such host
Prometheus コンテナに --network monitoring を付け忘れています。cAdvisor と同じネットワークに載せていないとコンテナ名 cadvisor が解決できません。両方のコンテナに --network monitoring が付いているか確認して再起動してください。
なお、コンテナを別々のネットワークで動かしたい場合は、スクレイプ先を host.docker.internal:8080 にして、Prometheus 起動時に --add-host=host.docker.internal:host-gateway を付ける方法もあります。本記事のように共有ネットワークを使う方がシンプルです。
②cAdvisorが –privileged なしで起動できない
エラー例
Error response from daemon: ... Permission denied
--privileged フラグは cAdvisor がホストのシステム情報(/sys や /proc)を読むために必要です。省略するとパーミッションエラーになります。VPS環境では通常 root 権限があるため問題ありませんが、一部の制限環境では動かせないことがあります。
③/docker/ 画面で「Cannot connect to the Docker daemon」と出る
cAdvisor の Docker 連携には Docker ソケットが必要です。--volume=/var/run:/var/run:ro でホストの /var/run をマウントしていれば docker.sock も含まれます。環境によってはソケットを明示的に --volume=/var/run/docker.sock:/var/run/docker.sock:ro とマウントすると確実です。
④メトリクスがすぐに取れない
scrape_interval を 15s に設定している場合、起動直後はデータがありません。15〜30秒待ってからクエリを実行してください。Targets 画面の「Last scrape」の時刻が更新されていれば正常です。
まとめ
cAdvisor + Prometheus を使った Docker コンテナ監視の構築手順をまとめます。
- cAdvisor は apt 非対応。
gcr.io/cadvisor/cadvisor:v0.55.1の Docker イメージを使う - Prometheus は Docker版(3.12.0)が apt版(2.45系)より大幅に新しい
- 実測でリソース消費は cAdvisor 15.1 MiB + Prometheus 37.1 MiB。合計52 MiB と軽量
- cAdvisor が公開するメトリクスは実測で 109種・5,062行。CPU・メモリ・ネットワーク・ディスクを網羅
- 同じ Docker ネットワークに載せれば cadvisor:8080 をスクレイプ先に書くだけで疎通する
- 本番運用ではさらに Grafana を追加してダッシュボードを作るのがおすすめ(Dashboard ID 14282)
本格的に VPS でサーバーを運用するなら、モニタリング環境の整備は早いほど安心です。この構成は月 $5 程度の最小VPSでも動かせる軽さなので、まず試してみてください。どのVPSが良いか迷っている方は VPS比較記事も参考にどうぞ。
関連記事:Ubuntu 24.04 に Docker をインストールする方法 / Ubuntu で Portainer を使ってDockerコンテナをGUI管理する / Node Exporter + Prometheus でホストOSを監視する



コメント