Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client allows sending batches of Prometheus samples to OpenTSDB.
type StoreSamplesRequest ¶
type StoreSamplesRequest struct { Metric TagValue `json:"metric"` Timestamp int64 `json:"timestamp"` Value float64 `json:"value"` Tags map[string]TagValue `json:"tags"` }
StoreSamplesRequest is used for building a JSON request for storing samples via the OpenTSDB.
type TagValue ¶
type TagValue model.LabelValue
TagValue is a model.LabelValue that implements json.Marshaler and json.Unmarshaler. These implementations avoid characters illegal in OpenTSDB. See the MarshalJSON for details. TagValue is used for the values of OpenTSDB tags as well as for OpenTSDB metric names.
func (TagValue) MarshalJSON ¶
MarshalJSON marshals this TagValue into JSON that only contains runes allowed in OpenTSDB. It implements json.Marshaler. The runes allowed in OpenTSDB are all single-byte. This function encodes the arbitrary byte sequence found in this TagValue in the following way:
- The string that underlies TagValue is scanned byte by byte.
- If a byte represents a legal OpenTSDB rune with the exception of '_', that byte is directly copied to the resulting JSON byte slice.
- If '_' is encountered, it is replaced by '__'.
- If ':' is encountered, it is replaced by '_.'.
- All other bytes are replaced by '_' followed by two bytes containing the uppercase ASCII representation of their hexadecimal value.
This encoding allows to save arbitrary Go strings in OpenTSDB. That's required because Prometheus label values can contain anything, and even Prometheus metric names may (and often do) contain ':' (which is disallowed in OpenTSDB strings). The encoding uses '_' as an escape character and renders a ':' more or less recognizable as '_.'
Examples:
"foo-bar-42" -> "foo-bar-42"
"foo_bar_42" -> "foo__bar__42"
"http://example.org:8080" -> "http_.//example.org_.8080"
"Björn's email: bjoern@soundcloud.com" -> "Bj_C3_B6rn_27s_20email_._20bjoern_40soundcloud.com"
"日" -> "_E6_97_A5"
func (*TagValue) UnmarshalJSON ¶
UnmarshalJSON unmarshals JSON strings coming from OpenTSDB into Go strings by applying the inverse of what is described for the MarshalJSON method.