Raspberry Pi 監視環境をPrometheus+Grafanaで構築した話

前回、ネットワークラジオを録音する機能をラズパイ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のパネル設計も運用美の重要な要素。

今後はメモリやディスクの監視パネルを追加し、アラート設定まで整えていく予定です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください