お仕事柄サーバの監視システムを管理、運用しているものの自鯖の監視は適当に導入したmuninやmackerelにお任せという状態だったので、きちんと1から構築してみよう、ということでprometheus+grafanaを導入しつつ、ついでに自宅に置いてるNASのメトリクス取得もやってみたら意外と簡単だったやないかい、というメモ。
三行で
- prometheus、grafanaを管理サーバ、node_exporterを監視対象サーバでそれぞれ立ち上げ
- prometheusの設定をちょろっと書いて
- gradanaにログインしてdatasourceの設定を追加、適当なダッシュボードをimport
でこんな感じのダッシュボードで15秒精度のメトリクスが見れるようになり、なかなか楽しい。
構成
GCP上にprometheusを立ててグローバル越しにnode_exporterを導入したサーバを監視対象にしていく感じで。 デーモン化はsupervisorに任せる方針。
各種設定
node_exporter
バイナリ落としてきて適当に配置して起動するだけ。 config的なものとは特になく、collectorの追加オプションがあるだけなので好みで入れる。 何も指定しなくてもデフォルトで結構取ってくれる。
[program:node_exporter] command=/usr/local/node_exporter/node_exporter user=monitor autorestart=true
雑にsupervisorでデーモン化する 起動後に9100ポートにアクセスして諸々取れてることを確認。
prometheus
バイナリ落としてきて適当に配置してprometheus.yml書くだけ ほかは特にいじらず(おもむろにscrape_configs->static_configsで対象のホスト名:9100を並べていけばOK。
job_nameはgrafanaダッシュボード設定時にラベル合わせればなんでもいいんだけどnode_exporter使うダッシュボードはjob=nodeというラベルを期待してる空気を感じたのでそんな感じにしておくと楽やも。
[program:prometheus] command=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml directory=/usr/local/prometheus user=monitor autorestart=true
雑にsupervisorでデーモン化する 起動後に9090ポートにアクセスし、適当なクエリを投げ、各ホストからメトリクスが取得できラベルが付与されてることを確認。
grafana
Installing on Debian / Ubuntu | Grafana Documentation
を眺めつつaptで。 3000ポートで起動するのでログインしてdata sourceにprometheusを追加。
であとは適当なダッシュボードを
Grafana Dashboards - discover and share dashboards for Grafana. | Grafana Labs
から探してきてインポートする。 今回はNode Exporter Full 0.16を拝借してみた。
インポートしたダッシュボードで表示されないメトリクスはnode_exporter側でrenameされてたりするので合わせたりする必要があるが大体いい感じに表示される。
https://github.com/prometheus/node_exporter/releases
Many metrics have been renamed/modified to include base units, for example node_cpu is now node_cpu_seconds_total.
とかこういうの。
なおnode_exporterもgrafanaもprometheusもdockerイメージが提供されてるのでそっちを使うのもよさげ。
NASも監視してみる
手持ちのQNAP NASはTS-220というモデルでQTSというLinuxベースのNAS用OSが稼働しており、ここからも各種メトリクスを取得してみる。
(標準のビューでもCPU、メモリ使用率、トラフィック、温度等はなんとなく見れてアプリからも確認できるのでこれはこれでいいのだけど)
TS-220のCPUはMarvell6282(ARMv5)1.6Ghz、でnode_exporterのリリースページをおもむろに覗きにいくとlinux-armv5なバイナリが既に用意されているのでこれを落としてきて起動するだけでイケる。お手軽ですね。 デーモン化はひとまずおいといて、雑にscreen貼って起動しっぱなしにしているが、QTSも/etc/init.d/以下に起動スクリプト置けばイケるはずなのでそのうち対応。
NASは自宅のネットワーク内にいるので9100宛のTCP通信を
な設定でアクセスできるように。
自宅のインターネット回線は特に固定IPというわけではないので、今回はQNAPが提供するDDNS的なサービス(myqnapcloud)を利用しつつ、自分の管理ドメインから適当にCNAMEを設定して名前解決を行うようにしてみた。
grafanaのビューでみるとこんな感じ。
MacのTime Machineバックアップが走ってるときなどはそれなりに書き込みが走ったりするので、ガリガリやってる内訳が観測できて結構楽しい。