v1

package
v0.51.2 Latest Latest
Warning

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

Go to latest
Published: Apr 10, 2024 License: Apache-2.0 Imports: 41 Imported by: 195

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// MinTime is the default timestamp used for the begin of optional time ranges.
	// Exposed to let downstream projects to reference it.
	MinTime = time.Unix(math.MinInt64/1000+62135596801, 0).UTC()

	// MaxTime is the default timestamp used for the end of optional time ranges.
	// Exposed to let downstream projects to reference it.
	MaxTime = time.Unix(math.MaxInt64/1000-62135596801, 999999999).UTC()
)
View Source
var LocalhostRepresentations = []string{"127.0.0.1", "localhost", "::1"}

Functions

This section is empty.

Types

type API

type API struct {
	Queryable         storage.SampleAndChunkQueryable
	QueryEngine       QueryEngine
	ExemplarQueryable storage.ExemplarQueryable

	CORSOrigin *regexp.Regexp
	// contains filtered or unexported fields
}

API can register a set of endpoints in a router and handle them using the provided storage and query engine.

func NewAPI

func NewAPI(
	qe QueryEngine,
	q storage.SampleAndChunkQueryable,
	ap storage.Appendable,
	eq storage.ExemplarQueryable,
	spsr func(context.Context) ScrapePoolsRetriever,
	tr func(context.Context) TargetRetriever,
	ar func(context.Context) AlertmanagerRetriever,
	configFunc func() config.Config,
	flagsMap map[string]string,
	globalURLOptions GlobalURLOptions,
	readyFunc func(http.HandlerFunc) http.HandlerFunc,
	db TSDBAdminStats,
	dbDir string,
	enableAdmin bool,
	logger log.Logger,
	rr func(context.Context) RulesRetriever,
	remoteReadSampleLimit int,
	remoteReadConcurrencyLimit int,
	remoteReadMaxBytesInFrame int,
	isAgent bool,
	corsOrigin *regexp.Regexp,
	runtimeInfo func() (RuntimeInfo, error),
	buildInfo *PrometheusVersion,
	gatherer prometheus.Gatherer,
	registerer prometheus.Registerer,
	statsRenderer StatsRenderer,
	rwEnabled bool,
	otlpEnabled bool,
) *API

NewAPI returns an initialized API type.

func (*API) ClearCodecs added in v0.46.0

func (api *API) ClearCodecs()

ClearCodecs removes all available codecs from this API, including the default codec installed by NewAPI.

func (*API) InstallCodec added in v0.46.0

func (api *API) InstallCodec(codec Codec)

InstallCodec adds codec to this API's available codecs. Codecs installed first take precedence over codecs installed later when evaluating wildcards in Accept headers. The first installed codec is used as a fallback when the Accept header cannot be satisfied or if there is no Accept header.

func (*API) Register

func (api *API) Register(r *route.Router)

Register the API's endpoints in the given router.

type Alert

type Alert struct {
	Labels          labels.Labels `json:"labels"`
	Annotations     labels.Labels `json:"annotations"`
	State           string        `json:"state"`
	ActiveAt        *time.Time    `json:"activeAt,omitempty"`
	KeepFiringSince *time.Time    `json:"keepFiringSince,omitempty"`
	Value           string        `json:"value"`
}

Alert has info for an alert.

type AlertDiscovery

type AlertDiscovery struct {
	Alerts []*Alert `json:"alerts"`
}

AlertDiscovery has info for all active alerts.

type AlertingRule

type AlertingRule struct {
	// State can be "pending", "firing", "inactive".
	State          string           `json:"state"`
	Name           string           `json:"name"`
	Query          string           `json:"query"`
	Duration       float64          `json:"duration"`
	KeepFiringFor  float64          `json:"keepFiringFor"`
	Labels         labels.Labels    `json:"labels"`
	Annotations    labels.Labels    `json:"annotations"`
	Alerts         []*Alert         `json:"alerts"`
	Health         rules.RuleHealth `json:"health"`
	LastError      string           `json:"lastError,omitempty"`
	EvaluationTime float64          `json:"evaluationTime"`
	LastEvaluation time.Time        `json:"lastEvaluation"`
	// Type of an alertingRule is always "alerting".
	Type string `json:"type"`
}

type AlertmanagerDiscovery

type AlertmanagerDiscovery struct {
	ActiveAlertmanagers  []*AlertmanagerTarget `json:"activeAlertmanagers"`
	DroppedAlertmanagers []*AlertmanagerTarget `json:"droppedAlertmanagers"`
}

AlertmanagerDiscovery has all the active Alertmanagers.

type AlertmanagerRetriever

type AlertmanagerRetriever interface {
	Alertmanagers() []*url.URL
	DroppedAlertmanagers() []*url.URL
}

AlertmanagerRetriever provides a list of all/dropped AlertManager URLs.

type AlertmanagerTarget

type AlertmanagerTarget struct {
	URL string `json:"url"`
}

AlertmanagerTarget has info on one AM.

type Codec added in v0.46.0

type Codec interface {
	// ContentType returns the MIME time that this Codec emits.
	ContentType() MIMEType

	// CanEncode determines if this Codec can encode resp.
	CanEncode(resp *Response) bool

	// Encode encodes resp, ready for transmission to an API consumer.
	Encode(resp *Response) ([]byte, error)
}

A Codec performs encoding of API responses.

type DroppedTarget

type DroppedTarget struct {
	// Labels before any processing.
	DiscoveredLabels labels.Labels `json:"discoveredLabels"`
}

DroppedTarget has the information for one target that was dropped during relabelling.

type GlobalURLOptions

type GlobalURLOptions struct {
	ListenAddress string
	Host          string
	Scheme        string
}

GlobalURLOptions contains fields used for deriving the global URL for local targets.

type HeadStats

type HeadStats struct {
	NumSeries     uint64 `json:"numSeries"`
	NumLabelPairs int    `json:"numLabelPairs"`
	ChunkCount    int64  `json:"chunkCount"`
	MinTime       int64  `json:"minTime"`
	MaxTime       int64  `json:"maxTime"`
}

HeadStats has information about the TSDB head.

type JSONCodec added in v0.46.0

type JSONCodec struct{}

JSONCodec is a Codec that encodes API responses as JSON.

func (JSONCodec) CanEncode added in v0.46.0

func (j JSONCodec) CanEncode(_ *Response) bool

func (JSONCodec) ContentType added in v0.46.0

func (j JSONCodec) ContentType() MIMEType

func (JSONCodec) Encode added in v0.46.0

func (j JSONCodec) Encode(resp *Response) ([]byte, error)

type MIMEType added in v0.46.0

type MIMEType struct {
	Type    string
	SubType string
}

func (MIMEType) Satisfies added in v0.46.0

func (m MIMEType) Satisfies(accept goautoneg.Accept) bool

func (MIMEType) String added in v0.46.0

func (m MIMEType) String() string

type PrometheusVersion

type PrometheusVersion struct {
	Version   string `json:"version"`
	Revision  string `json:"revision"`
	Branch    string `json:"branch"`
	BuildUser string `json:"buildUser"`
	BuildDate string `json:"buildDate"`
	GoVersion string `json:"goVersion"`
}

PrometheusVersion contains build information about Prometheus.

type QueryData added in v0.46.0

type QueryData struct {
	ResultType parser.ValueType `json:"resultType"`
	Result     parser.Value     `json:"result"`
	Stats      stats.QueryStats `json:"stats,omitempty"`
}

type QueryEngine

type QueryEngine interface {
	SetQueryLogger(l promql.QueryLogger)
	NewInstantQuery(ctx context.Context, q storage.Queryable, opts promql.QueryOpts, qs string, ts time.Time) (promql.Query, error)
	NewRangeQuery(ctx context.Context, q storage.Queryable, opts promql.QueryOpts, qs string, start, end time.Time, interval time.Duration) (promql.Query, error)
}

QueryEngine defines the interface for the *promql.Engine, so it can be replaced, wrapped or mocked.

type QueryOpts added in v0.46.0

type QueryOpts interface {
	EnablePerStepStats() bool
	LookbackDelta() time.Duration
}

type RecordingRule

type RecordingRule struct {
	Name           string           `json:"name"`
	Query          string           `json:"query"`
	Labels         labels.Labels    `json:"labels,omitempty"`
	Health         rules.RuleHealth `json:"health"`
	LastError      string           `json:"lastError,omitempty"`
	EvaluationTime float64          `json:"evaluationTime"`
	LastEvaluation time.Time        `json:"lastEvaluation"`
	// Type of a recordingRule is always "recording".
	Type string `json:"type"`
}

type Response added in v0.46.0

type Response struct {
	Status    status      `json:"status"`
	Data      interface{} `json:"data,omitempty"`
	ErrorType errorType   `json:"errorType,omitempty"`
	Error     string      `json:"error,omitempty"`
	Warnings  []string    `json:"warnings,omitempty"`
}

Response contains a response to a HTTP API request.

type Rule

type Rule interface{}

type RuleDiscovery

type RuleDiscovery struct {
	RuleGroups []*RuleGroup `json:"groups"`
}

RuleDiscovery has info for all rules.

type RuleGroup

type RuleGroup struct {
	Name string `json:"name"`
	File string `json:"file"`
	// In order to preserve rule ordering, while exposing type (alerting or recording)
	// specific properties, both alerting and recording rules are exposed in the
	// same array.
	Rules          []Rule    `json:"rules"`
	Interval       float64   `json:"interval"`
	Limit          int       `json:"limit"`
	EvaluationTime float64   `json:"evaluationTime"`
	LastEvaluation time.Time `json:"lastEvaluation"`
}

RuleGroup has info for rules which are part of a group.

type RulesRetriever

type RulesRetriever interface {
	RuleGroups() []*rules.Group
	AlertingRules() []*rules.AlertingRule
}

RulesRetriever provides a list of active rules and alerts.

type RuntimeInfo

type RuntimeInfo struct {
	StartTime           time.Time `json:"startTime"`
	CWD                 string    `json:"CWD"`
	ReloadConfigSuccess bool      `json:"reloadConfigSuccess"`
	LastConfigTime      time.Time `json:"lastConfigTime"`
	CorruptionCount     int64     `json:"corruptionCount"`
	GoroutineCount      int       `json:"goroutineCount"`
	GOMAXPROCS          int       `json:"GOMAXPROCS"`
	GOMEMLIMIT          int64     `json:"GOMEMLIMIT"`
	GOGC                string    `json:"GOGC"`
	GODEBUG             string    `json:"GODEBUG"`
	StorageRetention    string    `json:"storageRetention"`
}

RuntimeInfo contains runtime information about Prometheus.

type ScrapePoolsDiscovery added in v0.42.0

type ScrapePoolsDiscovery struct {
	ScrapePools []string `json:"scrapePools"`
}

type ScrapePoolsRetriever added in v0.42.0

type ScrapePoolsRetriever interface {
	ScrapePools() []string
}

ScrapePoolsRetriever provide the list of all scrape pools.

type TSDBAdminStats

type TSDBAdminStats interface {
	CleanTombstones() error
	Delete(ctx context.Context, mint, maxt int64, ms ...*labels.Matcher) error
	Snapshot(dir string, withHead bool) error
	Stats(statsByLabelName string, limit int) (*tsdb.Stats, error)
	WALReplayStatus() (tsdb.WALReplayStatus, error)
}

TSDBAdminStats defines the tsdb interfaces used by the v1 API for admin operations as well as statistics.

type TSDBStat added in v0.37.0

type TSDBStat struct {
	Name  string `json:"name"`
	Value uint64 `json:"value"`
}

TSDBStat holds the information about individual cardinality.

func TSDBStatsFromIndexStats added in v0.37.0

func TSDBStatsFromIndexStats(stats []index.Stat) []TSDBStat

TSDBStatsFromIndexStats converts a index.Stat slice to a TSDBStat slice.

type TSDBStatus added in v0.37.0

type TSDBStatus struct {
	HeadStats                   HeadStats  `json:"headStats"`
	SeriesCountByMetricName     []TSDBStat `json:"seriesCountByMetricName"`
	LabelValueCountByLabelName  []TSDBStat `json:"labelValueCountByLabelName"`
	MemoryInBytesByLabelName    []TSDBStat `json:"memoryInBytesByLabelName"`
	SeriesCountByLabelValuePair []TSDBStat `json:"seriesCountByLabelValuePair"`
}

TSDBStatus has information of cardinality statistics from postings.

type Target

type Target struct {
	// Labels before any processing.
	DiscoveredLabels labels.Labels `json:"discoveredLabels"`
	// Any labels that are added to this target and its metrics.
	Labels labels.Labels `json:"labels"`

	ScrapePool string `json:"scrapePool"`
	ScrapeURL  string `json:"scrapeUrl"`
	GlobalURL  string `json:"globalUrl"`

	LastError          string              `json:"lastError"`
	LastScrape         time.Time           `json:"lastScrape"`
	LastScrapeDuration float64             `json:"lastScrapeDuration"`
	Health             scrape.TargetHealth `json:"health"`

	ScrapeInterval string `json:"scrapeInterval"`
	ScrapeTimeout  string `json:"scrapeTimeout"`
}

Target has the information for one target.

type TargetDiscovery

type TargetDiscovery struct {
	ActiveTargets       []*Target        `json:"activeTargets"`
	DroppedTargets      []*DroppedTarget `json:"droppedTargets"`
	DroppedTargetCounts map[string]int   `json:"droppedTargetCounts"`
}

TargetDiscovery has all the active targets.

type TargetRetriever

type TargetRetriever interface {
	TargetsActive() map[string][]*scrape.Target
	TargetsDropped() map[string][]*scrape.Target
	TargetsDroppedCounts() map[string]int
}

TargetRetriever provides the list of active/dropped targets to scrape or not.

Jump to

Keyboard shortcuts

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