New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
add failopen metric #107171
add failopen metric #107171
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -116,6 +116,7 @@ type AdmissionMetrics struct { | |
controller *metricSet | ||
webhook *metricSet | ||
webhookRejection *metrics.CounterVec | ||
webhookFailOpen *metrics.CounterVec | ||
webhookRequest *metrics.CounterVec | ||
} | ||
|
||
|
@@ -196,6 +197,16 @@ func newAdmissionMetrics() *AdmissionMetrics { | |
}, | ||
[]string{"name", "type", "operation", "error_type", "rejection_code"}) | ||
|
||
webhookFailOpen := metrics.NewCounterVec( | ||
&metrics.CounterOpts{ | ||
Namespace: namespace, | ||
Subsystem: subsystem, | ||
Name: "webhook_fail_open_count", | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This must be suffixed There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @logicalhan let me fix that, will open a PR shortly adding you are reviewer There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @logicalhan the file contains 2 counter metrics:
Do you want me to address both? renaming them to:
|
||
Help: "Admission webhook fail open count, identified by name and broken out for each admission type (validating or mutating).", | ||
StabilityLevel: metrics.ALPHA, | ||
}, | ||
[]string{"name", "type"}) | ||
|
||
webhookRequest := metrics.NewCounterVec( | ||
&metrics.CounterOpts{ | ||
Namespace: namespace, | ||
|
@@ -210,8 +221,9 @@ func newAdmissionMetrics() *AdmissionMetrics { | |
controller.mustRegister() | ||
webhook.mustRegister() | ||
legacyregistry.MustRegister(webhookRejection) | ||
legacyregistry.MustRegister(webhookFailOpen) | ||
legacyregistry.MustRegister(webhookRequest) | ||
return &AdmissionMetrics{step: step, controller: controller, webhook: webhook, webhookRejection: webhookRejection, webhookRequest: webhookRequest} | ||
return &AdmissionMetrics{step: step, controller: controller, webhook: webhook, webhookRejection: webhookRejection, webhookFailOpen: webhookFailOpen, webhookRequest: webhookRequest} | ||
} | ||
|
||
func (m *AdmissionMetrics) reset() { | ||
|
@@ -250,6 +262,11 @@ func (m *AdmissionMetrics) ObserveWebhookRejection(ctx context.Context, name, st | |
m.webhookRejection.WithContext(ctx).WithLabelValues(name, stepType, operation, string(errorType), strconv.Itoa(rejectionCode)).Inc() | ||
} | ||
|
||
// ObserveWebhookFailOpen records validating or mutating webhook that fail open. | ||
func (m *AdmissionMetrics) ObserveWebhookFailOpen(ctx context.Context, name, stepType string) { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Please add a unit test here There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. done with commit 0844891, thanks to point this out. |
||
m.webhookFailOpen.WithContext(ctx).WithLabelValues(name, stepType).Inc() | ||
} | ||
|
||
type metricSet struct { | ||
latencies *metrics.HistogramVec | ||
latenciesSummary *metrics.SummaryVec | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please see my comment in #107146 (comment). I wonder if we can achieve the goal by reusing / extending the existing metrics.