やること

Prometheus をコンテナで起動 container-exporter を使ってコンテナリソースを監視 Grafana をコンテナで立ち上げてPrometheusに集まった情報を可視化

当ブログでは、導入手順というより、composeで動かす場合の書き方をまとめたものになりますので、各サービスの導入などは下記の公式ドキュメントを参考にしてください。 PrometheusをDockerで運用 grafaraとprometheusの連携について

docker-compose.ymlに記述

    version: '2'
    services:
      grafana:
        image: grafana/grafana
        ports:
          - "3000:3000"
        links:
          - promethus:log.shinofara.xyz

      promethus:
        image: prom/prometheus
        volumes:
          - ./prometheus:/conf/prometheus
        command: -config.file=/conf/prometheus/prometheus.yml
        ports:
          - "9090:9090"

      container-exporter:
        image: prom/container-exporter
        ports:
          - "9104:9104"
        volumes:
          - /var/run/docker.sock:/var/run/docker.sock:ro
          - /sys/fs/cgroup:/cgroup:ro

Prometheusの設定ファイル(yml)

    global: 
      scrape_interval: "15s"
      evaluation_interval: "15s"
      external_labels: 
        monitor: "web-monitor"


    scrape_configs:
      - job_name: 'prometheus'
        scrape_interval: 5s
        static_configs:
          - targets: ['localhost:9090']

      - job_name: 'container-exporter'
        scrape_interval: 5s
        static_configs:
          - targets: ['container-exporter:9104']  

localhost の場合は、名前解決に失敗するので、対象のコンテナ名を指定する事でうまく動きます。

    - targets: ['container-exporter:9104']

Grafanaの設定

http://localhost:3000

Data SourceでPrometheusを選択して登録する事で連携できます。簡単ですね。