こんにちは!パーク社員のゆんぼうです。
今回は、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のクエリーを指定することが可能です。
以上です。