RaspberryPi4 influxDBとGrafana編

# はじめに
### influxDBとは
* オープンソースの時系列データベース(Time series database)の1つ
* 時間を軸としたデータ収集に特化している
* センサー値や温度などの、時刻によって刻々と変化するデータを蓄積するのに使う

### Grafanaとは
* ログデータを可視化するためのツール
* influxDBやPrometheusなどと組み合わせて使う


# influxDBのセットアップ

### インストールと起動確認

```bash
wget -qO- https://repos.influxdata.com/influxdb.key | sudo apt-key add -
source /etc/os-release
echo "deb https://repos.influxdata.com/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/influxdb.list

sudo apt update & apt install influxdb
```

動作確認
```bash
curl -sl -I http://localhost:8086/ping
```

`ping`返ってきたらとりあえず動いてるはず
`SHOW DATABASE`を送って、空なのを確認する。(DBはまだ追加していないので)

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

データベースはまだ作っていないので、こんな感じに返ってきたらOK

### データベースの追加
`HomeDB`が作りたいデータベース名

```bash
curl -G http://localhost:8086/query --data-urlencode "q=CREATE DATABASE HomeDB"
curl http://localhost:8086/query --data-urlencode "q=SHOW DATABASES"
　{"results":[{"statement_id":0,"series":[{"name":"databases","columns":["name"],"values":[["_internal"],["HomeDB"]]}]}]}
```

`SHOW DATABASE`して、追加されていればOK

### お試しデータの登録

```bash
curl -i -XPOST "http://localhost:8086/write?db=HomeDB" --data-binary 'ElectricPower,hard=RasPi4 Power=100'
```
何回か上記コマンドを実行して、時系列データとして見れるようにしておく

### 保存先を外付けSSDに変更
起動メディアはSDカードなので、書き込み耐久に不安がある
DBを外付けSSDに設定して、そっちに書き込むようにする
外付けSSDは`ex-ssd`としてマウント済みとする

```bash
vim /etc/influxdb/influxdb.conf
 [
              :
  dir = "/mnt/ex-ssd/var/lib/influxdb/meta"
  dir = "/mnt/ex-ssd/var/lib/influxdb/data"
  wal-dir = "/mnt/ex-ssd/var/lib/influxdb/wal"
              :
 ]

```
パーミッションで怒られる時は外付けドライブのアクセス権限を変更する

```bash
sudo chmod -R +rwx /mnt/ex-ssd
```

influxdb を再起動すれば外付けSSDに書き込みを行うようになる


# Grafanaのインストール

```bash
sudo wget -q -O /usr/share/keyrings/grafana.key https://apt.grafana.com/gpg.key
echo "deb [signed-by=/usr/share/keyrings/grafana.key] https://apt.grafana.com stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
echo "deb [signed-by=/usr/share/keyrings/grafana.key] https://apt.grafana.com beta main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
sudo apt update && sudo apt install -y grafana
sudo systemctl unmask grafana-server
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
```

`RaspberryPiのIP:3000`にアクセスする
以下の画面が表示されたらインストールできてる。
![Screenshot from 2021-03-08 19-28-06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133206/5b6ba4a0-0225-4495-115a-504ba06c7812.png)


### 初回ログイン
- username : admin
- password : admin
- パスワードはさっさと変更する

### 保存先を外付けSSDに変更
```bash
vim /etc/default/grafana-server
 [
              :
  LOG_DIR=/mnt/ex-ssd/var/log/grafana
  DATA_DIR=/mnt/ex-ssd/var/lib/grafana
  PLUGINS_DIR=/mnt/ex-ssd/var/lib/grafana/plugins
              :
 ]
```

# GrafanaとinfluxDBをつなぐ
Configuration(ギアアイコン) -> Data Sources -> Add data source -> influxDB
![Screenshot from 2021-03-08 19-14-23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133206/f5a7f3e1-6506-7352-e131-bdd6d9e93493.png)


以下のように設定、指定のない項目はデフォルトのまま

| 項目 | 設定 |
| - | - |
| name | HomeDB |
| URL | http://localhost:8086 |
| Database | HomeDB |

![Screenshot from 2021-03-08 19-19-21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133206/28978179-8b05-d902-775a-b627f7b4f579.png)

`Save & Test`を押して、以下の表示が出たらOK
![Screenshot from 2021-03-08 19-23-54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133206/bf41defa-1550-8436-76fa-a5ed8d9b5174.png)



# Grafanaパネルの作り方

Create(+アイコン) -> Dashboard -> Add new panel

![Screenshot from 2021-03-08 19-12-50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133206/e5ebce5d-50bf-d563-1fcf-c4e79221a6b6.png)

| 項目 | 設定 |
| - | - |
| FROM -> select measurement | ElectricPower |
| SELECT -> field | Power |
| ALIAS BY | ElectricPower |

![Screenshot from 2021-03-08 17-16-51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133206/8df162fe-f684-3afd-224b-a24894379ab8.png)

こんな感じで表示されたらOK
![Screenshot from 2021-03-08 19-08-47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/133206/6318b59e-ca74-d5f8-1536-8e5fe60d82ad.png)