From 2178800918e15b4a383c254ec215c037bcca2440 Mon Sep 17 00:00:00 2001 From: zirain Date: Sat, 18 Apr 2026 18:22:25 +0800 Subject: [PATCH 1/4] add metrics for runner Signed-off-by: zirain --- internal/gatewayapi/runner/runner.go | 2 ++ internal/globalratelimit/runner/runner.go | 2 ++ internal/infrastructure/runner/runner.go | 1 + internal/message/metrics.go | 11 +++++++++-- internal/message/watchutil.go | 11 +++++++++++ internal/xds/runner/runner.go | 2 ++ release-notes/current.yaml | 1 + 7 files changed, 28 insertions(+), 2 deletions(-) diff --git a/internal/gatewayapi/runner/runner.go b/internal/gatewayapi/runner/runner.go index 04c48ca598..e97d07cc80 100644 --- a/internal/gatewayapi/runner/runner.go +++ b/internal/gatewayapi/runner/runner.go @@ -190,6 +190,8 @@ func (r *Runner) subscribeAndTranslate(sub <-chan watchable.Snapshot[string, *re r.Logger, message.Metadata{Runner: r.Name(), Message: message.ProviderResourcesMessageName}, sub, func(update message.Update[string, *resource.ControllerResourcesContext], errChan chan error) { + message.PublishRunnerEventMetric(r.Name(), update.Delete) + parentCtx := context.Background() if update.Value != nil && update.Value.Context != nil { parentCtx = update.Value.Context diff --git a/internal/globalratelimit/runner/runner.go b/internal/globalratelimit/runner/runner.go index d684b59044..fd1bab3e02 100644 --- a/internal/globalratelimit/runner/runner.go +++ b/internal/globalratelimit/runner/runner.go @@ -145,6 +145,8 @@ func (r *Runner) translateFromSubscription(ctx context.Context, c <-chan watchab r.Logger, message.Metadata{Runner: r.Name(), Message: message.XDSIRMessageName}, c, func(update message.Update[string, *message.XdsIRWithContext], errChan chan error) { + message.PublishRunnerEventMetric(r.Name(), update.Delete) + parentCtx := ctx if update.Value != nil && update.Value.Context != nil { parentCtx = update.Value.Context diff --git a/internal/infrastructure/runner/runner.go b/internal/infrastructure/runner/runner.go index 5587847a79..0457139d57 100644 --- a/internal/infrastructure/runner/runner.go +++ b/internal/infrastructure/runner/runner.go @@ -110,6 +110,7 @@ func (r *Runner) updateProxyInfraFromSubscription(ctx context.Context, sub <-cha message.Metadata{Runner: r.Name(), Message: message.InfraIRMessageName}, sub, func(update message.Update[string, *ir.Infra], errChan chan error) { r.Logger.Info("received an update", "key", update.Key, "delete", update.Delete) + message.PublishRunnerEventMetric(r.Name(), update.Delete) val := update.Value if update.Delete { diff --git a/internal/message/metrics.go b/internal/message/metrics.go index c4127e7bfa..1ea0a3f285 100644 --- a/internal/message/metrics.go +++ b/internal/message/metrics.go @@ -34,6 +34,13 @@ var ( "Total number of published updates to watchable queue.", ) - runnerLabel = metrics.NewLabel("runner") - messageLabel = metrics.NewLabel("message") + runnerEventTotal = metrics.NewCounter( + "runner_event_total", + "Total number of runner events.", + ) + + runnerLabel = metrics.NewLabel("runner") + messageLabel = metrics.NewLabel("message") + runnerTypeLabel = metrics.NewLabel("type") + runnerNameLabel = metrics.NewLabel("name") ) diff --git a/internal/message/watchutil.go b/internal/message/watchutil.go index ac0d6990b6..cef898aec9 100644 --- a/internal/message/watchutil.go +++ b/internal/message/watchutil.go @@ -27,6 +27,17 @@ func PublishMetric(meta Metadata, count int) { watchablePublishTotal.WithSuccess(meta.LabelValues()...).Add(float64(count)) } +func PublishRunnerEventMetric(runnerName string, isDelete bool) { + eventType := "update" + if isDelete { + eventType = "delete" + } + runnerEventTotal.With( + runnerTypeLabel.Value(eventType), + runnerNameLabel.Value(runnerName), + ).Add(1) +} + func (m Metadata) LabelValues() []metrics.LabelValue { labels := make([]metrics.LabelValue, 0, 2) if m.Runner != "" { diff --git a/internal/xds/runner/runner.go b/internal/xds/runner/runner.go index e1ffc4d42d..48bbdb678e 100644 --- a/internal/xds/runner/runner.go +++ b/internal/xds/runner/runner.go @@ -263,6 +263,8 @@ func (r *Runner) translateFromSubscription(sub <-chan watchable.Snapshot[string, r.Logger, message.Metadata{Runner: r.Name(), Message: message.XDSIRMessageName}, sub, func(update message.Update[string, *message.XdsIRWithContext], errChan chan error) { + message.PublishRunnerEventMetric(r.Name(), update.Delete) + parentCtx := context.Background() if update.Value != nil && update.Value.Context != nil { parentCtx = update.Value.Context diff --git a/release-notes/current.yaml b/release-notes/current.yaml index 292c86fd9f..672384b26f 100644 --- a/release-notes/current.yaml +++ b/release-notes/current.yaml @@ -87,3 +87,4 @@ Other changes: | Moved Envoy Gateway CRDs into a sub-chart to avoid the Helm release secret exceeding the 1MB size limit when adding new API fields. Upgrade/Install behavior is unchanged for users. The maximum number of rules in a RateLimit policy is increased from 128 to 256. The maximum number of JWT providers allowed in `SecurityPolicy.spec.jwt.providers` is increased from 4 to 16. + Added `runner_event_total` metric to track update and delete events in infrastructure and gateway API runners for improved observability. From 02c858199a4c5795800fdf0f6cbe5c534f9eecce Mon Sep 17 00:00:00 2001 From: zirain Date: Sat, 25 Apr 2026 08:57:51 +0800 Subject: [PATCH 2/4] rename Signed-off-by: zirain --- internal/message/metrics.go | 8 ++++---- internal/message/watchutil.go | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/internal/message/metrics.go b/internal/message/metrics.go index 1ea0a3f285..2a20f84f0a 100644 --- a/internal/message/metrics.go +++ b/internal/message/metrics.go @@ -39,8 +39,8 @@ var ( "Total number of runner events.", ) - runnerLabel = metrics.NewLabel("runner") - messageLabel = metrics.NewLabel("message") - runnerTypeLabel = metrics.NewLabel("type") - runnerNameLabel = metrics.NewLabel("name") + runnerLabel = metrics.NewLabel("runner") + messageLabel = metrics.NewLabel("message") + runnerEventTypeLabel = metrics.NewLabel("event_type") + runnerNameLabel = metrics.NewLabel("name") ) diff --git a/internal/message/watchutil.go b/internal/message/watchutil.go index cef898aec9..0be2b0ec35 100644 --- a/internal/message/watchutil.go +++ b/internal/message/watchutil.go @@ -33,7 +33,7 @@ func PublishRunnerEventMetric(runnerName string, isDelete bool) { eventType = "delete" } runnerEventTotal.With( - runnerTypeLabel.Value(eventType), + runnerEventTypeLabel.Value(eventType), runnerNameLabel.Value(runnerName), ).Add(1) } From bad4d7899320d7cda7784bed016dec204723b527 Mon Sep 17 00:00:00 2001 From: zirain Date: Mon, 27 Apr 2026 08:00:51 +0800 Subject: [PATCH 3/4] rename Signed-off-by: zirain --- internal/message/metrics.go | 4 ++-- internal/message/watchutil.go | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/internal/message/metrics.go b/internal/message/metrics.go index 2a20f84f0a..2d3ade8e71 100644 --- a/internal/message/metrics.go +++ b/internal/message/metrics.go @@ -34,8 +34,8 @@ var ( "Total number of published updates to watchable queue.", ) - runnerEventTotal = metrics.NewCounter( - "runner_event_total", + watchableEventTotal = metrics.NewCounter( + "watchable_event_total", "Total number of runner events.", ) diff --git a/internal/message/watchutil.go b/internal/message/watchutil.go index 0be2b0ec35..e2314a1d97 100644 --- a/internal/message/watchutil.go +++ b/internal/message/watchutil.go @@ -32,7 +32,7 @@ func PublishRunnerEventMetric(runnerName string, isDelete bool) { if isDelete { eventType = "delete" } - runnerEventTotal.With( + watchableEventTotal.With( runnerEventTypeLabel.Value(eventType), runnerNameLabel.Value(runnerName), ).Add(1) From d779078041ec48d64ce9e53c9e414178b1f3ad71 Mon Sep 17 00:00:00 2001 From: zirain Date: Fri, 1 May 2026 21:45:53 +0800 Subject: [PATCH 4/4] reuse Signed-off-by: zirain --- internal/message/metrics.go | 1 - internal/message/watchutil.go | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/internal/message/metrics.go b/internal/message/metrics.go index 2d3ade8e71..c6fe385392 100644 --- a/internal/message/metrics.go +++ b/internal/message/metrics.go @@ -42,5 +42,4 @@ var ( runnerLabel = metrics.NewLabel("runner") messageLabel = metrics.NewLabel("message") runnerEventTypeLabel = metrics.NewLabel("event_type") - runnerNameLabel = metrics.NewLabel("name") ) diff --git a/internal/message/watchutil.go b/internal/message/watchutil.go index e2314a1d97..1f69202731 100644 --- a/internal/message/watchutil.go +++ b/internal/message/watchutil.go @@ -34,7 +34,7 @@ func PublishRunnerEventMetric(runnerName string, isDelete bool) { } watchableEventTotal.With( runnerEventTypeLabel.Value(eventType), - runnerNameLabel.Value(runnerName), + runnerLabel.Value(runnerName), ).Add(1) }