Documentation
¶
Index ¶
- type Component
- type Metrics
- func (m *Metrics) AddTimeAsLeader(seconds float64)
- func (m *Metrics) RecordDeployment(durationSeconds float64, success bool)
- func (m *Metrics) RecordEvent()
- func (m *Metrics) RecordLeadershipTransition()
- func (m *Metrics) RecordReconciliation(durationSeconds float64, success bool)
- func (m *Metrics) RecordValidation(success bool)
- func (m *Metrics) RecordValidationTests(total, passed, failed int, durationSeconds float64)
- func (m *Metrics) RecordWebhookCertRotation()
- func (m *Metrics) RecordWebhookRequest(gvk, result string, durationSeconds float64)
- func (m *Metrics) RecordWebhookValidation(gvk, result string)
- func (m *Metrics) SetEventSubscribers(count int)
- func (m *Metrics) SetIsLeader(isLeader bool)
- func (m *Metrics) SetResourceCount(resourceType string, count int)
- func (m *Metrics) SetWebhookCertExpiry(expiryTime int64)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Component ¶
type Component struct {
// contains filtered or unexported fields
}
Component is an event-driven metrics collector.
Subscribes to controller events and updates metrics via the Metrics struct. This is an event adapter that bridges domain events to Prometheus metrics.
IMPORTANT: Instance-based, created fresh per application iteration. When the iteration ends (context cancelled), the component stops and the metrics it was updating become eligible for garbage collection.
func New ¶
New creates a new metrics component that listens to events.
Parameters:
- metrics: The Metrics instance to update (created with metrics.NewMetrics)
- eventBus: The EventBus to subscribe to for events
Usage:
registry := prometheus.NewRegistry() metrics := metrics.NewMetrics(registry) component := metrics.New(metrics, eventBus) go component.Start(ctx) eventBus.Start()
type Metrics ¶
type Metrics struct {
// Reconciliation metrics
ReconciliationDuration prometheus.Histogram
ReconciliationTotal prometheus.Counter
ReconciliationErrors prometheus.Counter
// Deployment metrics
DeploymentDuration prometheus.Histogram
DeploymentTotal prometheus.Counter
DeploymentErrors prometheus.Counter
// Validation metrics
ValidationTotal prometheus.Counter
ValidationErrors prometheus.Counter
// Validation test metrics
ValidationTestsTotal prometheus.Counter
ValidationTestsPassTotal prometheus.Counter
ValidationTestsFailTotal prometheus.Counter
ValidationTestDuration prometheus.Histogram
// Resource metrics
ResourceCount *prometheus.GaugeVec
// Event metrics
EventSubscribers prometheus.Gauge
EventsPublished prometheus.Counter
// Webhook metrics
WebhookRequestsTotal *prometheus.CounterVec
WebhookRequestDuration prometheus.Histogram
WebhookValidationTotal *prometheus.CounterVec
WebhookCertExpiry prometheus.Gauge
WebhookCertRotations prometheus.Counter
// Leader election metrics
LeaderElectionIsLeader prometheus.Gauge
LeaderElectionTransitionsTotal prometheus.Counter
LeaderElectionTimeAsLeaderSeconds prometheus.Counter
}
Metrics holds all controller-specific Prometheus metrics.
IMPORTANT: Create one instance per application iteration. When the iteration ends (e.g., on config reload), metrics are garbage collected. This prevents stale state from surviving across reinitialization cycles.
func NewMetrics ¶
func NewMetrics(registry prometheus.Registerer) *Metrics
New creates all controller metrics and registers them with the provided registry.
IMPORTANT: Pass an instance-based registry (prometheus.NewRegistry()), NOT prometheus.DefaultRegisterer. Metrics are scoped to the registry's lifetime. When the registry is garbage collected (iteration ends), metrics are freed.
This is critical for supporting application reinitialization on configuration changes without leaking metrics or accumulating stale state.
Example:
registry := prometheus.NewRegistry() // Create per iteration metrics := metrics.NewMetrics(registry) // Metrics tied to iteration // ... use metrics ... // When iteration ends, both registry and metrics are GC'd
func (*Metrics) AddTimeAsLeader ¶
AddTimeAsLeader adds time spent as leader to the cumulative counter.
Parameters:
- seconds: Time spent as leader in seconds
func (*Metrics) RecordDeployment ¶
RecordDeployment records a deployment attempt.
Parameters:
- durationSeconds: Time spent deploying (use time.Since(start).Seconds())
- success: Whether the deployment completed successfully
func (*Metrics) RecordEvent ¶
func (m *Metrics) RecordEvent()
RecordEvent records an event publication. Call this for every event published to the EventBus.
func (*Metrics) RecordLeadershipTransition ¶
func (m *Metrics) RecordLeadershipTransition()
RecordLeadershipTransition records a leadership state change. Call this whenever leadership is gained or lost.
func (*Metrics) RecordReconciliation ¶
RecordReconciliation records a completed reconciliation cycle.
Parameters:
- durationSeconds: Time spent in reconciliation (use time.Since(start).Seconds())
- success: Whether the reconciliation completed successfully
func (*Metrics) RecordValidation ¶
RecordValidation records a validation attempt.
Parameters:
- success: Whether the validation passed
func (*Metrics) RecordValidationTests ¶
RecordValidationTests records validation test execution results.
Parameters:
- total: Total number of tests executed
- passed: Number of tests that passed
- failed: Number of tests that failed
- durationSeconds: Time spent running tests (use time.Duration.Seconds())
func (*Metrics) RecordWebhookCertRotation ¶
func (m *Metrics) RecordWebhookCertRotation()
RecordWebhookCertRotation records a webhook certificate rotation.
func (*Metrics) RecordWebhookRequest ¶
RecordWebhookRequest records a webhook admission request.
Parameters:
- gvk: The GVK of the resource being validated (e.g., "v1.ConfigMap")
- result: The result of the request ("allowed", "denied", or "error")
- durationSeconds: Time spent processing the request
func (*Metrics) RecordWebhookValidation ¶
RecordWebhookValidation records a webhook validation result.
Parameters:
- gvk: The GVK of the resource being validated
- result: The validation result ("allowed", "denied", or "error")
func (*Metrics) SetEventSubscribers ¶
SetEventSubscribers sets the number of active event subscribers.
Parameters:
- count: The current number of event subscribers
func (*Metrics) SetIsLeader ¶
SetIsLeader sets whether this replica is the leader.
Parameters:
- isLeader: true if this replica is the leader, false otherwise
func (*Metrics) SetResourceCount ¶
SetResourceCount sets the count for a specific resource type.
Parameters:
- resourceType: The type of resource (e.g., "ingresses", "services")
- count: The current number of resources of this type
func (*Metrics) SetWebhookCertExpiry ¶
SetWebhookCertExpiry sets the webhook certificate expiry timestamp.
Parameters:
- expiryTime: The time when the certificate expires