38 lines
952 B
Go
38 lines
952 B
Go
|
// Copyright (c) 2016 Arista Networks, Inc.
|
||
|
// Use of this source code is governed by the Apache License 2.0
|
||
|
// that can be found in the COPYING file.
|
||
|
|
||
|
package main
|
||
|
|
||
|
import "fmt"
|
||
|
|
||
|
// DataPoint for OpenTSDB to store.
|
||
|
type DataPoint struct {
|
||
|
// Metric name.
|
||
|
Metric string `json:"metric"`
|
||
|
|
||
|
// UNIX timestamp with millisecond resolution.
|
||
|
Timestamp uint64 `json:"timestamp"`
|
||
|
|
||
|
// Value of the data point (integer or floating point).
|
||
|
Value interface{} `json:"value"`
|
||
|
|
||
|
// Tags. The host is automatically populated by the OpenTSDBConn.
|
||
|
Tags map[string]string `json:"tags"`
|
||
|
}
|
||
|
|
||
|
func (d *DataPoint) String() string {
|
||
|
var tags string
|
||
|
if len(d.Tags) != 0 {
|
||
|
for tag, value := range d.Tags {
|
||
|
tags += " " + tag + "=" + value
|
||
|
}
|
||
|
}
|
||
|
return fmt.Sprintf("put %s %d %#v%s\n", d.Metric, d.Timestamp/1e9, d.Value, tags)
|
||
|
}
|
||
|
|
||
|
// OpenTSDBConn is a managed connection to an OpenTSDB instance (or cluster).
|
||
|
type OpenTSDBConn interface {
|
||
|
Put(d *DataPoint) error
|
||
|
}
|