Raspberry PI3 Model B に docker-compose で Nginx で認証かけて Prometheus + Node Exporter + Grafana + cAdvisor構築
概要
Raspi3 に docker-compose で Prometheus による監視機構を作成しました。
環境
- Raspberry Pi 3 Model B (Raspbian GNU/Linux 8) arm7l
- Docker version 17.04.0-ce, build 4845c56
- docker-compose version 1.9.0, build 2585387
Raspi に docker インストール
| 1 | raspi%$ wget -qO- https://get.docker.com/ | sh | 
Raspi に docker-compose インストール
| 1 | raspi%$ sudo apt-get update | 
- version 確認
| 1 | raspi%$ docker-compose --version | 
docker-compose のプロジェクト設定
| 1 | raspi%$ cd ~ | 
Nginx Basic 認証設定
| 1 | .htpasswd 作成時のユーザ/パス == GF_SECURITY_ADMIN_USER/GF_SECURITY_ADMIN_PASSWORD | 
である必要があります。
Grafana の認証機能により設定した Basic 認証でログインできる仕組みがあり、
一致しない場合、ログインできず、失敗します。
- grafana/env
| 1 | GF_SECURITY_ADMIN_USER=admin-user | 
- .htpasswd
| 1 | raspi%$ htpasswd -c nginx/conf/conf.d/.htpasswd admin-user | 
Cron 設定
Raspi の温度や電圧を定期取得し Prometheus に読み込ませるファイル(*.prom)作成します。
| 1 | */5 * * * * <home/to/path>/vagrant-docker/docker/prometheus-grafana-on-raspi3/node-exporter/collector/raspi.sh | 
docker-compose により Docker 起動
| 1 | raspi%$ docker-compose up -d | 
Grafana にアクセスしてみる
http://<your_server_ip>:13000 にアクセスすると .htpasswd で指定したユーザ/パスを求められるので入力します
 
その後、Grafana のページが表示されれば成功です。
 
「Add data Source」をクリックします。
Data Source 設定
以下の様に設定し「Save & Test」をクリックしし Success することを確認します。
 
Dashboard.json インポート
左上のアイコンから Dashboards > Import 選択し DockerDashboard.json をインポートします。
 
Dashboard 表示
 
ポイント !
セキュリティ上の観点から外から直接 Grafana を参照させない様にしました。
nginx/conf/conf.d/default.conf
| 1 | server { | 
image 選びは慎重に。
以下の点で非常にハマりました。
- Raspberry Pi3 Model B (今回は arm7l)上で動作するか
- Nginx で Proxy 機能が正しく動作するか
nginx の proxy 機能で grafana に繋げても 以下の様に表示されてしまうケースにぶつかりまくりました。
| 1 | {{alert.title}} | 
総評
イメージ探しについ時間取ってしまいましたが
自作した方が早かったかもと反省。
今回は自身を監視するという仕組みにしましたが外部から監視し相互に監視し合う体制が必要です。
家庭内稟議が通ればもう一台 get しよう!
そして、家庭の為になるものを作ろう!
Raspberry PI3 Model B に docker-compose で Nginx で認証かけて Prometheus + Node Exporter + Grafana + cAdvisor構築
