opentsdb

package
v0.0.0-...-c1b23f5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 3, 2017 License: Apache-2.0 Imports: 17 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewOutput

func NewOutput(config model.OutputConfig) (*impl, error)

Types

type StoreSamplesRequest

type StoreSamplesRequest struct {
	Metric    TagValue            `json:"metric"`
	Timestamp uint64              `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 string

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

func (tv TagValue) MarshalJSON() ([]byte, error)

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

func (tv *TagValue) UnmarshalJSON(json []byte) error

UnmarshalJSON unmarshals JSON strings coming from OpenTSDB into Go strings by applying the inverse of what is described for the MarshalJSON method.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL