調査のため、Docker上に InfluxDB + Grafana を構築した時のメモです。
環境
% sw_vers
ProductName: macOS
ProductVersion: 13.2
BuildVersion: 22D49
% docker --version
Docker version 20.10.17, build 100c701
docker-compose.yml
version: "2"
services:
influxdb:
image: influxdb:2.7.1
container_name: influxdb-local
volumes:
- ./docker/influxdb2/data:/var/lib/influxdb2
- ./docker/influxdb2/config:/etc/influxdb2
ports:
- 8086:8086
environment:
- DOCKER_INFLUXDB_INIT_MODE=setup
- DOCKER_INFLUXDB_INIT_USERNAME=admin
- DOCKER_INFLUXDB_INIT_PASSWORD=password
- DOCKER_INFLUXDB_INIT_ORG=organization
- DOCKER_INFLUXDB_INIT_BUCKET=bucket
grafana:
image: grafana/grafana-oss:9.5.5
container_name: grafana-local
ports:
- 8085:3000
user: "472"
volumes:
- ./docker/grafana/data:/var/lib/grafana
depends_on:
- influxdb
environment:
- GF_SERVER_ROOT_URL=http://localhost:8085
- GF_SECURITY_ADMIN_PASSWORD=admin
InfluxDBにデータを投入
Go言語で10秒毎にデータを投入するプログラムを作成。
package main
import (
"context"
"math/rand"
"time"
influxdb2 "github.com/influxdata/influxdb-client-go/v2"
)
const (
INFLUXDB_TOKEN = "!!!ここにトークンを記述する!!!"
)
func main() {
rand.Seed(time.Now().UnixNano())
client := influxdb2.NewClient("http://localhost:8086", INFLUXDB_TOKEN)
writeAPI := client.WriteAPIBlocking("organization", "bucket")
field1 := 50.0
field2 := 50.0
field3 := 50.0
for i := 0; i < 180; i++ {
p := influxdb2.NewPointWithMeasurement("stat").
AddTag("unit", "temperature").
AddField("field1", field1).
AddField("field2", field2).
AddField("field3", field3).
SetTime(time.Now())
err := writeAPI.WritePoint(context.Background(), p)
if err != nil {
panic(err)
}
field1 += float64(rand.Intn(200)-100) / 10
field2 += float64(rand.Intn(200)-100) / 10
field3 += float64(rand.Intn(200)-100) / 10
time.Sleep(10 * time.Second)
}
}
APIトークンを発行
上記のGo言語のプログラムの INFLUXDB_TOKEN
に設定するトークンを取得する。
-
InfluxDB の Web UI にログインする。
http://localhost:8086/
ログイン情報はdocker-compose.yml
のDOCKER_INFLUXDB_INIT_USERNAME
とDOCKER_INFLUXDB_INIT_PASSWORD
の値です。
-
ログインしたら、左メニューの [Load Data]-[API Tokens]をクリックする。
-
トークンが発行されるので、Go言語のプログラムの
INFLUXDB_TOKEN
にコピペする。
Grafanaの設定(Data Sourceの追加)
-
Grafanaにログインする。
http://localhost:8085/
ログイン情報はadmin
とdocker-compose.yml
のGF_SECURITY_ADMIN_PASSWORD
の値です。
-
左メニューから [Administration]-[Data sources]をクリックする。
-
右上の [+ Add new data source]をクリックする。
-
次の通りに入力し、[Save & test] をクリックする。
項目名 | 入力値 | 備考 |
---|---|---|
Query Language | InfluxQL | |
HTTP - URL | http://influxdb-local:8086 | localhostではなく、container_nameを入力 |
Basic Auth Details - User | docker-compose.yml の DOCKER_INFLUXDB_INIT_USERNAME
|
|
Basic Auth Details - Password | docker-compose.yml の DOCKER_INFLUXDB_INIT_PASSWORD
|
|
Custom HTTP Headers - Header | Authorization | |
Custom HTTP Headers - Value | Token s3zf3uR-hErpMz7w... | Grafana用にInfluxDBのAPIトークンを新規発行して設定 |
InfluxDB Details - Database | docker-compose.yml の DOCKER_INFLUXDB_INIT_BUCKET |
|
InfluxDB Details - User | docker-compose.yml の DOCKER_INFLUXDB_INIT_USERNAME
|
|
InfluxDB Details - Password | docker-compose.yml の DOCKER_INFLUXDB_INIT_PASSWORD
|
|
InfluxDB Details - HTTP Method | GET |
結果
謝辞
参考にさせていただいたWebサイトがたくさんありました。
皆様、ありがとうございます。