influxdb.conf
[meta] dir = "/var/lib/influxdb/meta" [data] dir = "/var/lib/influxdb/data" engine = "tsm1" wal-dir = "/var/lib/influxdb/wal" [http] enabled = true flux-enabled = true
docker-compose.yml
version: "3" services: influxdb: image: influxdb:1.8 hostname: influxdb_for_test container_name: influxdb_for_test volumes: - ./influxdb:/var/lib/influxdb - ./work:/tmp/work ports: - 8086:8086
起動
docker-compose up -d
docker exec -it influxdb_for_test bash # influx > create database sampledb > create user sample with password 'sample' WITH ALL PRIVILEGES
go get github.com/influxdata/influxdb-client-go
GitHub で公開されているGoクライアントの1.8系用のサンプルそのままで書いてみる。
https://github.com/influxdata/influxdb-client-go
package main import ( "context" "fmt" "time" "github.com/influxdata/influxdb-client-go" ) func main() { userName := "sample" password := "sample" client := influxdb2.NewClient("http://localhost:8086", fmt.Sprintf("%s:%s",userName, password)) writeAPI := client.WriteAPIBlocking("", "sampledb/autogen") p := influxdb2.NewPoint("stat", map[string]string{"unit": "temperature"}, map[string]interface{}{"avg": 24.5, "max": 45}, time.Now()) err := writeAPI.WritePoint(context.Background(), p) if err != nil { fmt.Printf("Write error: %s\n", err.Error()) } else { fmt.Printf("Write success.\n") } queryAPI := client.QueryAPI("") result, err := queryAPI.Query(context.Background(), `from(bucket:"sampledb")|> range(start: -1h) |> filter(fn: (r) => r._measurement == "stat")`) if err == nil { for result.Next() { if result.TableChanged() { fmt.Printf("table: %s\n", result.TableMetadata().String()) } fmt.Printf("row: %s\n", result.Record().String()) } if result.Err() != nil { fmt.Printf("Query error: %s\n", result.Err().Error()) } } else { fmt.Printf("Query error: %s\n", err.Error()) } client.Close() }