Guniの備忘録

ArchLinuxやプログラミングの勉強状況を更新していきます

サーバ監視入れてみた話

最近扱うサーバが増えたため、サーバ監視を導入する。 サーバ監視に使うのはPrometeusというGolang製のシステムの監視ツール。

それで今回は、Prometheusの設定を一通りやって行く話。

  1. PrometheusをDockerで動かす
  2. docker-compose.ymlに設定をまとめる
  3. 監視する情報を追加する(prometheus.ymlの記述)
  4. Nginxにリバースプロキシの設定
  5. node-exporterを使ってホストの監視をする。

1. PrometheusをDockerで動かす

公式のドキュメントを読んだまま、とりあえずコンテナ立ててみる.

$ docker run --name prometheus -d -p 127.0.0.1:9090:9090 quay.io/prometheus/prometheus

これでhttp://localhost:9090にアクセスして確認する。

2. 監視する情報を追加する(prometheus.ymlの記述)

このままでは大したものが監視できず、アラートも使えないので、prometheus.ymlを書いて、コンテナ側の/etc/prometheus/prometheus.ymlにバインドさせる。

global:
  scrape_interval:     15s

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

3. docker-compose.ymlに設定をまとめる

version: '2'
services:
  prometheus:
    image: prom/prometheus
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
    ports:
      - "9090:9090"

4. Nginxでリバースプロキシの設定

DNSの設定でCNAMEにprometheusを追加する。
次に、/etc/nginx/prometheus.confを以下のように書けばok。

server{
    server_name    prometheus.example.com;
    listen 80;

    proxy_set_header    Host    $host;
    proxy_set_header    X-Real-IP    $remote_addr;
    proxy_set_header    X-Forwarded-Host       $host;
    proxy_set_header    X-Forwarded-Server    $host;
    proxy_set_header    X-Forwarded-For    $proxy_add_x_forwarded_for;

    location / {
        proxy_pass    http://localhost:9090;
    }
}

server_nameに設定したアドレスにアクセスして確認する。
リバースプロキシもnginx-proxy使ってできるようにする予定。
これでprometheus自体の監視はできたので、次はホストの監視を行う。

5. node-exporterを使ってホストの監視をする。

ホストの監視をするにはnode-exporterというモニタリングしてデータを集めてくれるツールがある。
ついでなのでこれもDockerで済ませる。

$ docker run -d -p 9100:9100 --net="host" prom/node-exporter

更にprometheus.ymlを以下のように書き直す。

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

  - job_name: 'Nodes'
    scrape_interval: 5s
    static_configs:
      - targets: ['node1.example.com:9100']
      - targets: ['node2.example.com:9100']

これでホストの監視もできるはず。

Alertの設定は後で書く。