cmx

package
v0.0.0-...-e0aed73 Latest Latest
Warning

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

Go to latest
Published: Oct 3, 2024 License: MIT Imports: 16 Imported by: 0

README

To run

docker build --tag cmx-remote-storage-adapter:1.0 .

docker run --publish 9201:9201 --name cmx-remote-storage-adapter cmx-remote-storage-adapter:1.0

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.

func NewClient

func NewClient(logger log.Logger, url string, timeout time.Duration, dimensions map[string]TagValue) *Client

NewClient creates a new Client.

func (Client) Name

func (c Client) Name() string

Name identifies the client as a CMX client.

func (*Client) Write

func (c *Client) Write(samples model.Samples) error

Write sends a batch of samples to CMX via its HTTP API.

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

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

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

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

UnmarshalJSON unmarshals JSON strings coming from CMX 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