OS: windows 10 x64 / CentOS 7.3 x64
Go: 1.8.1
influxdb: 1.2.2
code:
// influxdb init
func DBset_influxdb() *db_influx {
// Make client
config := client.HTTPConfig{
Addr: "http://localhost:8086",
Username:"root",
Password:"root1234",
}
c, err := client.NewHTTPClient(config)
if err != nil {
log.WithField("mylib", "dbaccess.DBset_influxdb.NewUDPClient").Error(err)
}
return &db_influx{c}
}
// db access close
func (db *db_influx) Close() {
db.client.Close()
}
// db access write data
func (db *db_influx) WriteDatas(data_type string, datas []string) {
if len(datas) == 0 {
log.WithField("mylib", "dbaccess.WriteDatas.datas").Error("no datas.")
return
}
// set data tags
var dbname string
var tags map[string]string
switch data_type {
case "cpu":
tags = map[string]string{"cpu": "cpu-usage"}
dbname = "sysinfo_cpu"
case "mem":
tags = map[string]string{"men": "men-usage"}
dbname = "sysinfo_mem"
case "disk":
tags = map[string]string{"disk": "disk-usage"}
dbname = "sysinfo_disk"
case "net":
tags = map[string]string{"net": "net-usage"}
dbname = "sysinfo_net"
default:
log.WithField("mylib", "dbaccess.WriteDatas.data_type_set").Error(fmt.Sprintf("not support %s type", data_type))
return
}
// Create a new point batch
bp, _ := client.NewBatchPoints(client.BatchPointsConfig{Database: dbname, Precision: "ms"})
// Create a point and add to batch
pts := []*client.Point{}
var fields map[string]interface{}
for _, line := range datas {
if err := json.Unmarshal([]byte(line), &fields); err != nil {
log.WithField("mylib", "dbaccess.WriteDatas.Unmarshal").Error(err)
return
}
pt, err := client.NewPoint("test_linux", tags, fields, time.Now())
if err != nil {
log.WithField("mylib", "dbaccess.WriteDatas.NewPoint").Error(err)
return
}
pts = append(pts, pt)
}
bp.AddPoints(pts)
// Write the batch
if err := db.client.Write(bp); err != nil {
log.WithField("mylib", "dbaccess.WriteDatas.Write").Error(err)
}
}
but
fmt.Println(bp.Points())
is good.
using AddPoint code:
var fields map[string]interface{}
for _, line := range datas {
if err := json.Unmarshal([]byte(line), &fields); err != nil {
log.WithField("mylib", "dbaccess.WriteDatas.Unmarshal").Error(err)
return
}
pt, err := client.NewPoint("test_linux", tags, fields, time.Now())
if err != nil {
log.WithField("mylib", "dbaccess.WriteDatas.NewPoint").Error(err)
return
}
bp.AddPoint(pt)
// Write the batch
if err := db.client.Write(bp); err != nil {
log.WithField("mylib", "dbaccess.WriteDatas.Write").Error(err)
}
}
why?