目次

influxdbインストール、起動

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

サンプルDB作成

docker exec -it influxdb_for_test bash
# influx
> create database sampledb
> create user sample with password 'sample' WITH ALL PRIVILEGES

Goクライアント取得

go get github.com/influxdata/influxdb-client-go

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()
}


トップ   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS