Skip to content

Commit

Permalink
Merge pull request #6024 from rexagod/5681-1
Browse files Browse the repository at this point in the history
change: drop deprecated metrics
  • Loading branch information
simonpasquier committed Oct 19, 2023
2 parents eb3dc59 + 7c31ea9 commit 9a1d252
Show file tree
Hide file tree
Showing 3 changed files with 2 additions and 90 deletions.
31 changes: 0 additions & 31 deletions cmd/operator/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -434,43 +434,12 @@ func run() int {
}
}

validationTriggeredCounter := prometheus.NewCounter(prometheus.CounterOpts{
Name: "prometheus_operator_rule_validation_triggered_total",
Help: "DEPRECATED, removed in v0.57.0: Number of times a prometheusRule object triggered validation",
})

validationErrorsCounter := prometheus.NewCounter(prometheus.CounterOpts{
Name: "prometheus_operator_rule_validation_errors_total",
Help: "DEPRECATED, removed in v0.57.0: Number of errors that occurred while validating a prometheusRules object",
})

alertManagerConfigValidationTriggered := prometheus.NewCounter(prometheus.CounterOpts{
Name: "prometheus_operator_alertmanager_config_validation_triggered_total",
Help: "DEPRECATED, removed in v0.57.0: Number of times an alertmanagerconfig object triggered validation",
})

alertManagerConfigValidationError := prometheus.NewCounter(prometheus.CounterOpts{
Name: "prometheus_operator_alertmanager_config_validation_errors_total",
Help: "DEPRECATED, removed in v0.57.0: Number of errors that occurred while validating a alertmanagerconfig object",
})

r.MustRegister(
collectors.NewGoCollector(),
collectors.NewProcessCollector(collectors.ProcessCollectorOpts{}),
validationTriggeredCounter,
validationErrorsCounter,
alertManagerConfigValidationTriggered,
alertManagerConfigValidationError,
version.NewCollector("prometheus_operator"),
)

admit.RegisterMetrics(
validationTriggeredCounter,
validationErrorsCounter,
alertManagerConfigValidationTriggered,
alertManagerConfigValidationError,
)

mux.Handle("/metrics", promhttp.HandlerFor(r, promhttp.HandlerOpts{}))
mux.Handle("/debug/pprof/", http.HandlerFunc(pprof.Index))
mux.Handle("/debug/pprof/cmdline", http.HandlerFunc(pprof.Cmdline))
Expand Down
40 changes: 2 additions & 38 deletions pkg/admission/admission.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ import (

"github.com/go-kit/log"
"github.com/go-kit/log/level"
"github.com/prometheus/client_golang/prometheus"
v1 "k8s.io/api/admission/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
Expand Down Expand Up @@ -75,12 +74,8 @@ var (
// 1. PrometheusRules (validation, mutation) - ensuring created resources can be loaded by Promethues
// 2. monitoringv1alpha1.AlertmanagerConfig (validation) - ensuring
type Admission struct {
promRuleValidationErrorsCounter prometheus.Counter
promRuleValidationTriggeredCounter prometheus.Counter
amConfValidationErrorsCounter prometheus.Counter
amConfValidationTriggeredCounter prometheus.Counter
logger log.Logger
wh http.Handler
logger log.Logger
wh http.Handler
}

func New(logger log.Logger) *Admission {
Expand All @@ -107,18 +102,6 @@ func (a *Admission) Register(mux *http.ServeMux) {
mux.HandleFunc(convertPath, a.serveConvert)
}

func (a *Admission) RegisterMetrics(
prometheusValidationTriggeredCounter,
prometheusValidationErrorsCounter,
alertManagerConfValidationTriggeredCounter,
alertManagerConfValidationErrorsCounter prometheus.Counter,
) {
a.promRuleValidationTriggeredCounter = prometheusValidationTriggeredCounter
a.promRuleValidationErrorsCounter = prometheusValidationErrorsCounter
a.amConfValidationTriggeredCounter = alertManagerConfValidationTriggeredCounter
a.amConfValidationErrorsCounter = alertManagerConfValidationErrorsCounter
}

type admitFunc func(ar v1.AdmissionReview) *v1.AdmissionResponse

func (a *Admission) servePrometheusRulesMutate(w http.ResponseWriter, r *http.Request) {
Expand Down Expand Up @@ -242,20 +225,17 @@ func (a *Admission) mutatePrometheusRules(ar v1.AdmissionReview) *v1.AdmissionRe
}

func (a *Admission) validatePrometheusRules(ar v1.AdmissionReview) *v1.AdmissionResponse {
a.incrementCounter(a.promRuleValidationTriggeredCounter)
level.Debug(a.logger).Log("msg", "Validating prometheusrules")

if ar.Request.Resource != prometheusRuleGVR {
err := fmt.Errorf("expected resource to be %v, but received %v", prometheusRuleResource, ar.Request.Resource)
level.Warn(a.logger).Log("err", err)
a.incrementCounter(a.promRuleValidationErrorsCounter)
return toAdmissionResponseFailure("Unexpected resource kind", prometheusRuleResource, []error{err})
}

promRule := &monitoringv1.PrometheusRule{}
if err := json.Unmarshal(ar.Request.Object.Raw, promRule); err != nil {
level.Info(a.logger).Log("msg", errUnmarshalRules, "err", err)
a.incrementCounter(a.promRuleValidationErrorsCounter)
return toAdmissionResponseFailure(errUnmarshalRules, prometheusRuleResource, []error{err})
}

Expand All @@ -267,22 +247,19 @@ func (a *Admission) validatePrometheusRules(ar v1.AdmissionReview) *v1.Admission
level.Info(a.logger).Log("msg", m, "err", err)
}

a.incrementCounter(a.promRuleValidationErrorsCounter)
return toAdmissionResponseFailure("Rules are not valid", prometheusRuleResource, errors)
}

return &v1.AdmissionResponse{Allowed: true}
}

func (a *Admission) validateAlertmanagerConfig(ar v1.AdmissionReview) *v1.AdmissionResponse {
a.incrementCounter(a.amConfValidationTriggeredCounter)
level.Debug(a.logger).Log("msg", "Validating alertmanagerconfigs")

gr := metav1.GroupResource{Group: ar.Request.Resource.Group, Resource: ar.Request.Resource.Resource}
if gr != alertManagerConfigGR {
err := fmt.Errorf("expected resource to be %v, but received %v", alertManagerConfigResource, ar.Request.Resource)
level.Warn(a.logger).Log("err", err)
a.incrementCounter(a.amConfValidationErrorsCounter)
return toAdmissionResponseFailure("Unexpected resource kind", alertManagerConfigResource, []error{err})
}

Expand All @@ -299,7 +276,6 @@ func (a *Admission) validateAlertmanagerConfig(ar v1.AdmissionReview) *v1.Admiss

if err := json.Unmarshal(ar.Request.Object.Raw, amConf); err != nil {
level.Info(a.logger).Log("msg", errUnmarshalConfig, "err", err)
a.incrementCounter(a.amConfValidationErrorsCounter)
return toAdmissionResponseFailure(errUnmarshalConfig, alertManagerConfigResource, []error{err})
}

Expand All @@ -317,19 +293,7 @@ func (a *Admission) validateAlertmanagerConfig(ar v1.AdmissionReview) *v1.Admiss
msg := "invalid config"
level.Debug(a.logger).Log("msg", msg, "content", string(ar.Request.Object.Raw))
level.Info(a.logger).Log("msg", msg, "err", err)
a.incrementCounter(a.amConfValidationErrorsCounter)
return toAdmissionResponseFailure("AlertmanagerConfig is invalid", alertManagerConfigResource, []error{err})
}
return &v1.AdmissionResponse{Allowed: true}
}

// TODO (PhilipGough) - this can be removed when the following deprecated metrics are removed
// - prometheus_operator_rule_validation_triggered_total
// - prometheus_operator_rule_validation_errors_total
// - prometheus_operator_alertmanager_config_validation_errors_total
// - prometheus_operator_alertmanager_config_validation_triggered_total
func (a *Admission) incrementCounter(counter prometheus.Counter) {
if counter != nil {
counter.Inc()
}
}
21 changes: 0 additions & 21 deletions pkg/admission/admission_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ import (
jsonpatch "github.com/evanphx/json-patch/v5"
"github.com/go-kit/log"
"github.com/go-kit/log/level"
"github.com/prometheus/client_golang/prometheus"
"gotest.tools/v3/golden"
v1 "k8s.io/api/admission/v1"
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
Expand Down Expand Up @@ -324,27 +323,7 @@ func TestAlertmanagerConfigConversion(t *testing.T) {
}

func api() *Admission {
validationTriggered := prometheus.NewCounter(prometheus.CounterOpts{
Name: "prometheus_operator_rule_validation_triggered_total",
Help: "Number of times a prometheusRule object triggered validation",
})

validationErrors := prometheus.NewCounter(prometheus.CounterOpts{
Name: "prometheus_operator_rule_validation_errors_total",
Help: "Number of errors that occurred while validating a prometheusRules object",
})
alertManagerConfigValidationTriggered := prometheus.NewCounter(prometheus.CounterOpts{
Name: "prometheus_operator_alertmanager_config_validation_triggered_total",
Help: "Number of times an alertmanagerconfig object triggered validation",
})

alertManagerConfigValidationError := prometheus.NewCounter(prometheus.CounterOpts{
Name: "prometheus_operator_alertmanager_config_validation_errors_total",
Help: "Number of errors that occurred while validating a alertmanagerconfig object",
})

a := New(level.NewFilter(log.NewLogfmtLogger(log.NewSyncWriter(os.Stdout)), level.AllowNone()))
a.RegisterMetrics(validationTriggered, validationErrors, alertManagerConfigValidationTriggered, alertManagerConfigValidationError)

return a
}
Expand Down

0 comments on commit 9a1d252

Please sign in to comment.