#author("2020-07-26T03:18:00+00:00","","") #mynavi(Go言語入門) #setlinebreak(on); * 目次 [#mb78b9f9] #contents - 関連 -- [[Azure Functions を Go で書く]] - 参考 -- https://github.com/influxdata/influxdb-client-go * influxdbインストール、起動 [#g3282671] #html(<div class="pl10">) influxdb.conf #mycode2(){{ [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 #mycode2(){{ 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 }} 起動 #myterm2(){{ docker-compose up -d }} #html(</div>) * サンプルDB作成 [#p38ede5e] #html(<div class="pl10">) #myterm2{{ docker exec -it influxdb_for_test bash # influx > create database sampledb > create user sample with password 'sample' WITH ALL PRIVILEGES }} #html(</div>) * Goクライアント取得 [#vd5bf7ae] #html(<div class="pl10">) #myterm2(){{ go get github.com/influxdata/influxdb-client-go }} #html(</div>) * Goのソース作成 [#df9072fc] #html(<div class="pl10">) GitHub で公開されているGoクライアントの1.8系用のサンプルそのままで書いてみる。 https://github.com/influxdata/influxdb-client-go #mycode{{ 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() } }} #html(</div>)