
raspberry pi4でtelegraf+influxdb+ grafanaで綺麗なリソースモニタリング
朝方SSDに関する内容のブログを書きました。
立て続けにメモを公開していきます。
カシマです。
今度はrasberry pi4でリソースモニタリングしたいなーと感じました。
topやhtopしてもいいのですがSSHかコンソール操作になるのでブラウザから見れたら便利だな、と思いやってみました。
導入自体はすげー簡単だったのですが、大変だったのはテンプレート側でリソースモニタリングに表示する値がN/Aになっていることでした。
諸々解決できたので忘れないうちに公開しますね。
必要なソフトウェアのインストール
必要なソフトウェアですが、influxdbとtelegrafでこの二つはinfluxdataのリポジトリ登録で使えるようになります。
環境はubuntu 20.04, arm64, rasberry pi4ですのでdebianは以下のサイトが参考になると思います。
ubuntuでもdebianでもインストールの流れは同じなのでdebianの方は公式サイトを見ながら参考にどうぞ。
インストールはサクッと行えるので諸々まとめて記述します。
$ sudo apt install apt-transport-https
$ curl https://repos.influxdata.com/influxdb.key | sudo apt-key add -
$ curl https://packages.grafana.com/gpg.key | sudo apt-key add -
$ source /etc/lsb-release
$ sudo curl “deb https://repos.influxdata.com/${DISTRIB_ID,,} ${DISTRIB_CODENAME} stable” | sudo tee /etc/apt/sources.list.d/influxdb.list
$ sudo add-apt-repository “deb https://packages.grafana.com/oss/deb stable main”
$ sudo apt update && sudo apt install influxdb telegraf grafana
$ sudo systemctl enable grafana-server
これでインストール作業は完了です。
リソースのモニタリングからWebUIを使う準備が整いました。
順番にセットアップしていきます。
telegrafで取りたいメトリックをinfluxdbに入れる
telegrafのconfは /etc/telegraf/telegraf.conf に保存されています。
コメントアウトしてない箇所を出力していますので参考にどうぞ。
[global_tags]
[agent]
interval = "60s"
round_interval = true
metric_batch_size = 1000
metric_buffer_limit = 10000
collection_jitter = "0s"
flush_interval = "60s"
flush_jitter = "0s"
precision = ""
hostname = ""
omit_hostname = false
[[outputs.influxdb]]
[[inputs.cpu]]
percpu = true
totalcpu = true
collect_cpu_time = false
report_active = false
[[inputs.disk]]
mount_points = ["/","/var"]
ignore_fs = ["tmpfs", "devtmpfs", "devfs", "iso9660", "overlay", "aufs", "squashfs"]
[[inputs.io]]
[[inputs.diskio]]
[[inputs.kernel]]
[[inputs.mem]]
[[inputs.processes]]
[[inputs.swap]]
[[inputs.system]]
[[inputs.net]]
interfaces = ["eth0","wlan0"]
[[inputs.netstat]]
remove_numbers = true
timeout = "5s"
[[inputs.systemd_units]]
unittype = "service"
[[inputs.wireless]]
host_proc = "/proc"
編集作業前に事前に
sudo cp /etc/telegraf/telegraf.conf /etc/telegraf/telegraf.conf.bk
この作業を実施してから上記設定を参考に取りたいデータを取得します。
一応confを生のまま操作していればコメントにどういうデータが取れるかも記載がありますので、時間があればconfの例も参考にしていただければと思います。
telegrafでは自前スクリプトを書き、CPU温度やHDDの温度などもinfluxdbに送ることができるようになっています。
参考: GOOZENLAB – Telegrafのインストール
名前の設定ファイルは別途アップしようかと思いますが、準備がいるのでお待ちください。
設定変更のたびに sudo systemctl reload telegraf
を実行してください。
grafanaの設定
こちらはconfの設定ではありません。
まずは以下のコマンドで起動します。
$ sudo systemctl start grafana-server
enableはインストールついでにコマンドを書きましたので再起動後に実行されます。
ついでブラウザからアクセスしますが、以下のようにアクセスします。
- http://{rasberrypiのプライベートIP}:3000/
アクセスするとログイン画面が表示されるため以下の通りログインします。
ログインID/パスワード
admin
/ admin
ログインできればadminアカウントのパスワード設定をします。
ユーザ名も変更が可能ですので後ほど設定してみてください。
インポートですが、サイドメニューにプラスボタンがあります。
プラスボタンをクリックするとGrafana.com DashboardにテンプレートのIDを入力することでインポートが可能になります。
お勧めのテンプレートはテンプレートIDが5955です
テンプレートでN/Aになっていたり正常に値が取れないところは以下のようにWHERE句を直すことで正常に表示されますので試してみてください。
- 変更前のWHERE句
WHERE ("host" =~ /^$server$/)
- 変更後のWHERE句
WHERE ("host" =~ /$server$/)
上のメニューから保存できるので保存したらひとまず完了です。
お疲れさまでした。
設定も含めてtelegraf+influxdb+grafanaが使える状態になりました。
あとはWebUIをいじり倒して失敗したDiscardすることで巻き戻せます。
保存し忘れた場合は画面変更しようとすると保存するかDiscardするかcancelするか聞いてくれますのでWebUIは親切設計だと思いました。
これで日曜日に実施したお遊びはおわりです。