// influxdb package main import ( "fmt" "log" "time" influxdb "github.com/influxdata/influxdb/client/v2" ) var ( infdb string infhost string ) func writeStats(start time.Time) { if opts.Debug { fmt.Printf("writing to influxdb server: %s\n", opts.Influxdb) fmt.Printf("host: %s -- addr: %s\n", infhost, infdb) } c, err := influxdb.NewHTTPClient(influxdb.HTTPConfig{ Addr: fmt.Sprintf("http://%s", infdb), Timeout: 2 * time.Second, }) if err != nil { fmt.Printf("InfluxDB connect Error: %+v\n", err) log.Printf("InfluxDB connect Error: %+v\n", err) return } defer c.Close() bp, err := influxdb.NewBatchPoints(influxdb.BatchPointsConfig{ Database: "dovecot", Precision: "s", }) if err != nil { fmt.Printf("InfluxDB batch Error: %+v\n", err) log.Printf("InfluxDB batch Error: %+v\n", err) return } tags := map[string]string{"server": infhost, "domain": dbs.Database} fields := map[string]interface{}{ "user": count.GetUser(), "log": count.GetLog(), "err": count.GetErr(), "rem": count.GetRem(), "dup": count.GetDup(), "stop": count.GetTime(), } pt, err := influxdb.NewPoint("ll2mongo", tags, fields, start) if err != nil { fmt.Printf("InfluxDB point Error: %+v\n", err) log.Printf("InfluxDB point Error: %+v\n", err) return } if opts.Debug { fmt.Printf("InfluxDB pt: %+v\n", pt) } bp.AddPoint(pt) // Write the batch err = c.Write(bp) if err != nil { fmt.Printf("InfluxDB write Error: %+v\n", err) log.Printf("InfluxDB write Error: %+v\n", err) return } }