LoginSignup
16
14

More than 5 years have passed since last update.

PrometheusからcAdvisorのメトリクスを取得する ~docker runで立ち上げ~

Posted at

はじめに

Kubernetesの監視について調べた時、cAdvisorを使う必要がありそうだと思ったのですが、cAdvisorのことをよく理解しておらず、「Kubernetesを立ち上げたら一緒に立ち上がったりするもの?」などと考えていました。このままではマズイので、cAdvisorのことを使い方から調べました。ここでは最低限cAdvisorを動かしてPrometheus(+Grafana)でメトリクスを取得できるようにします。

cAdvisorとは

cAdvisor(Container Advisor)は、稼働中のコンテナの情報を集め出力し、リソースとパフォーマンス状況を教えてくれるツールです。取得するリソースは各コンテナの稼働状況(running,stoppedなど)、CPUやメモリの使用量などです。
logo.jpg
公式のgithubページはこちらです。

cAdvisorを起動

cAdvisorはdockerコンテナイメージで提供されているので、dockerコマンドや構成管理ファイルを用いて立ち上げます。ここではdocker runで直接起動する方法を紹介します。

実施環境

こちらの記事と同様です。PrometheusやGrafanaの使い方等もこちらのページからご覧ください。

OS: Centos7
Kubernetes version: 1.13.1
User: 以下の作業は全てrootユーザで実行しています。

docker runコマンド

公式のgithubページを参照しながら、以下のようにコマンドを入力してコンテナを立ち上げました。

[root@k8s-master ~]# docker run --publish=8080:8080 --detach=true --name=cadvisor google/cadvisor:latest
20fea528ac6bca0f2dd7b0d71a077920cdc770634af34a3da0e6f898938a9617
[root@k8s-master ~]# docker ps --filter "name=cadvisor"
CONTAINER ID        IMAGE                    COMMAND                  CREATED             STATUS              PORTS                    NAMES
20fea528ac6b        google/cadvisor:latest   "/usr/bin/cadvisor..."   17 minutes ago      Up 17 minutes       0.0.0.0:8080->8080/tcp   cadvisor
[root@k8s-master ~]# 

GUIからhttp://<ホストのグローバルIPアドレス:8080>にアクセスします。
cadvisor-prometheus-1.jpg
デフォルトで表示されているのは、CPUやメモリ、ネットワークなどです。
cadvisor-prometheus-6.jpg
cadvisor-prometheus-7.jpg
cadvisor-prometheus-8.jpg
cadvisor-prometheus-9.jpg
メトリクスの一覧は、例えばhttp://<ホストのグローバルIPアドレス:8080/metrics>にアクセスすると表示されます。
cadvisor-prometheus-2.jpg

Prometheus(+Grafana)からメトリクスを取得する

cAdvisorが起動できたので、Prometheusからメトリクスを取得します。Prometheusの公式ページに方法が紹介されています。

コンフィグファイルの編集

Prometheusのコンフィグファイルに当たるprometheus.ymlを編集し、ターゲットにcAdvisorを追加します。

prometheus.yml
# my global config
global:
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
    - targets: ['localhost:9090']

# ここからcAdvisorの部分に該当する
  - job_name: cadvisor
    scrape_interval: 5s
    static_configs:
    - targets: ['localhost:8080']

PrometheusにGUIからアクセス

コンフィグファイルの編集を完了したらPrometheusを起動し、GUIからhttp://<ホストのグローバルIPアドレス:9090>にアクセスします。そして画面上部のStatusTargetsをクリックすると、cAdvisorが表示されるのが確認できます。
cadvisor-prometheus-3.jpg
これでPrometheusでcAdvisorのメトリクスを収集できます。試しにcadvisor_version_infoというわかりやすいメトリクスを取得してみます。
cadvisor-prometheus-4.jpg
取得が確認できました。

GrafanaにGUIからアクセス

Grafanaからでももちろん確認できます。Prometheus Dashboardから新しいグラフを作成し、取得メトリクスをcadvisor_version_infoと指定します。
cadvisor-prometheus-5.jpg

まとめ

何も考えずにcAdvisorを起動するだけでしたら、このように簡単にできました。またPrometheus(+Grafana)からメトリクスを取得するのもそれほど難しくはなさそうです。
ただcAdvisorは長期間データを保存することができないため、InfluxDB等と組み合わせて使うことが多いようです。
また今回はdocker runコマンドで起動しましたが、yamlファイルを作成して起動することもできます。公式ページではkustomizeを利用したデプロイ方法を紹介しています。

参考リンク

【Docker】cAdvisorによるDockerコンテナの監視について
How to monitor docker containers using cAdvisor [ Part 1 ]
How to monitor docker containers using cAdvisor [ Part 2 ]

16
14
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
16
14