From cf70f26221bfffa8d82778cb8112219add9594e5 Mon Sep 17 00:00:00 2001 From: Kornilios Kourtis Date: Tue, 2 Apr 2024 12:04:38 +0200 Subject: [PATCH] Revert "policyfiltermetrics: Remove error label" This reverts commit 425f91e2be6b83c4b654062d64ec49ec5e072d4f. Signed-off-by: Kornilios Kourtis --- go.mod | 2 +- .../policyfiltermetrics/policyfiltermetrics.go | 9 +++++++-- pkg/policyfilter/rthooks/rthooks.go | 2 +- pkg/policyfilter/state.go | 14 +++++++------- 4 files changed, 16 insertions(+), 11 deletions(-) diff --git a/go.mod b/go.mod index d55fb6cb4d4..99c08d7b615 100644 --- a/go.mod +++ b/go.mod @@ -30,6 +30,7 @@ require ( github.com/mennanov/fieldmask-utils v1.1.2 github.com/opencontainers/runtime-spec v1.2.0 github.com/pelletier/go-toml v1.9.5 + github.com/pkg/errors v0.9.1 github.com/prometheus/client_golang v1.19.0 github.com/prometheus/client_model v0.6.1 github.com/sirupsen/logrus v1.9.3 @@ -149,7 +150,6 @@ require ( github.com/opentracing/opentracing-go v1.2.1-0.20220228012449-10b1cf09e00b // indirect github.com/pelletier/go-toml/v2 v2.1.0 // indirect github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5 // indirect - github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect github.com/prometheus/common v0.48.0 // indirect diff --git a/pkg/metrics/policyfiltermetrics/policyfiltermetrics.go b/pkg/metrics/policyfiltermetrics/policyfiltermetrics.go index 0f3b8693734..e1465d0d50c 100644 --- a/pkg/metrics/policyfiltermetrics/policyfiltermetrics.go +++ b/pkg/metrics/policyfiltermetrics/policyfiltermetrics.go @@ -4,7 +4,11 @@ package policyfiltermetrics import ( + "fmt" + "strings" + "github.com/cilium/tetragon/pkg/metrics/consts" + "github.com/pkg/errors" "github.com/prometheus/client_golang/prometheus" ) @@ -50,7 +54,7 @@ var ( Name: "policyfilter_metrics_total", Help: "Policy filter metrics. For internal use only.", ConstLabels: nil, - }, []string{"subsys", "op"}) + }, []string{"subsys", "op", "error_type"}) ) func InitMetrics(registry *prometheus.Registry) { @@ -68,8 +72,9 @@ func InitMetrics(registry *prometheus.Registry) { // * Rename policyfilter_metrics_total to get rid of _metrics? } -func OpInc(subsys Subsys, op Operation) { +func OpInc(subsys Subsys, op Operation, err error) { PolicyFilterOpMetrics.WithLabelValues( subsys.String(), op.String(), + strings.ReplaceAll(fmt.Sprintf("%T", errors.Cause(err)), "*", ""), ).Inc() } diff --git a/pkg/policyfilter/rthooks/rthooks.go b/pkg/policyfilter/rthooks/rthooks.go index 69d9542ad5e..4d9eab82afc 100644 --- a/pkg/policyfilter/rthooks/rthooks.go +++ b/pkg/policyfilter/rthooks/rthooks.go @@ -103,7 +103,7 @@ func createContainerHook(_ context.Context, arg *rthooks.CreateContainerArg) err if err := pfState.AddPodContainer(policyfilter.PodID(podID), namespace, pod.Labels, containerID, cgid); err != nil { log.WithError(err).Warn("failed to update policy filter, aborting hook.") } - policyfiltermetrics.OpInc(policyfiltermetrics.RTHooksSubsys, policyfiltermetrics.AddContainerOperation) + policyfiltermetrics.OpInc(policyfiltermetrics.RTHooksSubsys, policyfiltermetrics.AddContainerOperation, err) return nil } diff --git a/pkg/policyfilter/state.go b/pkg/policyfilter/state.go index 1f29c5c3e60..8859eb88a4d 100644 --- a/pkg/policyfilter/state.go +++ b/pkg/policyfilter/state.go @@ -284,7 +284,7 @@ func (m *state) updatePodHandler(pod *v1.Pod) error { "pod-id": podID, "container-ids": containerIDs, "namespace": namespace, - }).Warn("policyfilter: UpdatePod failed") + }).Warn("policyfilter, add pod-handler: AddPodContainer failed") return err } @@ -299,17 +299,17 @@ func (m *state) getPodEventHandlers() cache.ResourceEventHandlerFuncs { logger.GetLogger().Warn("policyfilter, add-pod handler: unexpected object type: %T", pod) return } - m.updatePodHandler(pod) - policyfiltermetrics.OpInc(policyfiltermetrics.PodHandlersSubsys, policyfiltermetrics.AddPodOperation) + err := m.updatePodHandler(pod) + policyfiltermetrics.OpInc(policyfiltermetrics.PodHandlersSubsys, policyfiltermetrics.AddPodOperation, err) }, UpdateFunc: func(_, newObj interface{}) { pod, ok := newObj.(*v1.Pod) if !ok { - logger.GetLogger().Warn("policyfilter, update-pod handler: unexpected object type(s): new:%T", pod) + logger.GetLogger().Warn("policyfilter, update-pod: unexpected object type(s): new:%T", pod) return } - m.updatePodHandler(pod) - policyfiltermetrics.OpInc(policyfiltermetrics.PodHandlersSubsys, policyfiltermetrics.UpdatePodOperation) + err := m.updatePodHandler(pod) + policyfiltermetrics.OpInc(policyfiltermetrics.PodHandlersSubsys, policyfiltermetrics.UpdatePodOperation, err) }, DeleteFunc: func(obj interface{}) { // Remove all containers for this pod @@ -332,7 +332,7 @@ func (m *state) getPodEventHandlers() cache.ResourceEventHandlerFuncs { "namespace": namespace, }).Warn("policyfilter, delete-pod handler: DelPod failed") } - policyfiltermetrics.OpInc(policyfiltermetrics.PodHandlersSubsys, policyfiltermetrics.DeletePodOperation) + policyfiltermetrics.OpInc(policyfiltermetrics.PodHandlersSubsys, policyfiltermetrics.DeletePodOperation, err) }, } }