脳汁portal

アメリカ在住(だった)新米エンジニアがその日学んだIT知識を書き綴るブログ

raspberryPiにinfluxdbとgrafanaをインストールする

ラズベリーパイにinfluxdbをインストールして、データをgrafanaでvisualization化する方法です。

Install influxdb

1. install influxdb

$ wget http://ftp.us.debian.org/debian/pool/main/i/influxdb/influxdb_1.0.2+dfsg1-1_armhf.deb
$ sudo dpkg -i influxdb_1.0.2+dfsg1-1_armhf.deb
  Selecting previously unselected package influxdb.
  (Reading database ... 133808 files and directories currently installed.)
  Preparing to unpack influxdb_1.0.2+dfsg1-1_armhf.deb ...
  Unpacking influxdb (1.0.2+dfsg1-1) ...
  Setting up influxdb (1.0.2+dfsg1-1) ...
  Adding system user 'influxdb' (UID 113) ...
  Adding new user 'influxdb' (UID 113) with group 'nogroup' ...
  Not creating home directory '/var/lib/influxdb'.
  Adding group 'influxdb' (GID 120) ...
  Done.
  Adding user 'influxdb' to group 'influxdb' ...
  Adding user influxdb to group influxdb
  Done.
  Processing triggers for systemd (215-17+deb8u4) ...
  Processing triggers for man-db (2.7.0.2-5) ...

$ ps aux | grep influx
  influxdb  1442  0.5  3.1 897392 27904 ?        Ssl  10:33   1:18 /usr/bin/influxd -config /etc/influxdb/influxdb.conf
  pi        6804  0.0  0.2   4276  1908 pts/1    S+   14:17   0:00 grep influx
$ ss -lntp | grep 808
  LISTEN     0      128                      :::8083                    :::*
  LISTEN     0      128                      :::8086                    :::*
  LISTEN     0      128                      :::8088                    :::*

(※v1.2のinstall方法も書きました)
portaltan.hatenablog.com

2. confirm GUI

GUIのportは8083なので、「http://{raspberryPiのIP}:8083」にアクセスして、以下のようなGUI画面が出てくることを確認
f:id:portaltan:20170203142048p:plain

「SHOW DATABASES」と打ち込み、きちんとクエリも投げられることを確認
f:id:portaltan:20170203142203p:plain

3. confirm API

pingチェック
$ curl -sl -I  http://localhost:8086/ping
  HTTP/1.1 204 No Content
  Content-Type: application/json
  Request-Id: 9460e8cc-e9d2-11e6-8047-000000000000
  X-Influxdb-Version: 1.0.2
  Date: Fri, 03 Feb 2017 05:35:32 GMT
  • 204ならOK
クエリチェック

APIのportは8086なので、以下のようにAPI経由でも同じようにdatabaseが確認できるかチェック

$ curl http://localhost:8086/query --data-urlencode "q=SHOW DATABASES"
{"results":[{"series":[{"name":"databases","columns":["name"],"values":[["_internal"]]]}]}]}

influxdb APIの使い方

DATABASEの作成

$ curl -i -XPOST http://localhost:8086/query --data-urlencode "q=CREATE DATABASE ${作成したいdatabase名}"
  • endpointは/query

データ投入

method
$ curl -i -XPOST "http://localhost:8086/write?db=${データ投入したいdatabase名}" --data-binary '${measurement名} ${Field名(column名)}=${値}'
  • endpointは/write
確認
$ curl -i -XPOST "http://localhost:8086/write?db=mydb" --data-binary 'test_measurement value=100'
$ curl -i -XPOST "http://localhost:8086/write?db=mydb" --data-binary 'test_measurement value=200'
$ curl -i -XPOST "http://localhost:8086/write?db=mydb" --data-binary 'test_measurement value2=200'

$ curl -G 'http://localhost:8086/query?db=mydb&pretty=true' --data-urlencode 'q=SELECT * FROM test_measurement'
{
    "results": [
        {
            "series": [
                {
                    "name": "test_measurement",
                    "columns": [
                        "time",
                        "value",
                        "value2"
                    ],
                    "values": [
                        [
                            "2017-02-03T05:45:22.049368887Z",
                            100,
                            null
                        ],
                        [
                            "2017-02-03T05:45:31.98145523Z",
                            200,
                            null
                        ],
                        [
                            "2017-02-03T05:49:57.29042142Z",
                            null,
                            200
                        ]
                    ]
                }
            ]
        }
    ]
}

ちなみに自分の中ではinfluxdbの各項目はこんなイメージです

influxdb mysql
database database
measurement table
field column

install grafana

1. install grafana

### install grafana-data
$ wget http://ftp.us.debian.org/debian/pool/main/g/grafana/grafana-data_2.6.0+dfsg-3_all.deb
$ sudo dpkg -i grafana-data_2.6.0+dfsg-3_all.deb
$ sudo apt-get install -f

### install grafana
$ wget http://ftp.us.debian.org/debian/pool/main/g/grafana/grafana_2.6.0+dfsg-3_armhf.deb
$ sudo dpkg -i grafana_2.6.0+dfsg-3_armhf.deb
$ sudo apt-get install -f

$ ps aux | grep grafana
  grafana   5525  0.0  1.5 884972 13804 ?        Ssl  10:54   0:07 /usr/sbin/grafana --config=/etc/grafana/grafana.ini cfg:default.paths.logs=/var/log/grafana cfg:default.paths.data=/var/lib/grafana
  pi        7006  0.0  0.2   4276  1908 pts/1    S+   15:43   0:00 grep grafana

$ ss -lntp | grep 3000
LISTEN     0      128                      :::3000                    :::*

2. GUI確認

portは3000なので、「http://{raspberryPiのIP}:3000」にアクセスして、以下のようなGUI画面が出てくることを確認
f:id:portaltan:20170203155047p:plain

  • 初期アカウントはadmin/admin

ログインすると以下のような画面が表示される
f:id:portaltan:20170203155135p:plain

3. Dashboard作成

Data Sourceの設定

f:id:portaltan:20170203155501p:plain

  • Name: 好きな名前
  • Type: influxDB
  • Url: influxDBのAPI
  • Database: アクセスするdababase名
  • user/pasword: root/root

Dashboardの設定

Dashboard > New > Add Panel > Graphと選んでいくと、以下のようなグラフが表示される
f:id:portaltan:20170203160001p:plain

  • ちなみにこの段階で表示されているのはダミーデータ

data_sourceや取得したmeasurements情報を入力していくと以下のようにinfluxdb上のデータでグラフが作成されるf:id:portaltan:20170203160256p:plain

  • influxdbの項目でセットした100と200が表示されているのがわかる
  • grafanaの詳しい設定は以下参照

portaltan.hatenablog.com