— Raspberry Pi — 1 min read
当初Cluster HATでクラスター化したRaspberry Pi Zeroのシステムリソース情報をFluent Bitで収集し、InfluxDBに蓄積したデータをGrafanaで可視化しようと目論んでいたが、InfluxDBと開発元が同じTelegrafの方が相性が良さそうなので、Telegraf + InfluxDB + Grafanaの構成に変更。
InfluxDBを起動。設定は特に変更せずにそのまま利用可能。
$ sudo service influxdb start
InfluxDBはポート8086で受信可能。
Raspberry Pi ZeroにTelegrafをインストール。
インストールする環境は以下の通り。
$ cat /proc/device-tree/modelRaspberry Pi Zero Rev 1.3$ lsb_release -aNo LSB modules are available.Distributor ID: RaspbianDescription: Raspbian GNU/Linux 10 (buster)Release: 10Codename: buster
PGPキーを取得しリポジトリを追加。
$ wget -qO - https://repos.influxdata.com/influxdb.key | sudo apt-key add -OK$ echo "deb https://repos.influxdata.com/debian buster stable" | sudo tee /etc/apt/sources.list.d/influxdb.listdeb https://repos.influxdata.com/debian buster stable
リポジトリを更新してからtelegraf
をインストール。
$ sudo apt update$ sudo apt install telegraf$ telegraf --versionTelegraf 1.15.2 (git: HEAD cd037b49)
/etc/telegraf/telegraf.conf
を編集。
OutputにInfluxDBを設定。接続にhttp
、InfluxDBのデータベース名はtelegraf
を指定。
1# Configuration for sending metrics to InfluxDB2[[outputs.influxdb]]3 ## The full HTTP or UDP URL for your InfluxDB instance.4 ##5 ## Multiple URLs can be specified for a single cluster, only ONE of the6 ## urls will be written to each interval.7 # urls = ["unix:///var/run/influxdb.sock"]8 # urls = ["udp://127.0.0.1:8089"]9 urls = ["http://(InfluxDBが動作しているホストのIP):8086"]1011 ## The target database for metrics; will be created as needed.12 ## For UDP url endpoint database needs to be configured on server side.13 database = "telegraf"
InputではデフォルトでCPUやディスクの使用量が取れるようになっている。
1# Read metrics about cpu usage2[[inputs.cpu]]3 ## Whether to report per-cpu stats or not4 percpu = true5 ## Whether to report total system cpu stats or not6 totalcpu = true7 ## If true, collect raw CPU time metrics.8 collect_cpu_time = false9 ## If true, compute and report the sum of all non-idle CPU states.10 report_active = false111213# Read metrics about disk usage by mount point14[[inputs.disk]]15 ## By default stats will be gathered for all mount points.16 ## Set mount_points will restrict the stats to only the specified mount points.17 # mount_points = ["/"]1819 ## Ignore mount points by filesystem type.20 ignore_fs = ["tmpfs", "devtmpfs", "devfs", "iso9660", "overlay", "aufs", "squashfs"]
必要な項目をコメントアウトになっている部分を修正、追記していく。
有効にしたInputは以下。
1[[inputs.diskio]]2 device_tags = ["ID_FS_TYPE", "ID_FS_USAGE"]3 name_templates = ["$ID_FS_LABEL","$DM_VG_NAME/$DM_LV_NAME"]4[[inputs.kernel]]5[[inputs.mem]]6[[inputs.processes]]7[[inputs.swap]]8[[inputs.system]]9[[inputs.internal]]10[[inputs.interrupts]]11[[inputs.linux_sysctl_fs]]12[[inputs.net]]13[[inputs.netstat]]14[[inputs.nstat]]
その他、Raspberry Pi特化でCPU温度とGPU温度を取得する設定をする。
1[[inputs.file]]2 files = ["/sys/class/thermal/thermal_zone0/temp"]3 name_override = "cpu_temperature"4 data_format = "value"5 data_type = "integer"67[[inputs.exec]]8 commands = ["/usr/bin/vcgencmd measure_temp"]9 name_override = "gpu_temperature"10 data_format = "grok"11 grok_patterns = ["%{NUMBER:value:float}"]
デフォルトのままではGPU温度を取得できないので、Raspberry Pi側でユーザtelegraf
をグループvideo
に加える設定をする。
$ sudo usermod -G video telegraf
最後に、telegraf
をサービスとして起動。
$ sudo service telegraf start
InfluxDB側にデータベース"telegraf"がなくても、Telegrafから接続することで新たに作られる。(設定で変更可能。)
grafana-server
を起動。
$ sudo service grafana-server start
Grafanaをインストールしたホストのポート3000にWebブラウザからアクセスすると、 Grafanaの設定画面が表示される。
初期ユーザ名と初期パスワードはそれぞれadmin
。
ダッシュボードは、左横のメニューから+
でImportを選ぶことで、
公式HPに登録されているテンプレートからインポートすることが可能。
Raspberry Pi Monitoring のテンプレートを使用してみる。
だいぶ、イイ感じになりました。