label

package
v0.0.0-...-ce64a08 Latest Latest
Warning

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

Go to latest
Published: Aug 31, 2024 License: Apache-2.0 Imports: 12 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// AlertNameLabel is the label name for the alert name which called event name.
	AlertNameLabel = "alertname"
	// TenantLabel is the label name for the tenant id.
	TenantLabel = "tenant"
	// ToUserIDLabel is the label name for the user id. The alert belong to the user.It could be multiple users split by comma.
	ToUserIDLabel = "user"
	// SkipSubscribeLabel indicates if the alert is from Event Subs or skip Event Subs.
	SkipSubscribeLabel = "skipSub"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type Fingerprint

type Fingerprint uint64

func StringToFingerprint

func StringToFingerprint(s string) (Fingerprint, error)

StringToFingerprint parses a string representation of a Fingerprint.

func (*Fingerprint) Parse

func (f *Fingerprint) Parse(s string) error

func (Fingerprint) String

func (f Fingerprint) String() string

type LabelName

type LabelName string

func (LabelName) IsValid

func (ln LabelName) IsValid() bool

IsValid is true iff the label name matches the pattern of LabelNameRE. This method, however, does not use LabelNameRE for the check but a much faster hardcoded implementation.

func (*LabelName) UnmarshalJSON

func (ln *LabelName) UnmarshalJSON(b []byte) error

UnmarshalJSON implements the json.Unmarshaler interface.

type LabelSet

type LabelSet map[LabelName]string

A LabelSet is a collection of LabelName and LabelValue pairs. The LabelSet may be fully-qualified down to the point where it may resolve to a single Metric in the data store or not. All operations that occur within the realm of a LabelSet can emit a vector of Metric entities to which the LabelSet may match.

func (LabelSet) Before

func (ls LabelSet) Before(o LabelSet) bool

Before compares the metrics, using the following criteria:

If m has fewer labels than o, it is before o. If it has more, it is not.

If the number of labels is the same, the superset of all label names is sorted alphanumerically. The first differing label pair found in that order determines the outcome: If the label does not exist at all in m, then m is before o, and vice versa. Otherwise the label value is compared alphanumerically.

If m and o are equal, the method returns false.

func (LabelSet) Clone

func (ls LabelSet) Clone() LabelSet

Clone returns a copy of the label set.

func (LabelSet) Equal

func (ls LabelSet) Equal(o LabelSet) bool

Equal returns true iff both label sets have exactly the same key/value pairs.

func (LabelSet) Fingerprint

func (ls LabelSet) Fingerprint() Fingerprint

Fingerprint returns the LabelSet's fingerprint.

func (LabelSet) SortedKV

func (ls LabelSet) SortedKV() []gds.KeyValue

func (LabelSet) Validate

func (ls LabelSet) Validate() error

Validate checks whether all names and values in the label set are valid.

type MatchType

type MatchType int

MatchType is an enum for label matching types.

const (
	MatchEqual MatchType = iota
	MatchNotEqual
	MatchRegexp
	MatchNotRegexp
)

Possible MatchTypes.

func (MatchType) MarshalGQL

func (m MatchType) MarshalGQL(w io.Writer)

func (MatchType) MarshalYAML

func (m MatchType) MarshalYAML() (interface{}, error)

func (MatchType) String

func (m MatchType) String() string

func (*MatchType) UnmarshalGQL

func (m *MatchType) UnmarshalGQL(v interface{}) error

type Matcher

type Matcher struct {
	Type  MatchType `json:"type" yaml:"type"`
	Name  string    `json:"name" yaml:"name"`
	Value string    `json:"value" yaml:"value"`
	// contains filtered or unexported fields
}

func NewMatcher

func NewMatcher(t MatchType, n, v string) (*Matcher, error)

NewMatcher returns a matcher object.

func ParseMatcher

func ParseMatcher(s string) (_ *Matcher, err error)

ParseMatcher parses a matcher with a syntax inspired by PromQL and OpenMetrics. This syntax is convenient to describe filters and selectors in UIs and config files. To support the interactive nature of the use cases, the parser is in various aspects fairly tolerant.

The syntax of a matcher consists of three tokens: (1) A valid Prometheus label name. (2) One of '=', '!=', '=~', or '!~', with the same meaning as known from PromQL selectors. (3) A UTF-8 string, which may be enclosed in double quotes. Before or after each token, there may be any amount of whitespace, which will be discarded. The 3rd token may be the empty string. Within the 3rd token, OpenMetrics escaping rules apply: '\"' for a double-quote, '\n' for a line feed, '\\' for a literal backslash. Unescaped '"' must not occur inside the 3rd token (only as the 1st or last character). However, literal line feed characters are tolerated, as are single '\' characters not followed by '\', 'n', or '"'. They act as a literal backslash in that case.

func ParseMatchers

func ParseMatchers(s string) ([]*Matcher, error)

ParseMatchers parses a comma-separated list of Matchers. A leading '{' and/or a trailing '}' is optional and will be trimmed before further parsing. Individual Matchers are separated by commas outside of quoted parts of the input string. Those commas may be surrounded by whitespace. Parts of the string inside unescaped double quotes ('"…"') are considered quoted (and commas don't act as separators there). If double quotes are escaped with a single backslash ('\"'), they are ignored for the purpose of identifying quoted parts of the input string. If the input string, after trimming the optional trailing '}', ends with a comma, followed by optional whitespace, this comma and whitespace will be trimmed.

Examples for valid input strings:

{foo = "bar", dings != "bums", }
foo=bar,dings!=bums
foo=bar, dings!=bums
{quote="She said: \"Hi, ladies! That's gender-neutral…\""}
statuscode=~"5.."

See ParseMatcher for details on how an individual Matcher is parsed.

func (*Matcher) Matches

func (m *Matcher) Matches(s string) bool

Matches returns whether the matcher matches the given string value.

func (*Matcher) String

func (m *Matcher) String() string

func (*Matcher) UnmarshalJSON

func (m *Matcher) UnmarshalJSON(data []byte) error

func (*Matcher) UnmarshalText

func (m *Matcher) UnmarshalText(in []byte) error

type Matchers

type Matchers []*Matcher

Matchers is a slice of Matchers that is sortable, implements Stringer, and provides a Matches method to match a LabelSet against all Matchers in the slice. Note that some users of Matchers might require it to be sorted.

func (Matchers) Len

func (ms Matchers) Len() int

func (Matchers) Less

func (ms Matchers) Less(i, j int) bool

func (Matchers) MarshalJSON

func (m Matchers) MarshalJSON() ([]byte, error)

MarshalJSON implements the json.Marshaler interface for Matchers.

func (Matchers) Matches

func (ms Matchers) Matches(lset LabelSet) bool

Matches checks whether all matchers are fulfilled against the given label set.

func (Matchers) String

func (ms Matchers) String() string

func (Matchers) Swap

func (ms Matchers) Swap(i, j int)

func (*Matchers) UnmarshalJSON

func (m *Matchers) UnmarshalJSON(data []byte) error

UnmarshalJSON implements the json.Unmarshaler interface for Matchers.

Jump to

Keyboard shortcuts

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