util

package
v1.18.1 Latest Latest
Warning

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

Go to latest
Published: Oct 15, 2024 License: Apache-2.0 Imports: 51 Imported by: 181

Documentation

Index

Constants

View Source
const (
	// Sharding strategies.
	ShardingStrategyDefault = "default"
	ShardingStrategyShuffle = "shuffle-sharding"
)
View Source
const (
	// CheckContextEveryNIterations is used in some tight loops to check if the context is done.
	CheckContextEveryNIterations = 128
)
View Source
const GlobalMarkersDir = "__markers__"

Variables

View Source
var MAX_STRING = string([]byte{0xff})

Functions

func AddSourceIPsToIncomingContext added in v1.4.0

func AddSourceIPsToIncomingContext(ctx context.Context, source string) context.Context

AddSourceIPsToIncomingContext adds the given source to the GRPC context

func AddSourceIPsToOutgoingContext added in v1.4.0

func AddSourceIPsToOutgoingContext(ctx context.Context, source string) context.Context

AddSourceIPsToOutgoingContext adds the given source to the GRPC context

func DeleteMatchingLabels added in v1.8.0

func DeleteMatchingLabels(c CollectorVec, filter map[string]string) error

DeleteMatchingLabels removes metric with labels matching the filter.

func DiffConfig added in v1.8.0

func DiffConfig(defaultConfig, actualConfig map[interface{}]interface{}) (map[interface{}]interface{}, error)

DiffConfig utility function that returns the diff between two config map objects

func DurationWithJitter added in v1.2.0

func DurationWithJitter(input time.Duration, variancePerc float64) time.Duration

DurationWithJitter returns random duration from "input - input*variance" to "input + input*variance" interval.

func DurationWithPositiveJitter added in v1.8.0

func DurationWithPositiveJitter(input time.Duration, variancePerc float64) time.Duration

DurationWithPositiveJitter returns random duration from "input" to "input + input*variance" interval.

func DynamicShardSize added in v1.16.0

func DynamicShardSize(value float64, numInstances int) int

DynamicShardSize returns the shard size as a percentage of numInstances if the value is < 1. If the value is >= 1, the value is rounded and returned.

func Event

func Event() log.Logger

Event is the log-like API for event sampling

func FindMinMaxTime added in v1.17.0

func FindMinMaxTime(r *http.Request, expr parser.Expr, lookbackDelta time.Duration, now time.Time) (int64, int64)

FindMinMaxTime returns the time in milliseconds of the earliest and latest point in time the statement will try to process. This takes into account offsets, @ modifiers, and range selectors. If the expression does not select series, then FindMinMaxTime returns (0, 0).

func FormatMillisToSeconds added in v1.17.0

func FormatMillisToSeconds(ms int64) string

func FormatTimeMillis added in v1.6.0

func FormatTimeMillis(ms int64) string

FormatTimeMillis returns a human readable version of the input time (in milliseconds).

func FormatTimeModel added in v1.6.0

func FormatTimeModel(t model.Time) string

FormatTimeModel returns a human readable version of the input time.

func FromLabelPairsToLabels added in v1.7.0

func FromLabelPairsToLabels(pairs []*dto.LabelPair) labels.Labels

FromLabelPairsToLabels converts dto.LabelPair into labels.Labels.

func GenerateChunk added in v1.18.0

func GenerateChunk(t require.TestingT, step time.Duration, from model.Time, points int, enc promchunk.Encoding, additionalLabels ...labels.Label) chunk.Chunk

func GenerateRandomStrings added in v1.17.0

func GenerateRandomStrings() []string

func GetFirstAddressOf

func GetFirstAddressOf(names []string) (string, error)

GetFirstAddressOf returns the first IPv4 address of the supplied interface names, omitting any 169.254.x.x automatic private IPs if possible.

func GetLabels added in v1.8.0

func GetLabels(c prometheus.Collector, filter map[string]string) ([]labels.Labels, error)

GetLabels returns list of label combinations used by this collector at the time of call. This can be used to find and delete unused metrics.

func GetSourceIPsFromIncomingCtx added in v1.4.0

func GetSourceIPsFromIncomingCtx(ctx context.Context) string

GetSourceIPsFromIncomingCtx extracts the source field from the GRPC context

func GetSourceIPsFromOutgoingCtx added in v1.4.0

func GetSourceIPsFromOutgoingCtx(ctx context.Context) string

GetSourceIPsFromOutgoingCtx extracts the source field from the GRPC context

func GetSumOfHistogramSampleCount added in v1.7.0

func GetSumOfHistogramSampleCount(families []*dto.MetricFamily, metricName string, matchers labels.Selector) uint64

GetSumOfHistogramSampleCount returns the sum of samples count of histograms matching the provided metric name and optional label matchers. Returns 0 if no metric matches.

func HashFP

func HashFP(fp model.Fingerprint) uint32

HashFP simply moves entropy from the most significant 48 bits of the fingerprint into the least significant 16 bits (by XORing) so that a simple MOD on the result can be used to pick a mutex while still making use of changes in more significant bits of the fingerprint. (The fast fingerprinting function we use is prone to only change a few bits for similar metrics. We really want to make use of every change in the fingerprint to vary mutex selection.)

func InitEvents

func InitEvents(freq int)

InitEvents initializes event sampling, with the given frequency. Zero=off.

func IsRequestBodyTooLarge added in v1.8.0

func IsRequestBodyTooLarge(err error) bool

IsRequestBodyTooLarge returns true if the error is "http: request body too large".

func LabelMatchersToString added in v1.10.0

func LabelMatchersToString(matchers []*labels.Matcher) string

LabelMatchersToString returns a string representing the input label matchers.

func LabelsToMetric

func LabelsToMetric(ls labels.Labels) model.Metric

LabelsToMetric converts a Labels to Metric Don't do this on any performance sensitive paths.

func MergeSlicesParallel added in v1.17.0

func MergeSlicesParallel(ctx context.Context, parallelism int, a ...[]string) ([]string, error)

MergeSlicesParallel merge sorted slices in parallel using the MergeSortedSlices function

func MergeSortedSlices added in v1.17.0

func MergeSortedSlices(ctx context.Context, a ...[]string) ([]string, error)

MergeSortedSlices merges a set of sorted string slices into a single ones while removing all duplicates.

func NewDNSWatcher added in v1.6.0

func NewDNSWatcher(address string, dnsLookupPeriod time.Duration, notifications DNSNotifications) (services.Service, error)

NewDNSWatcher creates a new DNS watcher and returns a service that is wrapping it.

func NewDisableableTicker added in v1.11.0

func NewDisableableTicker(interval time.Duration) (func(), <-chan time.Time)

NewDisableableTicker essentially wraps NewTicker but allows the ticker to be disabled by passing zero duration as the interval. Returns a function for stopping the ticker, and the ticker channel.

func ParseDurationMs added in v1.18.0

func ParseDurationMs(s string) (int64, error)

func ParseProtoReader

func ParseProtoReader(ctx context.Context, reader io.Reader, expectedSize, maxSize int, req proto.Message, compression CompressionType) error

ParseProtoReader parses a compressed proto from an io.Reader.

func ParseTime added in v1.0.0

func ParseTime(s string) (int64, error)

ParseTime parses the string into an int64, milliseconds since epoch.

func ParseTimeParam added in v1.17.0

func ParseTimeParam(r *http.Request, paramName string, defaultValue int64) (int64, error)

ParseTimeParam parses the time request parameter into an int64, milliseconds since epoch.

func PositiveJitter added in v1.18.0

func PositiveJitter(input time.Duration, variancePerc float64) time.Duration

PositiveJitter returns random duration from "0" to "input*variance" interval.

func RenderHTTPResponse added in v1.2.0

func RenderHTTPResponse(w http.ResponseWriter, v interface{}, t *template.Template, r *http.Request)

RenderHTTPResponse either responds with json or a rendered html page using the passed in template by checking the Accepts header

func SerializeProtoResponse

func SerializeProtoResponse(w http.ResponseWriter, resp proto.Message, compression CompressionType) error

SerializeProtoResponse serializes a protobuf response into an HTTP response.

func ShuffleShardExpectedInstances added in v1.5.0

func ShuffleShardExpectedInstances(shardSize, numZones int) int

ShuffleShardExpectedInstances returns the total number of instances that should be selected for a given tenant. If zone-aware replication is disabled, the input numZones should be 1.

func ShuffleShardExpectedInstancesPerZone added in v1.5.0

func ShuffleShardExpectedInstancesPerZone(shardSize, numZones int) int

ShuffleShardExpectedInstancesPerZone returns the number of instances that should be selected for each zone when zone-aware replication is enabled. The algorithm expects the shard size to be divisible by the number of zones, in order to have nodes balanced across zones. If it's not, we do round up.

func ShuffleShardSeed added in v1.5.0

func ShuffleShardSeed(identifier, zone string) int64

ShuffleShardSeed returns seed for random number generator, computed from provided identifier.

func SplitFiltersAndMatchers

func SplitFiltersAndMatchers(allMatchers []*labels.Matcher) (filters, matchers []*labels.Matcher)

SplitFiltersAndMatchers splits empty matchers off, which are treated as filters, see #220

func StreamWriteYAMLResponse added in v1.9.0

func StreamWriteYAMLResponse(w http.ResponseWriter, iter chan interface{}, logger log.Logger)

StreamWriteYAMLResponse stream writes data as http response using yaml v2 library

func StreamWriteYAMLV3Response added in v1.14.0

func StreamWriteYAMLV3Response(w http.ResponseWriter, iter chan interface{}, logger log.Logger)

StreamWriteYAMLV3Response stream writes data as http response using yaml v3 library

func StringsClone added in v1.13.0

func StringsClone(s string) string

StringsClone returns a copy input s see: https://github.com/golang/go/blob/master/src/strings/clone.go

func StringsContain added in v1.0.0

func StringsContain(values []string, search string) bool

StringsContain returns true if the search value is within the list of input values.

func StringsMap added in v1.7.0

func StringsMap(values []string) map[string]bool

StringsMap returns a map where keys are input values.

func TimeFromMillis added in v1.2.0

func TimeFromMillis(ms int64) time.Time

TimeFromMillis is a helper to turn milliseconds -> time.Time

func TimeToMillis added in v1.2.0

func TimeToMillis(t time.Time) int64

func WriteHTMLResponse added in v1.10.0

func WriteHTMLResponse(w http.ResponseWriter, message string)

Sends message as text/html response with 200 status code.

func WriteJSONResponse

func WriteJSONResponse(w http.ResponseWriter, v interface{})

WriteJSONResponse writes some JSON as a HTTP response.

func WriteTextResponse added in v1.7.0

func WriteTextResponse(w http.ResponseWriter, message string)

Sends message as text/plain response with 200 status code.

func WriteYAMLResponse added in v1.7.0

func WriteYAMLResponse(w http.ResponseWriter, v interface{})

WriteYAMLResponse writes some YAML as a HTTP response.

func YAMLMarshalUnmarshal added in v1.8.0

func YAMLMarshalUnmarshal(in interface{}) (map[interface{}]interface{}, error)

YAMLMarshalUnmarshal utility function that converts a YAML interface in a map doing marshal and unmarshal of the parameter

func YoloBuf added in v1.5.0

func YoloBuf(s string) []byte

Types

type ActiveUsers added in v1.8.0

type ActiveUsers struct {
	// contains filtered or unexported fields
}

ActiveUsers keeps track of latest user's activity timestamp, and allows purging users that are no longer active.

func NewActiveUsers added in v1.8.0

func NewActiveUsers() *ActiveUsers

func (*ActiveUsers) PurgeInactiveUsers added in v1.8.0

func (m *ActiveUsers) PurgeInactiveUsers(deadline int64) []string

PurgeInactiveUsers removes users that were last active before given deadline, and returns removed users.

func (*ActiveUsers) UpdateUserTimestamp added in v1.8.0

func (m *ActiveUsers) UpdateUserTimestamp(userID string, ts int64)

type ActiveUsersCleanupService added in v1.8.0

type ActiveUsersCleanupService struct {
	services.Service
	// contains filtered or unexported fields
}

ActiveUsersCleanupService tracks active users, and periodically purges inactive ones while running.

func NewActiveUsersCleanupService added in v1.8.0

func NewActiveUsersCleanupService(cleanupInterval, inactiveTimeout time.Duration, cleanupFn func(string)) *ActiveUsersCleanupService

func NewActiveUsersCleanupWithDefaultValues added in v1.8.0

func NewActiveUsersCleanupWithDefaultValues(cleanupFn func(string)) *ActiveUsersCleanupService

func (*ActiveUsersCleanupService) UpdateUserTimestamp added in v1.8.0

func (s *ActiveUsersCleanupService) UpdateUserTimestamp(user string, now time.Time)

type AllowedTenants added in v1.9.0

type AllowedTenants struct {
	// contains filtered or unexported fields
}

AllowedTenants that can answer whether tenant is allowed or not based on configuration. Default value (nil) allows all tenants.

func NewAllowedTenants added in v1.9.0

func NewAllowedTenants(enabled []string, disabled []string) *AllowedTenants

NewAllowedTenants builds new allowed tenants based on enabled and disabled tenants. If there are any enabled tenants, then only those tenants are allowed. If there are any disabled tenants, then tenant from that list, that would normally be allowed, is disabled instead.

func (*AllowedTenants) IsAllowed added in v1.9.0

func (a *AllowedTenants) IsAllowed(tenantID string) bool

type BasicAuth added in v1.8.0

type BasicAuth struct {
	Username string `yaml:"basic_auth_username"`
	Password string `yaml:"basic_auth_password"`
}

BasicAuth configures basic authentication for HTTP clients.

func (BasicAuth) IsEnabled added in v1.8.0

func (b BasicAuth) IsEnabled() bool

IsEnabled returns false if basic authentication isn't enabled.

func (*BasicAuth) RegisterFlagsWithPrefix added in v1.8.0

func (b *BasicAuth) RegisterFlagsWithPrefix(prefix string, f *flag.FlagSet)

type CollectorVec added in v1.8.0

type CollectorVec interface {
	prometheus.Collector
	Delete(labels prometheus.Labels) bool
}

CollectorVec is a collector that can delete metrics by labels. Implemented by *prometheus.MetricVec (used by CounterVec, GaugeVec, SummaryVec, and HistogramVec).

type CompressionType

type CompressionType int

CompressionType for encoding and decoding requests and responses.

const (
	NoCompression CompressionType = iota
	RawSnappy
)

Values for CompressionType

type DNSNotifications added in v1.6.0

type DNSNotifications interface {
	// New address has been discovered by DNS watcher for supplied hostname.
	AddressAdded(address string)

	// Previously-discovered address is no longer resolved for the hostname.
	AddressRemoved(address string)
}

Notifications about address resolution. All notifications are sent on the same goroutine.

type HistogramData added in v0.7.0

type HistogramData struct {
	// contains filtered or unexported fields
}

HistogramData keeps data required to build histogram Metric.

func (*HistogramData) AddHistogram added in v0.7.0

func (d *HistogramData) AddHistogram(histo *dto.Histogram)

AddHistogram adds histogram from gathered metrics to this histogram data. Do not call this function after Metric() has been invoked, because histogram created by Metric is using the buckets map (doesn't make a copy), and it's not allowed to change the buckets after they've been passed to a prometheus.Metric.

func (*HistogramData) AddHistogramData added in v0.7.0

func (d *HistogramData) AddHistogramData(histo HistogramData)

AddHistogramData merges another histogram data into this one. Do not call this function after Metric() has been invoked, because histogram created by Metric is using the buckets map (doesn't make a copy), and it's not allowed to change the buckets after they've been passed to a prometheus.Metric.

func (*HistogramData) Copy added in v1.11.0

func (d *HistogramData) Copy() *HistogramData

Copy returns a copy of this histogram data.

func (*HistogramData) Metric added in v0.7.0

func (d *HistogramData) Metric(desc *prometheus.Desc, labelValues ...string) prometheus.Metric

Metric returns prometheus metric from this histogram data.

Note that returned metric shares bucket with this HistogramData, so avoid doing more modifications to this HistogramData after calling Metric.

type HistogramDataCollector added in v0.7.0

type HistogramDataCollector struct {
	// contains filtered or unexported fields
}

HistogramDataCollector combines histogram data, with prometheus descriptor. It can be registered into prometheus to report histogram with stored data. Data can be updated via Add method.

func NewHistogramDataCollector added in v0.7.0

func NewHistogramDataCollector(desc *prometheus.Desc) *HistogramDataCollector

NewHistogramDataCollector creates new histogram data collector.

func (*HistogramDataCollector) Add added in v0.7.0

func (*HistogramDataCollector) Collect added in v0.7.0

func (h *HistogramDataCollector) Collect(out chan<- prometheus.Metric)

func (*HistogramDataCollector) Describe added in v0.7.0

func (h *HistogramDataCollector) Describe(out chan<- *prometheus.Desc)

type Interner added in v1.18.0

type Interner interface {
	Intern(s string) string
	Release(s string)
}

func NewInterner added in v1.18.0

func NewInterner() Interner

NewInterner returns a new Interner to be used to intern strings. Based on https://github.com/prometheus/prometheus/blob/726ed124e4468d0274ba89b0934a6cc8c975532d/storage/remote/intern.go#L51

type MergedMetricFamily added in v1.14.0

type MergedMetricFamily struct {
	// contains filtered or unexported fields
}

func (*MergedMetricFamily) CreateMetricFamily added in v1.14.0

func (m *MergedMetricFamily) CreateMetricFamily() *dto.MetricFamily

type Metric added in v1.14.0

type Metric struct {
	// contains filtered or unexported fields
}

type MetricFamiliesPerUser added in v0.6.0

type MetricFamiliesPerUser []struct {
	// contains filtered or unexported fields
}

MetricFamiliesPerUser is a collection of metrics gathered via calling Gatherer.Gather() method on different gatherers, one per user.

func (MetricFamiliesPerUser) GetSumOfCounters added in v1.1.0

func (d MetricFamiliesPerUser) GetSumOfCounters(counter string) float64

func (MetricFamiliesPerUser) GetSumOfGauges added in v1.1.0

func (d MetricFamiliesPerUser) GetSumOfGauges(gauge string) float64

func (MetricFamiliesPerUser) SendMaxOfGauges added in v0.7.0

func (d MetricFamiliesPerUser) SendMaxOfGauges(out chan<- prometheus.Metric, desc *prometheus.Desc, gauge string)

func (MetricFamiliesPerUser) SendMaxOfGaugesPerUser added in v1.6.0

func (d MetricFamiliesPerUser) SendMaxOfGaugesPerUser(out chan<- prometheus.Metric, desc *prometheus.Desc, gauge string)

func (MetricFamiliesPerUser) SendSumOfCounters added in v0.6.0

func (d MetricFamiliesPerUser) SendSumOfCounters(out chan<- prometheus.Metric, desc *prometheus.Desc, counter string)

func (MetricFamiliesPerUser) SendSumOfCountersPerUser added in v0.6.0

func (d MetricFamiliesPerUser) SendSumOfCountersPerUser(out chan<- prometheus.Metric, desc *prometheus.Desc, counter string)

func (MetricFamiliesPerUser) SendSumOfCountersPerUserWithLabels added in v1.3.0

func (d MetricFamiliesPerUser) SendSumOfCountersPerUserWithLabels(out chan<- prometheus.Metric, desc *prometheus.Desc, metric string, labelNames ...string)

SendSumOfCountersPerUserWithLabels provides metrics with the provided label names on a per-user basis. This function assumes that `user` is the first label on the provided metric Desc

func (MetricFamiliesPerUser) SendSumOfCountersWithLabels added in v0.6.0

func (d MetricFamiliesPerUser) SendSumOfCountersWithLabels(out chan<- prometheus.Metric, desc *prometheus.Desc, counter string, labelNames ...string)

func (MetricFamiliesPerUser) SendSumOfGauges added in v0.6.0

func (d MetricFamiliesPerUser) SendSumOfGauges(out chan<- prometheus.Metric, desc *prometheus.Desc, gauge string)

func (MetricFamiliesPerUser) SendSumOfGaugesPerUser added in v1.6.0

func (d MetricFamiliesPerUser) SendSumOfGaugesPerUser(out chan<- prometheus.Metric, desc *prometheus.Desc, gauge string)

func (MetricFamiliesPerUser) SendSumOfGaugesPerUserWithLabels added in v0.7.0

func (d MetricFamiliesPerUser) SendSumOfGaugesPerUserWithLabels(out chan<- prometheus.Metric, desc *prometheus.Desc, metric string, labelNames ...string)

SendSumOfGaugesPerUserWithLabels provides metrics with the provided label names on a per-user basis. This function assumes that `user` is the first label on the provided metric Desc

func (MetricFamiliesPerUser) SendSumOfGaugesWithLabels added in v0.6.0

func (d MetricFamiliesPerUser) SendSumOfGaugesWithLabels(out chan<- prometheus.Metric, desc *prometheus.Desc, gauge string, labelNames ...string)

func (MetricFamiliesPerUser) SendSumOfHistograms added in v0.6.0

func (d MetricFamiliesPerUser) SendSumOfHistograms(out chan<- prometheus.Metric, desc *prometheus.Desc, histogramName string)

func (MetricFamiliesPerUser) SendSumOfHistogramsWithLabels added in v1.0.0

func (d MetricFamiliesPerUser) SendSumOfHistogramsWithLabels(out chan<- prometheus.Metric, desc *prometheus.Desc, histogramName string, labelNames ...string)

func (MetricFamiliesPerUser) SendSumOfSummaries added in v0.6.0

func (d MetricFamiliesPerUser) SendSumOfSummaries(out chan<- prometheus.Metric, desc *prometheus.Desc, summaryName string)

func (MetricFamiliesPerUser) SendSumOfSummariesPerUser added in v1.3.0

func (d MetricFamiliesPerUser) SendSumOfSummariesPerUser(out chan<- prometheus.Metric, desc *prometheus.Desc, summaryName string)

func (MetricFamiliesPerUser) SendSumOfSummariesWithLabels added in v0.6.0

func (d MetricFamiliesPerUser) SendSumOfSummariesWithLabels(out chan<- prometheus.Metric, desc *prometheus.Desc, summaryName string, labelNames ...string)

type MetricFamilyMap added in v0.7.0

type MetricFamilyMap map[string]*dto.MetricFamily

MetricFamilyMap is a map of metric names to their family (metrics with same name, but different labels) Keeping map of metric name to its family makes it easier to do searches later.

func MergeMetricFamilies added in v1.14.0

func MergeMetricFamilies(metricFamilies []MetricFamilyMap) (MetricFamilyMap, error)

MergeMetricFamilies - Capable of merging summaries, histograms, and counters

func NewMetricFamilyMap added in v0.7.0

func NewMetricFamilyMap(metrics []*dto.MetricFamily) (MetricFamilyMap, error)

NewMetricFamilyMap sorts output from Gatherer.Gather method into a map. Gatherer.Gather specifies that there metric families are uniquely named, and we use that fact here. If they are not, this method returns error.

func (MetricFamilyMap) MaxGauges added in v0.7.0

func (mfm MetricFamilyMap) MaxGauges(name string) float64

func (MetricFamilyMap) SumCounters added in v0.7.0

func (mfm MetricFamilyMap) SumCounters(name string) float64

func (MetricFamilyMap) SumGauges added in v0.7.0

func (mfm MetricFamilyMap) SumGauges(name string) float64

func (MetricFamilyMap) SumHistograms added in v0.7.0

func (mfm MetricFamilyMap) SumHistograms(name string) HistogramData

func (MetricFamilyMap) SumHistogramsTo added in v0.7.0

func (mfm MetricFamilyMap) SumHistogramsTo(name string, output *HistogramData)

func (MetricFamilyMap) SumSummaries added in v0.7.0

func (mfm MetricFamilyMap) SumSummaries(name string) SummaryData

func (MetricFamilyMap) SumSummariesTo added in v0.7.0

func (mfm MetricFamilyMap) SumSummariesTo(name string, output *SummaryData)

type MetricMap added in v1.14.0

type MetricMap struct {
	// contains filtered or unexported fields
}

func NewMetricMap added in v1.14.0

func NewMetricMap() MetricMap

func (*MetricMap) AddOrSetMetric added in v1.14.0

func (m *MetricMap) AddOrSetMetric(metric *dto.Metric, mergeFn func(existing *dto.Metric, new *dto.Metric))

AddOrSetMetric - given a metric, see if there's another metric with the same labels. If not, add metric to list If yes, call mergeFn to merge the two metrics in-place, and updating existing metric

type PriorityOp added in v1.17.0

type PriorityOp interface {
	Priority() int64 // The larger the number the higher the priority.
}

PriorityOp is an operation on the priority queue.

type PriorityQueue

type PriorityQueue struct {
	// contains filtered or unexported fields
}

PriorityQueue is a priority queue.

func NewPriorityQueue

func NewPriorityQueue(lengthGauge prometheus.Gauge) *PriorityQueue

NewPriorityQueue makes a new priority queue.

func (*PriorityQueue) Close

func (pq *PriorityQueue) Close()

Close signals that the queue should be closed when it is empty. A closed queue will not accept new items.

func (*PriorityQueue) Dequeue

func (pq *PriorityQueue) Dequeue() PriorityOp

Dequeue will remove and return the op with the highest priority; block if queue is empty; returns nil if queue is closed.

func (*PriorityQueue) DiscardAndClose

func (pq *PriorityQueue) DiscardAndClose()

DiscardAndClose closes the queue and removes all the items from it.

func (*PriorityQueue) Enqueue

func (pq *PriorityQueue) Enqueue(op PriorityOp)

Enqueue adds an operation to the queue in priority order.

func (*PriorityQueue) Length

func (pq *PriorityQueue) Length() int

Length returns the length of the queue.

func (*PriorityQueue) Peek added in v1.17.0

func (pq *PriorityQueue) Peek() PriorityOp

Peek will return the op with the highest priority without removing it from the queue

type SlotInfoFunc added in v1.18.0

type SlotInfoFunc func() (int, int)

SlotInfoFunc returns the slot number and the total number of slots

type SlottedTicker added in v1.18.0

type SlottedTicker struct {
	C <-chan time.Time // The channel on which the ticks are delivered.
	// contains filtered or unexported fields
}

func NewSlottedTicker added in v1.18.0

func NewSlottedTicker(sf SlotInfoFunc, d time.Duration, slotJitter float64) *SlottedTicker

func (*SlottedTicker) Stop added in v1.18.0

func (t *SlottedTicker) Stop()

type StringListIter added in v1.17.0

type StringListIter struct {
	// contains filtered or unexported fields
}

func NewStringListIter added in v1.17.0

func NewStringListIter(s []string) *StringListIter

func (*StringListIter) At added in v1.17.0

func (s *StringListIter) At() string

func (*StringListIter) Next added in v1.17.0

func (s *StringListIter) Next() bool

type SummaryData added in v0.7.0

type SummaryData struct {
	// contains filtered or unexported fields
}

SummaryData keeps all data needed to create summary metric

func (*SummaryData) AddSummary added in v0.7.0

func (s *SummaryData) AddSummary(sum *dto.Summary)

func (*SummaryData) Metric added in v0.7.0

func (s *SummaryData) Metric(desc *prometheus.Desc, labelValues ...string) prometheus.Metric

type TokenBucket added in v1.18.0

type TokenBucket struct {
	// contains filtered or unexported fields
}

func NewTokenBucket added in v1.18.0

func NewTokenBucket(maxCapacity int64, remainingTokensMetric prometheus.Gauge) *TokenBucket

func (*TokenBucket) MaxCapacity added in v1.18.0

func (t *TokenBucket) MaxCapacity() int64

func (*TokenBucket) Retrieve added in v1.18.0

func (t *TokenBucket) Retrieve(amount int64) int64

Retrieve always deducts token, even if there is not enough remaining tokens.

type UserRegistries added in v1.6.0

type UserRegistries struct {
	// contains filtered or unexported fields
}

UserRegistries holds Prometheus registries for multiple users, guaranteeing multi-thread safety and stable ordering.

func NewUserRegistries added in v1.6.0

func NewUserRegistries() *UserRegistries

NewUserRegistries makes new UserRegistries.

func (*UserRegistries) AddUserRegistry added in v1.6.0

func (r *UserRegistries) AddUserRegistry(user string, reg *prometheus.Registry)

AddUserRegistry adds an user registry. If user already has a registry, previous registry is removed, but latest metric values are preserved in order to avoid counter resets.

func (*UserRegistries) BuildMetricFamiliesPerUser added in v1.6.0

func (r *UserRegistries) BuildMetricFamiliesPerUser() MetricFamiliesPerUser

func (*UserRegistries) Registries added in v1.6.0

func (r *UserRegistries) Registries() []UserRegistry

Registries returns a copy of the user registries list.

func (*UserRegistries) RemoveUserRegistry added in v1.6.0

func (r *UserRegistries) RemoveUserRegistry(user string, hard bool)

RemoveUserRegistry removes all Prometheus registries for a given user. If hard is true, registry is removed completely. If hard is false, latest registry values are preserved for future aggregations.

type UserRegistry added in v1.6.0

type UserRegistry struct {
	// contains filtered or unexported fields
}

UserRegistry holds a Prometheus registry associated to a specific user.

Directories

Path Synopsis
Package fakeauth provides middlewares that injects a fake userID, so the rest of the code can continue to be multitenant.
Package fakeauth provides middlewares that injects a fake userID, so the rest of the code can continue to be multitenant.
grpcencoding

Jump to

Keyboard shortcuts

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