prometheus

package
v1.1.3 Latest Latest
Warning

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

Go to latest
Published: Jul 22, 2026 License: Apache-2.0 Imports: 14 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// MetricTypeCPUUsage is the metric type for CPU usage alerts
	MetricTypeCPUUsage = "cpu_usage"
	// MetricTypeMemoryUsage is the metric type for memory usage alerts
	MetricTypeMemoryUsage = "memory_usage"
)

Variables

This section is empty.

Functions

func Build50thPercentileHTTPRequestLatencyQuery added in v0.5.0

func Build50thPercentileHTTPRequestLatencyQuery(labelFilter string) string

Build50thPercentileHTTPRequestLatencyQuery builds a PromQL query for 50th percentile HTTP request latency

func Build50thPercentileHTTPRequestLatencyQueryV1 added in v0.17.0

func Build50thPercentileHTTPRequestLatencyQueryV1(labelFilter, sumByClause, groupLeftClause string) string

Build50thPercentileHTTPRequestLatencyQueryV1 builds a PromQL query for 50th percentile HTTP request latency, dynamically scoped by the provided label clauses. Unlike the legacy variant, this correctly includes all scope labels (including environment) in the sum-by clause.

func Build90thPercentileHTTPRequestLatencyQuery added in v0.5.0

func Build90thPercentileHTTPRequestLatencyQuery(labelFilter string) string

Build90thPercentileHTTPRequestLatencyQuery builds a PromQL query for 90th percentile HTTP request latency

func Build90thPercentileHTTPRequestLatencyQueryV1 added in v0.17.0

func Build90thPercentileHTTPRequestLatencyQueryV1(labelFilter, sumByClause, groupLeftClause string) string

Build90thPercentileHTTPRequestLatencyQueryV1 builds a PromQL query for 90th percentile HTTP request latency, dynamically scoped by the provided label clauses.

func Build99thPercentileHTTPRequestLatencyQuery added in v0.5.0

func Build99thPercentileHTTPRequestLatencyQuery(labelFilter string) string

Build99thPercentileHTTPRequestLatencyQuery builds a PromQL query for 99th percentile HTTP request latency

func Build99thPercentileHTTPRequestLatencyQueryV1 added in v0.17.0

func Build99thPercentileHTTPRequestLatencyQueryV1(labelFilter, sumByClause, groupLeftClause string) string

Build99thPercentileHTTPRequestLatencyQueryV1 builds a PromQL query for 99th percentile HTTP request latency, dynamically scoped by the provided label clauses.

func BuildCPULimitsQuery

func BuildCPULimitsQuery(labelFilter string) string

BuildCPULimitsQuery builds a PromQL query for CPU limits

func BuildCPULimitsQueryV1 added in v0.17.0

func BuildCPULimitsQueryV1(labelFilter, sumByClause, groupLeftClause string) string

BuildCPULimitsQueryV1 builds a PromQL query for CPU limits, scoped by provided IDs only.

func BuildCPURequestsQuery

func BuildCPURequestsQuery(labelFilter string) string

BuildCPURequestsQuery PromQL query for CPU requests

func BuildCPURequestsQueryV1 added in v0.17.0

func BuildCPURequestsQueryV1(labelFilter, sumByClause, groupLeftClause string) string

BuildCPURequestsQueryV1 builds a PromQL query for CPU requests, scoped by provided IDs only.

func BuildCPUUsageQuery

func BuildCPUUsageQuery(labelFilter string) string

BuildCPUUsageQuery builds a PromQL query for CPU usage rate

func BuildCPUUsageQueryV1 added in v0.17.0

func BuildCPUUsageQueryV1(labelFilter, sumByClause, groupLeftClause string) string

BuildCPUUsageQueryV1 builds a PromQL query for CPU usage rate, scoped by provided IDs only.

func BuildGroupLeftClauseV1 added in v0.17.0

func BuildGroupLeftClauseV1(scopeLabels []string) string

BuildGroupLeftClauseV1 builds a PromQL group_left clause that propagates the given scope labels from the right-hand side of a join.

func BuildHTTPRequestCountQuery added in v0.5.0

func BuildHTTPRequestCountQuery(labelFilter string) string

BuildHTTPRequestCountQuery builds a PromQL query for HTTP request count

func BuildHTTPRequestCountQueryV1 added in v0.17.0

func BuildHTTPRequestCountQueryV1(labelFilter, sumByClause, groupLeftClause string) string

BuildHTTPRequestCountQueryV1 builds a PromQL query for HTTP request count, dynamically scoped by the provided label clauses.

func BuildHistogramSumByClauseV1 added in v0.17.0

func BuildHistogramSumByClauseV1(sumByClause string) string

BuildHistogramSumByClauseV1 builds the label list for histogram "sum by (..., le)" clauses. If sumByClause is empty, this returns "le" to avoid invalid PromQL like "sum by (, le)".

func BuildLabelFilter

func BuildLabelFilter(componentID, projectID, environmentID string) string

BuildLabelFilter builds a Prometheus label filter string for component identification

func BuildLabelFilterV1 added in v0.17.0

func BuildLabelFilterV1(namespaceName, componentID, projectID, environmentID string) string

BuildLabelFilterV1 builds a Prometheus label filter string. If any of the IDs are empty, they are not included in the filter.

func BuildMeanHTTPRequestLatencyQuery added in v0.5.0

func BuildMeanHTTPRequestLatencyQuery(labelFilter string) string

BuildMeanHTTPRequestLatencyQuery builds a PromQL query for mean HTTP request latency

func BuildMeanHTTPRequestLatencyQueryV1 added in v0.17.0

func BuildMeanHTTPRequestLatencyQueryV1(labelFilter, sumByClause, groupLeftClause string) string

BuildMeanHTTPRequestLatencyQueryV1 builds a PromQL query for mean HTTP request latency, dynamically scoped by the provided label clauses.

func BuildMemoryLimitsQuery

func BuildMemoryLimitsQuery(labelFilter string) string

BuildMemoryLimitsQuery builds a PromQL query for memory limits

func BuildMemoryLimitsQueryV1 added in v0.17.0

func BuildMemoryLimitsQueryV1(labelFilter, sumByClause, groupLeftClause string) string

BuildMemoryLimitsQueryV1 builds a PromQL query for memory limits, scoped by provided IDs only.

func BuildMemoryRequestsQuery

func BuildMemoryRequestsQuery(labelFilter string) string

BuildMemoryRequestsQuery builds a PromQL query for memory requests

func BuildMemoryRequestsQueryV1 added in v0.17.0

func BuildMemoryRequestsQueryV1(labelFilter, sumByClause, groupLeftClause string) string

BuildMemoryRequestsQueryV1 builds a PromQL query for memory requests, scoped by provided IDs only.

func BuildMemoryUsageQuery

func BuildMemoryUsageQuery(labelFilter string) string

BuildMemoryUsageQuery builds a PromQL query for memory usage

func BuildMemoryUsageQueryV1 added in v0.17.0

func BuildMemoryUsageQueryV1(labelFilter, sumByClause, groupLeftClause string) string

BuildMemoryUsageQueryV1 builds a PromQL query for memory usage, scoped by provided IDs only.

func BuildScopeLabelNamesV1 added in v0.17.0

func BuildScopeLabelNamesV1(componentID, projectID, environmentID string) []string

BuildScopeLabelNamesV1 returns the Prometheus label names for whichever of componentID, projectID, and environmentID are non-empty. These are used as the "by" dimensions in sum/group_left clauses for V1 queries.

func BuildSuccessfulHTTPRequestCountQuery added in v0.5.0

func BuildSuccessfulHTTPRequestCountQuery(labelFilter string) string

BuildSuccessfulHTTPRequestCountQuery builds a PromQL query for successful HTTP request count. Requests are considered successful if they have a HTTP 1xx, 2xx or 3xx status code.

func BuildSuccessfulHTTPRequestCountQueryV1 added in v0.17.0

func BuildSuccessfulHTTPRequestCountQueryV1(labelFilter, sumByClause, groupLeftClause string) string

BuildSuccessfulHTTPRequestCountQueryV1 builds a PromQL query for successful HTTP request count (1xx, 2xx, 3xx), dynamically scoped by the provided label clauses.

func BuildSumByClauseV1 added in v0.17.0

func BuildSumByClauseV1(metricLabel string, scopeLabels []string) string

BuildSumByClauseV1 builds the label list for a PromQL "sum by (...)" clause. scopeLabels are prepended; metricLabel (e.g. "container", "resource") is appended when non-empty. Pass an empty string for metricLabel when no extra dimension is needed.

func BuildUnsuccessfulHTTPRequestCountQuery added in v0.5.0

func BuildUnsuccessfulHTTPRequestCountQuery(labelFilter string) string

BuildUnsuccessfulHTTPRequestCountQuery builds a PromQL query for unsuccessful HTTP request count. Requests are considered unsuccessful if they have a 4xx or 5xx status code.

func BuildUnsuccessfulHTTPRequestCountQueryV1 added in v0.17.0

func BuildUnsuccessfulHTTPRequestCountQueryV1(labelFilter, sumByClause, groupLeftClause string) string

BuildUnsuccessfulHTTPRequestCountQueryV1 builds a PromQL query for unsuccessful HTTP request count (4xx, 5xx), dynamically scoped by the provided label clauses.

Types

type AlertRuleBuilder added in v0.11.0

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

AlertRuleBuilder builds PrometheusRule CRs from alerting rule requests

func NewAlertRuleBuilder added in v0.11.0

func NewAlertRuleBuilder(namespace string) *AlertRuleBuilder

NewAlertRuleBuilder creates a new AlertRuleBuilder

func (*AlertRuleBuilder) BuildPrometheusRule added in v0.11.0

BuildPrometheusRule builds a PrometheusRule CR from an alerting rule request

type Client

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

func NewClient

func NewClient(cfg *config.PrometheusConfig, logger *slog.Logger) (*Client, error)

func (*Client) HealthCheck

func (c *Client) HealthCheck(ctx context.Context) error

HealthCheck performs a health check on Prometheus using the official API

func (*Client) QueryRangeTimeSeries

func (c *Client) QueryRangeTimeSeries(ctx context.Context, query string, start, end time.Time, step time.Duration) (*TimeSeriesResponse, error)

QueryRangeTimeSeries executes a PromQL range query and returns full time series data This method returns all data points in the time range, suitable for charting and visualization

type DataPoint

type DataPoint struct {
	Timestamp float64 `json:"timestamp"` // Unix timestamp in seconds
	Value     string  `json:"value"`     // Metric value as string for precision
}

DataPoint represents a single timestamp-value pair in a time series

type MetricsRequest

type MetricsRequest struct {
	ComponentID   string    `json:"componentId"`
	EnvironmentID string    `json:"environmentId"`
	ProjectID     string    `json:"projectId"`
	StartTime     time.Time `json:"startTime"`
	EndTime       time.Time `json:"endTime"`
}

MetricsRequest represents a metrics query request

type MetricsService

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

MetricsService provides metrics query functionality

func NewMetricsService

func NewMetricsService(client *Client, logger *slog.Logger) *MetricsService

NewMetricsService creates a new metrics service

func (*MetricsService) QueryRangeTimeSeries

func (s *MetricsService) QueryRangeTimeSeries(ctx context.Context, query string, start, end time.Time, step time.Duration) (*TimeSeriesResponse, error)

QueryRangeTimeSeries executes a Prometheus range query and returns time series data

type ResourceMetricsTimeSeries

type ResourceMetricsTimeSeries struct {
	CPUUsage       []TimeValuePoint `json:"cpuUsage"`
	CPURequests    []TimeValuePoint `json:"cpuRequests"`
	CPULimits      []TimeValuePoint `json:"cpuLimits"`
	Memory         []TimeValuePoint `json:"memory"`
	MemoryRequests []TimeValuePoint `json:"memoryRequests"`
	MemoryLimits   []TimeValuePoint `json:"memoryLimits"`
}

ResourceMetricsTimeSeries represents resource usage metrics with time series data

type TimeSeries

type TimeSeries struct {
	Metric map[string]string `json:"metric"`
	Values []DataPoint       `json:"values"`
}

TimeSeries represents a single time series with metric labels and data points

type TimeSeriesData

type TimeSeriesData struct {
	ResultType string       `json:"resultType"`
	Result     []TimeSeries `json:"result"`
}

TimeSeriesData contains the result type and time series results

type TimeSeriesResponse

type TimeSeriesResponse struct {
	Status    string         `json:"status"`
	Data      TimeSeriesData `json:"data"`
	Error     string         `json:"error,omitempty"`
	ErrorType string         `json:"errorType,omitempty"`
}

TimeSeriesResponse represents a Prometheus range query response with time series data

type TimeValuePoint

type TimeValuePoint struct {
	Time  string  `json:"time"`  // ISO 8601 formatted timestamp
	Value float64 `json:"value"` // Numeric value
}

TimeValuePoint represents a simplified data point with ISO 8601 time format

func ConvertTimeSeriesToTimeValuePoints

func ConvertTimeSeriesToTimeValuePoints(ts TimeSeries) []TimeValuePoint

ConvertTimeSeriesToTimeValuePoints converts a TimeSeries to an array of TimeValuePoint with ISO 8601 formatted timestamps and float64 values

Jump to

Keyboard shortcuts

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