RaspberryPiでIoTの可視化(Grafana版)

提供: ディーズガレージ wiki
移動先: 案内検索
Grafana

Grafana試してみます。

開発環境

ボード Raspberry Pi 1 Model B
OS Raspbian Jessie with PIXEL 2017-04-10
microSDHC SanDisk Ultra microSDHC Class10 8GB
LAN 標準搭載の有線LAN

ファームウェア更新

$ sudo rpi-update

再起動

$ sudo reboot

最新状態にアップデート

$ sudo apt-get update
$ sudo apt-get upgrade

再起動

$ sudo reboot

ホスト名

ホスト名変更

$ sudo leafpad /etc/hostname

変更

iot

ホスト名変更

$ sudo leafpad /etc/hosts

変更

127.0.1.1 iot

再起動

$ sudo reboot

IP固定

以降の遠隔操作でIPアドレスで接続したい場合必要な設定です。

$ sudo leafpad /etc/dhcpcd.conf

末尾に追記(設定内容は各ネットワーク環境により異なります。「Raspberry Pi Jessie IP固定」などで検索してみてください。)

interface eth0
static ip_address=192.168.1.187/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1

再起動

$ sudo reboot

遠隔操作

運用にはモニター、マウス、キーボードは必要ないので、この段階で遠隔操作にしてしまいます。
Raspbian Jessie with PIXEL にはRealVNCが標準で入ってます。これを使用してみます。

デフォルトで有効になってないので

Menu→設定→RaspberryPiの設定→インターフェイスタブ→VNC有効→OK→再起動

何も考えずディスプレイを取り外しVNCに接続すると画面サイズが656x416となってしまいます。おまじないがあるようなので設定しておきます。

$ sudo leafpad /boot/config.txt
#hdmi_mode=1の下に以下を追加
hdmi_ignore_edid=0xa5000080
hdmi_group=2
hdmi_mode=47

参考: config.txt - Raspberry Pi Documentation

RaspberryPiをシャットダウン

モニター、マウス、キーボードを取り外して電源入れ直し

VNCクライアントから接続してみる
ホスト名で接続する場合、クライアントパソコンにはavahiかBonjourがインストールされている必要があります。
Windowsパソコンだけ問題になりやすく、簡単な方法はiTunesをインストールすることです。
ネット検索で「Raspberry avahi Bonjour」辺りで調べると詳しい事情が出てきます。

RealVNC Viewerの場合
VNC Server: iot.local または 192.168.1.187
Username: pi
Password: raspberry
Confirm: raspberry

成功していれば、以降はVNCクライアントの窓の中で作業できます。

NetDataのインストール

参考: Installation · firehol/netdata Wiki · GitHub

$ sudo apt-get update
$ sudo apt-get install zlib1g-dev uuid-dev libmnl-dev gcc make git autoconf autoconf-archive autogen automake pkg-config curl
$ git clone https://github.com/firehol/netdata.git --depth=1
$ cd netdata
$ sudo ./netdata-installer.sh
$ sudo cp system/netdata.service /etc/systemd/system/
$ sudo systemctl daemon-reload
$ sudo systemctl enable netdata
$ sudo service netdata start

参考: netdata for IoT · firehol/netdata Wiki · GitHub
RPi1向け (RPi2とRP3のnetdataのチューニングは必要ないと言ってます)

$ sudo leafpad /etc/netdata/netdata.conf
[global]
    history = 600
    update every = 1
    memory mode = ram
    debug log = none
    error log = none
    access log = none
[web]
    enable gzip compression = no
    gzip compression level = 1
[plugins]
    tc = no
    idlejitter = no
    cgroups = no
    #enable running new plugins = no

sensorsプラグインを有効に(python版は動きませんでしたbash版で対応)

$ sudo leafpad /etc/netdata/charts.d.conf
sensors=force (アンコメント)

参考: netdata backends · firehol/netdata Wiki · GitHub

$ sudo leafpad /etc/netdata/netdata.conf
[backend]
    enabled = yes
    data source = average
    type = opentsdb
    destination = localhost:4242
    prefix = netdata
    hostname = iot
    update every = 10
    buffer on failures = 10
    timeout ms = 20000

再起動

$ sudo reboot

動作確認

http://127.0.0.1:19999
またはローカルネット内の他のPCから http://192.168.1.187:19999

設定項目の確認

http://127.0.0.1:19999/netdata.conf
またはローカルネット内の他のPCから http://192.168.1.187:19999/netdata.conf

InfluxDBのインストール

参考: InfluxData | Documentation | Installation

$ curl -sL https://repos.influxdata.com/influxdb.key | sudo apt-key add -
$ source /etc/os-release
$ test $VERSION_ID = "7" && echo "deb https://repos.influxdata.com/debian wheezy stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
$ test $VERSION_ID = "8" && echo "deb https://repos.influxdata.com/debian jessie stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
$ sudo apt-get update
$ sudo apt-get install influxdb
$ sudo service influxdb start
$ sudo leafpad /etc/influxdb/influxdb.conf
[[opentsdb]]
    enabled = true
    bind-address = ":4242"
    database = "netdata"

再起動

$ sudo reboot

Grafanaのインストール

参考: fg2it/grafana-on-raspberry Wiki · GitHub
For raspberry pi 1, use

$ sudo apt-get install adduser libfontconfig
$ sudo apt-get install apt-transport-https curl

$ curl https://bintray.com/user/downloadSubjectPublicKey?username=bintray | sudo apt-key add -
$ echo "deb https://dl.bintray.com/fg2it/deb-rpi-1b jessie main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
$ sudo apt-get update
$ sudo apt-get install grafana
$ sudo systemctl enable grafana-server
$ sudo systemctl start grafana-server

For raspberry pi 2 and pi 3, use

$ sudo apt-get install adduser libfontconfig
$ sudo apt-get install apt-transport-https curl

$ curl https://bintray.com/user/downloadSubjectPublicKey?username=bintray | sudo apt-key add -
$ echo "deb https://dl.bintray.com/fg2it/deb jessie main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
$ sudo apt-get update
$ sudo apt-get install grafana
$ sudo systemctl enable grafana-server
$ sudo systemctl start grafana-server

再起動

$ sudo reboot

Grafana起動

http://192.168.1.187:3000
またはローカルネット内の他のPCから http://192.168.1.187:3000
User: admin
Password: admin

Home Dashboardが表示されます。(以降とりあえずHome Dashboardは無視しておきます)
Grafana左上アイコン→Data Sources→Add data source

Grafana-002.jpg

Dashboard for netdataのインポート

https://grafana.com/dashboards/1295
Dashboard for netdata. Netdata used as collector and InfluxDB as data source.
Just change yourhostname in json file and you ready to go!

NetDataのダッシュボード。Netdataはコレクタとして使用され、InfluxDBはデータソースとして使用されます。
jsonファイルのyourhostnameを変更するだけで準備が整っています。

jsonの書き換えがややこしい部分があるので書き換え済jsonはこちら

http://dz.plala.jp/wiki_data/yourhostname_rev1.json

Grafana左上アイコン→Dashboards→Import
Upload .json Fileでファイル選択
InfluxDBにnetdata指定しImportボタン

センサの可視化

以降検証中です。

資料