- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2020-07-26T02:42:18+00:00","","")
#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">)
```
create user sample with password 'sample' WITH ALL PRIVILEGES
```
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>)