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 CMX.
type StoreMetricDefinitionsRequest ¶
type StoreMetricDefinitionsRequest struct {
MetricDefinitions []metricDefinition `json:"metric-definitions"`
}
StoreMetricDefinitionsRequest is used for building a JSON request for storing samples via the CMX.
type StoreSamplesRequest ¶
type StoreSamplesRequest struct {
MetricSamples []metricSample `json:"metric-samples"`
}
StoreSamplesRequest is used for building a JSON request for storing samples via the CMX.
type TagValue ¶
type TagValue model.LabelValue
TagValue is a model.LabelValue that implements json.Marshaler and json.Unmarshaler. These implementations avoid characters illegal in CMX. See the MarshalJSON for details. TagValue is used for the values of CMX tags as well as for CMX metric names.
func (TagValue) MarshalJSON ¶
MarshalJSON marshals this TagValue into JSON that only contains runes allowed in CMX. It implements json.Marshaler. The runes allowed in CMX 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 CMX 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 CMX. That's required because Prometheus label values can contain anything, and even Prometheus metric names may (and often do) contain ':' (which is disallowed in CMX 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 CMX into Go strings by applying the inverse of what is described for the MarshalJSON method.