サーバ監視入れてみた話
最近扱うサーバが増えたため、サーバ監視を導入する。 サーバ監視に使うのはPrometeusというGolang製のシステムの監視ツール。
それで今回は、Prometheusの設定を一通りやって行く話。
- PrometheusをDockerで動かす
- docker-compose.ymlに設定をまとめる
- 監視する情報を追加する(prometheus.ymlの記述)
- Nginxにリバースプロキシの設定
- 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の設定は後で書く。