cAdvisor (**c**ontainer **Advisor** の略) は、実行中のコンテナのリソース使用量とパフォーマンスデータを分析し、公開します。 cAdvisor は Prometheus メトリクスをそのまま公開します。このガイドでは、
まず、cAdvisor からメトリクスをスクレイプするように Prometheus を設定 する必要があります。 prometheus.yml
ファイルを作成し、この設定を入力します
scrape_configs:
- job_name: cadvisor
scrape_interval: 5s
static_configs:
- targets:
- cadvisor:8080
次に、インストールに含まれるコンテナ、各コンテナによって公開されるポート、使用されるボリュームなどを指定する Docker Compose 設定 を作成する必要があります。
prometheus.yml
ファイルを作成したのと同じフォルダーに、docker-compose.yml
ファイルを作成し、この Docker Compose 設定を入力します
version: '3.2'
services:
prometheus:
image: prom/prometheus:latest
container_name: prometheus
ports:
- 9090:9090
command:
- --config.file=/etc/prometheus/prometheus.yml
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml:ro
depends_on:
- cadvisor
cadvisor:
image: gcr.io/cadvisor/cadvisor:latest
container_name: cadvisor
ports:
- 8080:8080
volumes:
- /:/rootfs:ro
- /var/run:/var/run:rw
- /sys:/sys:ro
- /var/lib/docker/:/var/lib/docker:ro
depends_on:
- redis
redis:
image: redis:latest
container_name: redis
ports:
- 6379:6379
この設定は、Docker Compose に対して、それぞれが Docker コンテナに対応する 3 つのサービスを実行するように指示します
prometheus
サービスは、ローカルの prometheus.yml
設定ファイルを使用します (volumes
パラメーターによってコンテナにインポートされます)。cadvisor
サービスはポート 8080 (cAdvisor メトリクスのデフォルトポート) を公開し、さまざまなローカルボリューム (/
、/var/run
など) に依存します。redis
サービスは標準の Redis サーバーです。 cAdvisor は、追加の設定なしで、このコンテナからコンテナメトリクスを自動的に収集します。インストールを実行するには
docker-compose up
Docker Compose が 3 つすべてのコンテナを正常に起動した場合、次のような出力が表示されます
prometheus | level=info ts=2018-07-12T22:02:40.5195272Z caller=main.go:500 msg="Server is ready to receive web requests."
ps
コマンドを使用して、3 つすべてのコンテナが実行されていることを確認できます
docker-compose ps
出力は次のようになります
Name Command State Ports
----------------------------------------------------------------------------
cadvisor /usr/bin/cadvisor -logtostderr Up 8080/tcp
prometheus /bin/prometheus --config.f ... Up 0.0.0.0:9090->9090/tcp
redis docker-entrypoint.sh redis ... Up 0.0.0.0:6379->6379/tcp
cAdvisor Web UI には、http://localhost:8080
でアクセスできます。 インストール内の特定の Docker コンテナの統計とグラフは、http://localhost:8080/docker/<container>
で確認できます。 たとえば、Redis コンテナのメトリクスには http://localhost:8080/docker/redis
で、Prometheus には http://localhost:8080/docker/prometheus
でアクセスできます。
cAdvisor の Web UI は、cAdvisor が監視する内容を確認するための便利なインターフェースですが、コンテナの*メトリクス*を確認するためのインターフェースは提供していません。そのためには、http://localhost:9090/graph
で利用できる Prometheus 式ブラウザ が必要です。 次のような式バーに Prometheus 式を入力できます
まず、コンテナの開始時刻 (秒単位) を記録する container_start_time_seconds
メトリックを確認してみましょう。 name="<container_name>"
式を使用して、名前で特定のコンテナを選択できます。 コンテナ名は、Docker Compose 設定の container_name
パラメーターに対応します。 たとえば、container_start_time_seconds{name="redis"}
式は、redis
コンテナの開始時刻を示します。
以下の表に、その他の式の例をいくつか示します
式 | 説明 | 対象 |
---|---|---|
rate(container_cpu_usage_seconds_total{name="redis"}[1m]) |
過去 1 分間の cgroup の CPU 使用率 | redis コンテナ |
container_memory_usage_bytes{name="redis"} |
cgroup のメモリ使用量合計 (バイト単位) | redis コンテナ |
rate(container_network_transmit_bytes_total[1m]) |
過去 1 分間にコンテナによってネットワーク経由で送信されたバイト数 (秒あたり) | すべてのコンテナ |
rate(container_network_receive_bytes_total[1m]) |
過去 1 分間にコンテナによってネットワーク経由で受信されたバイト数 (秒あたり) | すべてのコンテナ |
このガイドでは、Docker Compose を使用して、1 つのインストールで 3 つの個別のコンテナを実行しました。Prometheus コンテナは、cAdvisor コンテナからメトリクスをスクレイプし、cAdvisor コンテナは Redis コンテナによって生成されたメトリクスを収集しました。 次に、Prometheus 式ブラウザを使用して、いくつかの cAdvisor コンテナメトリクスを確認しました。
このドキュメントは オープンソース です。 問題の報告やプルリクエストを送信して、改善にご協力ください。