前回、ネットワークラジオを録音する機能をラズパイ3に付けたので、ラズパイ3の稼働状況が見れるように出来ないかな?ということで、今回、書いてます。
正直、まだ、途中ですが終わったら、また、訂正記事にするつもりです。
ラズパイ3の状態を細かく監視するためにPrometheusとGrafanaを導入しました。
PrometheusのDockerコンテナ運用と設定ファイルのマウント
- PrometheusはDockerコンテナ(192.168.0.140)で稼働中。
prometheus.yml
をホスト側で編集しても反映されない原因は、設定ファイルがコンテナにマウントされていなかったこと。- そのため、コンテナを停止・削除し、
-v
オプションで設定ファイルをマウントし直して再起動した。
docker run -d \
--name prometheus \
-p 9090:9090 \
-v /home/yoshi/network-monitor/prometheus.yml:/etc/prometheus/prometheus.yml \
prom/prometheus
- IPアドレスなどターゲット情報の変更も忘れずに。
prometheus.yml の scrape_configs 設定例
scrape_configs:
- job_name: 'raspberrypi3'
static_configs:
- targets: ['192.168.0.74:9100']
- ここで指定したIPやポートに
node_exporter
が動作していることが前提。
Grafanaでの可視化と「No data」問題の原因
- GrafanaでPrometheusをデータソースとして登録。
- パネルのクエリ欄にCPU使用率を表示するPromQLを入力。
rate(node_cpu_seconds_total{job="raspberrypi3",mode!="idle"}[5m])
- ところが「No data」と表示されることがあった。
- 調査の結果、
mode
ラベルが正しく存在し、データも取れていることは確認済み。 - 「No data」になるのは、rate()関数が5分間のデータを必要とするため、起動直後はデータが不足しているから。
- 時間範囲を「Last 15 minutes」などに広げたり、起動後5分以上待つことでデータが表示されるようになる。
運用しやすさのためのポイント
rate()
の代わりにirate()
を使うと、起動直後でもデータが得やすいがノイズは増える。- Grafanaのパネルでは、表示形式(折れ線グラフ、ゲージ、数値)や凡例、色使いを工夫して見やすさを追求。
- Prometheusの設定ファイルは必ずDockerコンテナにマウントし、変更時はコンテナ再起動を忘れずに。
まとめ
今回の構築で得た学びは、
- 設定ファイルのマウント忘れに注意。
- PromQLの関数が時間範囲に依存することを理解。
- Grafanaのパネル設計も運用美の重要な要素。
今後はメモリやディスクの監視パネルを追加し、アラート設定まで整えていく予定です。