[Docker] Prometheusでパフォーマンスをモニタリングしてみる | パークのソフトウエア開発者ブログ|ICT技術(Java・Android・iPhone・C・Ruby)なら株式会社パークにお任せください

パークのソフトウエア開発者ブログ|ICT技術(Java・Android・iPhone・C・Ruby)なら株式会社パークにお任せください

開発の解決方法や新しい手法の情報を、パークのエンジニアが提供します。パークのエンジニアが必要な場合は、ぜひお気軽にお問い合わせ下さい。 株式会社パーク:http://www.pa-rk.co.jp/

こんにちは!パーク社員のゆんぼうです。
今回は、Dockerのパフォーマンスをモニタリングできるツールを調査しました。
その3つ目として、「Prometheus」 を紹介します。

Prometheusとは

「Prometheus」とは、リアルタイムでパフォーマンスを監視できるツールです。
公式ページ: https://prometheus.io/

以下の特徴があります。

  ・WEBページでグラフの表示が可能

  ・「Prometheus Server」と「exporter」の構成で運用する

  ・アラート機能 (Eメール, Slackなど連携可)

  ・長期間の監視データの蓄積が可能。Prometheusと同じローカルディスクに保存される

 

「Prometheus Server」と「exporter」で行っていることは下記の通りです。

Prometheus Server 各exporterのAPIからメトリクス情報の取得と蓄積、WEBページの表示、アラート通知を行う。
exporter ログからメトリクス情報を生成する。メトリクス情報のAPIを提供する。「node exporter」や「cAdvisor」などがある。

 

Prometheusの環境構築手順

環境構築手順は下記の通りです。

 

・Windows 10 Pro

・Docker Toolbox (v17.07.0-ce)

・docker-machine でマシンを作成済みとします。

  ・マシン1: 192.168.99.103 → 「Prometheus」と「node exporter」をインストールします。

  ・マシン2: 192.168.99.104 → 「node exporter」をインストールします。

  ・マシン3: 192.168.99.105 → 「cAdvisor」をインストールします。

  ・マシン4: 192.168.99.106 → 「cAdvisor」をインストールします。

 

1. 「Docker Quickstart Terminal」を起動します。

2. マシン1をアクティブにして、『prometheus.yml』を作成します。内容は下記の通りです。

global:
  scrape_interval: 15s
  evaluation_interval: 15s
  external_labels:
    monitor: 'codelab-monitor'

scrape_configs:
  - job_name: 'prometheus'
    scrape_interval: 5s
    scrape_timeout: 2s
    honor_labels: true
    static_configs:
      - targets: ['192.168.99.103:9090']

  - job_name: 'docker-host'
    scrape_interval: 5s
    scrape_timeout: 2s
    metrics_path: /metrics
    static_configs:
      - targets: ['192.168.99.103:9100', '192.168.99.104:9100']
        labels:
          group: 'docker-host'

  - job_name: 'docker'
    scrape_interval: 5s
    scrape_timeout: 2s
    metrics_path: /metrics
    static_configs:
      - targets: ['192.168.99.105:8080', '192.168.99.106:8080']
        labels:
          group: 'docker'

3. マシン1で『docker-compose.yml』を作成します。内容は下記の通りです。

version: '3'
services:
  prometheus:
    image: prom/prometheus
    volumes:
       - /C/test1/prometheus.yml:/test1/prometheus.yml
    expose:
      - '9090'
    ports:
      - '9090:9090'
    restart: always
    command: 
      - '-config.file=/test1/prometheus.yml'
  grafana:
    image: grafana/grafana
    expose:
      - '3000'
    ports:
      - '3000:3000'
    restart: always
    environment:
      GF_SECURITY_ADMIN_USER: admin
      GF_SECURITY_ADMIN_PASSWORD: admin
      GF_USERS_ALLOW_SIGN_UP: 'false'
      GF_USERS_ALLOW_ORG_CREATE: 'false'
  node_exporter:
    image: prom/node-exporter
    expose:
      - '9100'
    ports:
      - '9100:9100'
    restart: always
    volumes:
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /:/rootfs:ro

4. マシン1で下記のコマンドを実行します。 

$ docker-compose up -d

5. マシン2をアクティブにして、『docker-compose.yml』を作成します。内容は下記の通りです。

version: '3'
services:
  node_exporter:
    image: prom/node-exporter
    expose:
      - '9100'
    ports:
      - '9100:9100'
    restart: always
    volumes:
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /:/rootfs:ro

6. マシン2で下記のコマンドを実行します。 

$ docker-compose up -d

7. マシン3、4をそれぞれアクティブにして、『docker-compose.yml』を作成します。内容は下記の通りです。

version: '3'
services:
  cadvisor:
    image: google/cadvisor:latest
    expose:
      - '8080'
    ports:
      - '8080:8080'
    restart: always
    privileged: true
    networks:
      default:
        aliases:
          - cadvisor
    volumes:
      - /:/rootfs:ro
      - /var/run:/var/run:rw
      - /sys:/sys:ro
      - /var/lib/docker:/var/lib/docker:ro

8. マシン3、4それぞれで下記のコマンドを実行します。 

$ docker-compose up -d

9. 下記のURLにアクセスします。
http://192.168.99.103:9090 (Prometheus標準Webページ)

http://192.168.99.103:3000 (Grafanaで表示したWebページ)

 

PrometheusのWEB画面の操作手順

PrometheusのWEB画面の操作手順は下記の通りです。

1. メニューから「Graph」選択します。「- insert metric at cursor -」のプルダウンを選択します。

 

2. 「Execute」ボタンを押下します。

 

3. 「Graph」ボタンを押下します。

 

4. グラフが表示されます。

 

クエリーは、下記のように変更して、「Execute」ボタンを押下すると、「docker」グループに所属しているデータだけ表示することができます。

go_memstats_alloc_bytes

go_memstats_alloc_bytes{group="docker"}

クエリの入力方法は下記のURL参照してください。
https://prometheus.io/docs/querying/basics/

 

5. メニューの「Alerts」を選択するとアラート一覧が表示されます。

 

6. メニューの「Status」を選択して、「Targets」を選択すると、メトリック取得対象が表示されます。

PrometheusのWEB画面の操作手順 (Grafana)

Grafanaでは、Prometheusが標準で用意しているWebページよりもグラフィカルなページを表示することができます。

 

1. ログイン画面において、ID「admin」, PW「admin」を入力して、「Login」ボタンを押下します。

 

2. データソースを設定して、「Save & Test」ボタンを押下します。

 

3. 「Dashboards」を選択して、「import」ボタンを押下します。「Prometheus Stats」を選択します。

 

4. 「Prometheus」のグラフが表示されます。

 

5. 新しくグラフを追加した際に、Prometheusのクエリーを指定することが可能です。

 

以上です。