github.com/ouraigua/jenkins-library@v0.0.0-20231028010029-fbeaf2f3aa9b/pkg/influx/client.go (about) 1 package influx 2 3 import ( 4 "context" 5 "time" 6 7 influxdb2 "github.com/influxdata/influxdb-client-go/v2" 8 ) 9 10 // Client handles communication with InfluxDB 11 type Client struct { 12 client influxdb2.Client 13 ctx context.Context 14 organization string 15 bucket string 16 } 17 18 // NewClient instantiates a Client 19 func NewClient(influxClient influxdb2.Client, organization string, bucket string) *Client { 20 ctx := context.Background() 21 client := Client{ 22 client: influxClient, 23 ctx: ctx, 24 organization: organization, 25 bucket: bucket, 26 } 27 return &client 28 } 29 30 // WriteMetrics writes metrics to InfluxDB 31 func (c *Client) WriteMetrics(dataMap map[string]map[string]interface{}, dataMapTags map[string]map[string]string) error { 32 writeAPI := c.client.WriteAPIBlocking(c.organization, c.bucket) 33 34 for measurement, fields := range dataMap { 35 tags := dataMapTags[measurement] 36 point := influxdb2.NewPoint(measurement, 37 tags, 38 fields, 39 time.Now()) 40 if err := writeAPI.WritePoint(c.ctx, point); err != nil { 41 return err 42 } 43 } 44 return nil 45 }