Documentation
¶
Index ¶
- Constants
- func Build50thPercentileHTTPRequestLatencyQuery(labelFilter string) string
- func Build50thPercentileHTTPRequestLatencyQueryV1(labelFilter, sumByClause, groupLeftClause string) string
- func Build90thPercentileHTTPRequestLatencyQuery(labelFilter string) string
- func Build90thPercentileHTTPRequestLatencyQueryV1(labelFilter, sumByClause, groupLeftClause string) string
- func Build99thPercentileHTTPRequestLatencyQuery(labelFilter string) string
- func Build99thPercentileHTTPRequestLatencyQueryV1(labelFilter, sumByClause, groupLeftClause string) string
- func BuildCPULimitsQuery(labelFilter string) string
- func BuildCPULimitsQueryV1(labelFilter, sumByClause, groupLeftClause string) string
- func BuildCPURequestsQuery(labelFilter string) string
- func BuildCPURequestsQueryV1(labelFilter, sumByClause, groupLeftClause string) string
- func BuildCPUUsageQuery(labelFilter string) string
- func BuildCPUUsageQueryV1(labelFilter, sumByClause, groupLeftClause string) string
- func BuildGroupLeftClauseV1(scopeLabels []string) string
- func BuildHTTPRequestCountQuery(labelFilter string) string
- func BuildHTTPRequestCountQueryV1(labelFilter, sumByClause, groupLeftClause string) string
- func BuildHistogramSumByClauseV1(sumByClause string) string
- func BuildLabelFilter(componentID, projectID, environmentID string) string
- func BuildLabelFilterV1(namespaceName, componentID, projectID, environmentID string) string
- func BuildMeanHTTPRequestLatencyQuery(labelFilter string) string
- func BuildMeanHTTPRequestLatencyQueryV1(labelFilter, sumByClause, groupLeftClause string) string
- func BuildMemoryLimitsQuery(labelFilter string) string
- func BuildMemoryLimitsQueryV1(labelFilter, sumByClause, groupLeftClause string) string
- func BuildMemoryRequestsQuery(labelFilter string) string
- func BuildMemoryRequestsQueryV1(labelFilter, sumByClause, groupLeftClause string) string
- func BuildMemoryUsageQuery(labelFilter string) string
- func BuildMemoryUsageQueryV1(labelFilter, sumByClause, groupLeftClause string) string
- func BuildScopeLabelNamesV1(componentID, projectID, environmentID string) []string
- func BuildSuccessfulHTTPRequestCountQuery(labelFilter string) string
- func BuildSuccessfulHTTPRequestCountQueryV1(labelFilter, sumByClause, groupLeftClause string) string
- func BuildSumByClauseV1(metricLabel string, scopeLabels []string) string
- func BuildUnsuccessfulHTTPRequestCountQuery(labelFilter string) string
- func BuildUnsuccessfulHTTPRequestCountQueryV1(labelFilter, sumByClause, groupLeftClause string) string
- type AlertRuleBuilder
- type Client
- type DataPoint
- type MetricsRequest
- type MetricsService
- type ResourceMetricsTimeSeries
- type TimeSeries
- type TimeSeriesData
- type TimeSeriesResponse
- type TimeValuePoint
Constants ¶
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
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
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
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 ¶
BuildCPULimitsQuery builds a PromQL query for CPU limits
func BuildCPULimitsQueryV1 ¶ added in v0.17.0
BuildCPULimitsQueryV1 builds a PromQL query for CPU limits, scoped by provided IDs only.
func BuildCPURequestsQuery ¶
BuildCPURequestsQuery PromQL query for CPU requests
func BuildCPURequestsQueryV1 ¶ added in v0.17.0
BuildCPURequestsQueryV1 builds a PromQL query for CPU requests, scoped by provided IDs only.
func BuildCPUUsageQuery ¶
BuildCPUUsageQuery builds a PromQL query for CPU usage rate
func BuildCPUUsageQueryV1 ¶ added in v0.17.0
BuildCPUUsageQueryV1 builds a PromQL query for CPU usage rate, scoped by provided IDs only.
func BuildGroupLeftClauseV1 ¶ added in v0.17.0
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
BuildHTTPRequestCountQuery builds a PromQL query for HTTP request count
func BuildHTTPRequestCountQueryV1 ¶ added in v0.17.0
BuildHTTPRequestCountQueryV1 builds a PromQL query for HTTP request count, dynamically scoped by the provided label clauses.
func BuildHistogramSumByClauseV1 ¶ added in v0.17.0
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 ¶
BuildLabelFilter builds a Prometheus label filter string for component identification
func BuildLabelFilterV1 ¶ added in v0.17.0
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
BuildMeanHTTPRequestLatencyQuery builds a PromQL query for mean HTTP request latency
func BuildMeanHTTPRequestLatencyQueryV1 ¶ added in v0.17.0
BuildMeanHTTPRequestLatencyQueryV1 builds a PromQL query for mean HTTP request latency, dynamically scoped by the provided label clauses.
func BuildMemoryLimitsQuery ¶
BuildMemoryLimitsQuery builds a PromQL query for memory limits
func BuildMemoryLimitsQueryV1 ¶ added in v0.17.0
BuildMemoryLimitsQueryV1 builds a PromQL query for memory limits, scoped by provided IDs only.
func BuildMemoryRequestsQuery ¶
BuildMemoryRequestsQuery builds a PromQL query for memory requests
func BuildMemoryRequestsQueryV1 ¶ added in v0.17.0
BuildMemoryRequestsQueryV1 builds a PromQL query for memory requests, scoped by provided IDs only.
func BuildMemoryUsageQuery ¶
BuildMemoryUsageQuery builds a PromQL query for memory usage
func BuildMemoryUsageQueryV1 ¶ added in v0.17.0
BuildMemoryUsageQueryV1 builds a PromQL query for memory usage, scoped by provided IDs only.
func BuildScopeLabelNamesV1 ¶ added in v0.17.0
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
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
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
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
func (b *AlertRuleBuilder) BuildPrometheusRule(rule types.AlertingRuleRequest) (*monitoringv1.PrometheusRule, error)
BuildPrometheusRule builds a PrometheusRule CR from an alerting rule request
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
func (*Client) HealthCheck ¶
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