mirror of
https://github.com/kyverno/kyverno.git
synced 2024-12-14 11:57:48 +00:00
feat: upgrade otel (#6383)
* chore: bump a couple of deps Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com> * feat: upgrade otel Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com> * fix Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com> --------- Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>
This commit is contained in:
parent
991d51b03e
commit
b8558df675
9 changed files with 72 additions and 74 deletions
22
go.mod
22
go.mod
|
@ -45,15 +45,15 @@ require (
|
|||
github.com/spf13/cobra v1.6.1
|
||||
github.com/stretchr/testify v1.8.1
|
||||
github.com/zach-klippenstein/goregen v0.0.0-20160303162051-795b5e3961ea
|
||||
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.37.0
|
||||
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.39.0
|
||||
go.opentelemetry.io/otel v1.13.0
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.34.0
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.11.2
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.11.2
|
||||
go.opentelemetry.io/otel/exporters/prometheus v0.34.0
|
||||
go.opentelemetry.io/otel/metric v0.34.0
|
||||
go.opentelemetry.io/otel/sdk v1.11.2
|
||||
go.opentelemetry.io/otel/sdk/metric v0.34.0
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.36.0
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.13.0
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.13.0
|
||||
go.opentelemetry.io/otel/exporters/prometheus v0.36.0
|
||||
go.opentelemetry.io/otel/metric v0.36.0
|
||||
go.opentelemetry.io/otel/sdk v1.13.0
|
||||
go.opentelemetry.io/otel/sdk/metric v0.36.0
|
||||
go.opentelemetry.io/otel/trace v1.13.0
|
||||
go.uber.org/automaxprocs v1.5.1
|
||||
go.uber.org/multierr v1.9.0
|
||||
|
@ -253,7 +253,7 @@ require (
|
|||
github.com/pjbgf/sha1cd v0.2.3 // indirect
|
||||
github.com/pmezard/go-difflib v1.0.0 // indirect
|
||||
github.com/prometheus/client_model v0.3.0 // indirect
|
||||
github.com/prometheus/common v0.39.0 // indirect
|
||||
github.com/prometheus/common v0.40.0 // indirect
|
||||
github.com/prometheus/procfs v0.9.0 // indirect
|
||||
github.com/protocolbuffers/txtpbfmt v0.0.0-20230130173531-76f626137dc9 // indirect
|
||||
github.com/r3labs/diff v1.1.0 // indirect
|
||||
|
@ -299,8 +299,8 @@ require (
|
|||
github.com/zeebo/errs v1.3.0 // indirect
|
||||
go.mongodb.org/mongo-driver v1.11.2 // indirect
|
||||
go.opencensus.io v0.24.0 // indirect
|
||||
go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.11.2 // indirect
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.34.0 // indirect
|
||||
go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.13.0 // indirect
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.36.0 // indirect
|
||||
go.opentelemetry.io/proto/otlp v0.19.0 // indirect
|
||||
go.starlark.net v0.0.0-20230128213706-3f75dec8e403 // indirect
|
||||
go.uber.org/atomic v1.10.0 // indirect
|
||||
|
|
44
go.sum
44
go.sum
|
@ -1181,8 +1181,8 @@ github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16
|
|||
github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc=
|
||||
github.com/prometheus/common v0.28.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls=
|
||||
github.com/prometheus/common v0.30.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls=
|
||||
github.com/prometheus/common v0.39.0 h1:oOyhkDq05hPZKItWVBkJ6g6AtGxi+fy7F4JvUV8uhsI=
|
||||
github.com/prometheus/common v0.39.0/go.mod h1:6XBZ7lYdLCbkAVhwRsWTZn+IN5AB9F/NXd5w0BbEX0Y=
|
||||
github.com/prometheus/common v0.40.0 h1:Afz7EVRqGg2Mqqf4JuF9vdvp1pi220m55Pi9T2JnO4Q=
|
||||
github.com/prometheus/common v0.40.0/go.mod h1:L65ZJPSmfn/UBWLQIHV7dBrKFidB/wPlF1y5TlSt9OE=
|
||||
github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
|
||||
github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
|
||||
github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
|
||||
|
@ -1475,28 +1475,28 @@ go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=
|
|||
go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E=
|
||||
go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=
|
||||
go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo=
|
||||
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.37.0 h1:yt2NKzK7Vyo6h0+X8BA4FpreZQTlVEIarnsBP/H5mzs=
|
||||
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.37.0/go.mod h1:+ARmXlUlc51J7sZeCBkBJNdHGySrdOzgzxp6VWRWM1U=
|
||||
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.39.0 h1:vFEBG7SieZJzvnRWQ81jxpuEqe6J8Ex+hgc9CqOTzHc=
|
||||
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.39.0/go.mod h1:9rgTcOKdIhDOC0IcAu8a+R+FChqSUBihKpM1lVNi6T0=
|
||||
go.opentelemetry.io/otel v1.13.0 h1:1ZAKnNQKwBBxFtww/GwxNUyTf0AxkZzrukO8MeXqe4Y=
|
||||
go.opentelemetry.io/otel v1.13.0/go.mod h1:FH3RtdZCzRkJYFTCsAKDy9l/XYjMdNv6QrkFFB8DvVg=
|
||||
go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.11.2 h1:htgM8vZIF8oPSCxa341e3IZ4yr/sKxgu8KZYllByiVY=
|
||||
go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.11.2/go.mod h1:rqbht/LlhVBgn5+k3M5QK96K5Xb0DvXpMJ5SFQpY6uw=
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.34.0 h1:kpskzLZ60cJ48SJ4uxWa6waBL+4kSV6nVK8rP+QM8Wg=
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.34.0/go.mod h1:4+x3i62TEegDHuzNva0bMcAN8oUi5w4liGb1d/VgPYo=
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.34.0 h1:e7kFb4pJLbhJgAwUdoVTHzB9pGujs5O8/7gFyZL88fg=
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.34.0/go.mod h1:3x00m9exjIbhK+zTO4MsCSlfbVmgvLP0wjDgDKa/8bw=
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.11.2 h1:fqR1kli93643au1RKo0Uma3d2aPQKT+WBKfTSBaKbOc=
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.11.2/go.mod h1:5Qn6qvgkMsLDX+sYK64rHb1FPhpn0UtxF+ouX1uhyJE=
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.11.2 h1:ERwKPn9Aer7Gxsc0+ZlutlH1bEEAUXAUhqm3Y45ABbk=
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.11.2/go.mod h1:jWZUM2MWhWCJ9J9xVbRx7tzK1mXKpAlze4CeulycwVY=
|
||||
go.opentelemetry.io/otel/exporters/prometheus v0.34.0 h1:L5D+HxdaC/ORB47ribbTBbkXRZs9JzPjq0EoIOMWncM=
|
||||
go.opentelemetry.io/otel/exporters/prometheus v0.34.0/go.mod h1:6gUoJyfhoWqF0tOLaY0ZmKgkQRcvEQx6p5rVlKHp3s4=
|
||||
go.opentelemetry.io/otel/metric v0.34.0 h1:MCPoQxcg/26EuuJwpYN1mZTeCYAUGx8ABxfW07YkjP8=
|
||||
go.opentelemetry.io/otel/metric v0.34.0/go.mod h1:ZFuI4yQGNCupurTXCwkeD/zHBt+C2bR7bw5JqUm/AP8=
|
||||
go.opentelemetry.io/otel/sdk v1.11.2 h1:GF4JoaEx7iihdMFu30sOyRx52HDHOkl9xQ8SMqNXUiU=
|
||||
go.opentelemetry.io/otel/sdk v1.11.2/go.mod h1:wZ1WxImwpq+lVRo4vsmSOxdd+xwoUJ6rqyLc3SyX9aU=
|
||||
go.opentelemetry.io/otel/sdk/metric v0.34.0 h1:7ElxfQpXCFZlRTvVRTkcUvK8Gt5DC8QzmzsLsO2gdzo=
|
||||
go.opentelemetry.io/otel/sdk/metric v0.34.0/go.mod h1:l4r16BIqiqPy5rd14kkxllPy/fOI4tWo1jkpD9Z3ffQ=
|
||||
go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.13.0 h1:pa05sNT/P8OsIQ8mPZKTIyiBuzS/xDGLVx+DCt0y6Vs=
|
||||
go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.13.0/go.mod h1:rqbht/LlhVBgn5+k3M5QK96K5Xb0DvXpMJ5SFQpY6uw=
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.36.0 h1:9uzubQUMa9RsQqQZc0Btl51pTLMdHgDHJszg6839rBQ=
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.36.0/go.mod h1:N+2vPD0QfUraV0HGpuiAEzM+rxpnH3Q+/+Qs6HQeWac=
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.36.0 h1:BTacH94k18GsbSvrx7vrsqo/fFqYNOzdAaAnCsTA4+E=
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.36.0/go.mod h1:4rcSLFqpLFLHHFDJMcywaPauEW150acg+c9Cw3a9VW8=
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.13.0 h1:Any/nVxaoMq1T2w0W85d6w5COlLuCCgOYKQhJJWEMwQ=
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.13.0/go.mod h1:46vAP6RWfNn7EKov73l5KBFlNxz8kYlxR1woU+bJ4ZY=
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.13.0 h1:Wz7UQn7/eIqZVDJbuNEM6PmqeA71cWXrWcXekP5HZgU=
|
||||
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.13.0/go.mod h1:OhH1xvgA5jZW2M/S4PcvtDlFE1VULRRBsibBrKuJQGI=
|
||||
go.opentelemetry.io/otel/exporters/prometheus v0.36.0 h1:EbfJRxojnpb+ux8IO79oKHXu9jsbWjd00cT0XmbP5gU=
|
||||
go.opentelemetry.io/otel/exporters/prometheus v0.36.0/go.mod h1:gYHAjuEuMrtPXccEHyvYcQVC//c4QwgQcUq1/3mx7Ys=
|
||||
go.opentelemetry.io/otel/metric v0.36.0 h1:t0lgGI+L68QWt3QtOIlqM9gXoxqxWLhZ3R/e5oOAY0Q=
|
||||
go.opentelemetry.io/otel/metric v0.36.0/go.mod h1:wKVw57sd2HdSZAzyfOM9gTqqE8v7CbqWsYL6AyrH9qk=
|
||||
go.opentelemetry.io/otel/sdk v1.13.0 h1:BHib5g8MvdqS65yo2vV1s6Le42Hm6rrw08qU6yz5JaM=
|
||||
go.opentelemetry.io/otel/sdk v1.13.0/go.mod h1:YLKPx5+6Vx/o1TCUYYs+bpymtkmazOMT6zoRrC7AQ7I=
|
||||
go.opentelemetry.io/otel/sdk/metric v0.36.0 h1:dEXpkkOAEcHiRiaZdvd63MouV+3bCtAB/bF3jlNKnr8=
|
||||
go.opentelemetry.io/otel/sdk/metric v0.36.0/go.mod h1:Lv4HQQPSCSkhyBKzLNtE8YhTSdK4HCwNh3lh7CiR20s=
|
||||
go.opentelemetry.io/otel/trace v1.13.0 h1:CBgRZ6ntv+Amuj1jDsMhZtlAPT6gbyIRdaIzFhfBSdY=
|
||||
go.opentelemetry.io/otel/trace v1.13.0/go.mod h1:muCvmmO9KKpvuXSf3KKAXXB2ygNYHQ+ZfI5X08d3tds=
|
||||
go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
|
||||
|
|
|
@ -11,16 +11,16 @@ import (
|
|||
controllerutils "github.com/kyverno/kyverno/pkg/utils/controller"
|
||||
kubeutils "github.com/kyverno/kyverno/pkg/utils/kube"
|
||||
"go.opentelemetry.io/otel/attribute"
|
||||
"go.opentelemetry.io/otel/metric"
|
||||
"go.opentelemetry.io/otel/metric/global"
|
||||
"go.opentelemetry.io/otel/metric/instrument"
|
||||
"go.opentelemetry.io/otel/metric/instrument/asyncfloat64"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/labels"
|
||||
)
|
||||
|
||||
type controller struct {
|
||||
metricsConfig metrics.MetricsConfigManager
|
||||
ruleInfo asyncfloat64.Gauge
|
||||
ruleInfo instrument.Float64ObservableGauge
|
||||
|
||||
// listers
|
||||
cpolLister kyvernov1listers.ClusterPolicyLister
|
||||
|
@ -31,7 +31,7 @@ type controller struct {
|
|||
func NewController(metricsConfig metrics.MetricsConfigManager, cpolInformer kyvernov1informers.ClusterPolicyInformer, polInformer kyvernov1informers.PolicyInformer) {
|
||||
meterProvider := global.MeterProvider()
|
||||
meter := meterProvider.Meter(metrics.MeterName)
|
||||
policyRuleInfoMetric, err := meter.AsyncFloat64().Gauge(
|
||||
policyRuleInfoMetric, err := meter.Float64ObservableGauge(
|
||||
"kyverno_policy_rule_info_total",
|
||||
instrument.WithDescription("can be used to track the info of the rules or/and policies present in the cluster. 0 means the rule doesn't exist and has been deleted, 1 means the rule is currently existent in the cluster"),
|
||||
)
|
||||
|
@ -47,41 +47,42 @@ func NewController(metricsConfig metrics.MetricsConfigManager, cpolInformer kyve
|
|||
controllerutils.AddEventHandlers(cpolInformer.Informer(), c.addPolicy, c.updatePolicy, c.deletePolicy)
|
||||
controllerutils.AddEventHandlers(polInformer.Informer(), c.addNsPolicy, c.updateNsPolicy, c.deleteNsPolicy)
|
||||
if c.ruleInfo != nil {
|
||||
err := meter.RegisterCallback([]instrument.Asynchronous{c.ruleInfo}, c.report)
|
||||
_, err := meter.RegisterCallback(c.report, c.ruleInfo)
|
||||
if err != nil {
|
||||
logger.Error(err, "Failed to register callback")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (c *controller) report(ctx context.Context) {
|
||||
func (c *controller) report(ctx context.Context, observer metric.Observer) error {
|
||||
pols, err := c.polLister.Policies(metav1.NamespaceAll).List(labels.Everything())
|
||||
if err != nil {
|
||||
logger.Error(err, "failed to list policies")
|
||||
return
|
||||
return err
|
||||
}
|
||||
for _, policy := range pols {
|
||||
err := c.reportPolicy(ctx, policy)
|
||||
err := c.reportPolicy(ctx, policy, observer)
|
||||
if err != nil {
|
||||
logger.Error(err, "failed to report policy metric", "policy", policy)
|
||||
return
|
||||
return err
|
||||
}
|
||||
}
|
||||
cpols, err := c.cpolLister.List(labels.Everything())
|
||||
if err != nil {
|
||||
logger.Error(err, "failed to list cluster policies")
|
||||
return
|
||||
return err
|
||||
}
|
||||
for _, policy := range cpols {
|
||||
err := c.reportPolicy(ctx, policy)
|
||||
err := c.reportPolicy(ctx, policy, observer)
|
||||
if err != nil {
|
||||
logger.Error(err, "failed to report policy metric", "policy", policy)
|
||||
return
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c *controller) reportPolicy(ctx context.Context, policy kyvernov1.PolicyInterface) error {
|
||||
func (c *controller) reportPolicy(ctx context.Context, policy kyvernov1.PolicyInterface, observer metric.Observer) error {
|
||||
name, namespace, policyType, backgroundMode, validationMode, err := metrics.GetPolicyInfos(policy)
|
||||
if err != nil {
|
||||
return err
|
||||
|
@ -104,7 +105,7 @@ func (c *controller) reportPolicy(ctx context.Context, policy kyvernov1.PolicyIn
|
|||
attribute.String("rule_name", rule.Name),
|
||||
attribute.String("rule_type", string(ruleType)),
|
||||
}
|
||||
c.ruleInfo.Observe(ctx, 1, append(ruleAttributes, policyAttributes...)...)
|
||||
observer.ObserveFloat64(c.ruleInfo, 1, append(ruleAttributes, policyAttributes...)...)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
|
|
|
@ -17,11 +17,9 @@ import (
|
|||
"go.opentelemetry.io/otel/exporters/prometheus"
|
||||
"go.opentelemetry.io/otel/metric"
|
||||
"go.opentelemetry.io/otel/metric/instrument"
|
||||
"go.opentelemetry.io/otel/metric/instrument/syncfloat64"
|
||||
"go.opentelemetry.io/otel/metric/instrument/syncint64"
|
||||
sdkmetric "go.opentelemetry.io/otel/sdk/metric"
|
||||
"go.opentelemetry.io/otel/sdk/resource"
|
||||
semconv "go.opentelemetry.io/otel/semconv/v1.12.0"
|
||||
semconv "go.opentelemetry.io/otel/semconv/v1.17.0"
|
||||
"k8s.io/client-go/kubernetes"
|
||||
)
|
||||
|
||||
|
@ -31,10 +29,10 @@ const (
|
|||
|
||||
type MetricsConfig struct {
|
||||
// instruments
|
||||
policyChangesMetric syncint64.Counter
|
||||
policyResultsMetric syncint64.Counter
|
||||
policyExecutionDurationMetric syncfloat64.Histogram
|
||||
clientQueriesMetric syncint64.Counter
|
||||
policyChangesMetric instrument.Int64Counter
|
||||
policyResultsMetric instrument.Int64Counter
|
||||
policyExecutionDurationMetric instrument.Float64Histogram
|
||||
clientQueriesMetric instrument.Int64Counter
|
||||
|
||||
// config
|
||||
config kconfig.MetricsConfiguration
|
||||
|
@ -56,22 +54,22 @@ func (m *MetricsConfig) Config() kconfig.MetricsConfiguration {
|
|||
func (m *MetricsConfig) initializeMetrics(meterProvider metric.MeterProvider) error {
|
||||
var err error
|
||||
meter := meterProvider.Meter(MeterName)
|
||||
m.policyResultsMetric, err = meter.SyncInt64().Counter("kyverno_policy_results", instrument.WithDescription("can be used to track the results associated with the policies applied in the user’s cluster, at the level from rule to policy to admission requests"))
|
||||
m.policyResultsMetric, err = meter.Int64Counter("kyverno_policy_results", instrument.WithDescription("can be used to track the results associated with the policies applied in the user’s cluster, at the level from rule to policy to admission requests"))
|
||||
if err != nil {
|
||||
m.Log.Error(err, "Failed to create instrument, kyverno_policy_results")
|
||||
return err
|
||||
}
|
||||
m.policyChangesMetric, err = meter.SyncInt64().Counter("kyverno_policy_changes", instrument.WithDescription("can be used to track all the changes associated with the Kyverno policies present on the cluster such as creation, updates and deletions"))
|
||||
m.policyChangesMetric, err = meter.Int64Counter("kyverno_policy_changes", instrument.WithDescription("can be used to track all the changes associated with the Kyverno policies present on the cluster such as creation, updates and deletions"))
|
||||
if err != nil {
|
||||
m.Log.Error(err, "Failed to create instrument, kyverno_policy_changes")
|
||||
return err
|
||||
}
|
||||
m.policyExecutionDurationMetric, err = meter.SyncFloat64().Histogram("kyverno_policy_execution_duration_seconds", instrument.WithDescription("can be used to track the latencies (in seconds) associated with the execution/processing of the individual rules under Kyverno policies whenever they evaluate incoming resource requests"))
|
||||
m.policyExecutionDurationMetric, err = meter.Float64Histogram("kyverno_policy_execution_duration_seconds", instrument.WithDescription("can be used to track the latencies (in seconds) associated with the execution/processing of the individual rules under Kyverno policies whenever they evaluate incoming resource requests"))
|
||||
if err != nil {
|
||||
m.Log.Error(err, "Failed to create instrument, kyverno_policy_execution_duration_seconds")
|
||||
return err
|
||||
}
|
||||
m.clientQueriesMetric, err = meter.SyncInt64().Counter("kyverno_client_queries", instrument.WithDescription("can be used to track the number of client queries sent from Kyverno to the API-server"))
|
||||
m.clientQueriesMetric, err = meter.Int64Counter("kyverno_client_queries", instrument.WithDescription("can be used to track the number of client queries sent from Kyverno to the API-server"))
|
||||
if err != nil {
|
||||
m.Log.Error(err, "Failed to create instrument, kyverno_client_queries")
|
||||
return err
|
||||
|
|
|
@ -13,7 +13,7 @@ import (
|
|||
"go.opentelemetry.io/otel/propagation"
|
||||
"go.opentelemetry.io/otel/sdk/resource"
|
||||
sdktrace "go.opentelemetry.io/otel/sdk/trace"
|
||||
semconv "go.opentelemetry.io/otel/semconv/v1.12.0"
|
||||
semconv "go.opentelemetry.io/otel/semconv/v1.17.0"
|
||||
"k8s.io/client-go/kubernetes"
|
||||
)
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ import (
|
|||
"net/http"
|
||||
|
||||
"go.opentelemetry.io/otel/codes"
|
||||
semconv "go.opentelemetry.io/otel/semconv/v1.12.0"
|
||||
semconv "go.opentelemetry.io/otel/semconv/v1.17.0"
|
||||
"go.opentelemetry.io/otel/trace"
|
||||
)
|
||||
|
||||
|
|
|
@ -10,7 +10,6 @@ import (
|
|||
"go.opentelemetry.io/otel/attribute"
|
||||
"go.opentelemetry.io/otel/metric/global"
|
||||
"go.opentelemetry.io/otel/metric/instrument"
|
||||
"go.opentelemetry.io/otel/metric/instrument/syncint64"
|
||||
"k8s.io/apimachinery/pkg/api/errors"
|
||||
"k8s.io/apimachinery/pkg/util/runtime"
|
||||
"k8s.io/apimachinery/pkg/util/wait"
|
||||
|
@ -22,26 +21,26 @@ type reconcileFunc func(ctx context.Context, logger logr.Logger, key string, nam
|
|||
|
||||
type controllerMetrics struct {
|
||||
controllerName string
|
||||
reconcileTotal syncint64.Counter
|
||||
requeueTotal syncint64.Counter
|
||||
queueDropTotal syncint64.Counter
|
||||
reconcileTotal instrument.Int64Counter
|
||||
requeueTotal instrument.Int64Counter
|
||||
queueDropTotal instrument.Int64Counter
|
||||
}
|
||||
|
||||
func newControllerMetrics(logger logr.Logger, controllerName string) *controllerMetrics {
|
||||
meter := global.MeterProvider().Meter(metrics.MeterName)
|
||||
reconcileTotal, err := meter.SyncInt64().Counter(
|
||||
reconcileTotal, err := meter.Int64Counter(
|
||||
"kyverno_controller_reconcile",
|
||||
instrument.WithDescription("can be used to track number of reconciliation cycles"))
|
||||
if err != nil {
|
||||
logger.Error(err, "Failed to create instrument, kyverno_controller_reconcile_total")
|
||||
}
|
||||
requeueTotal, err := meter.SyncInt64().Counter(
|
||||
requeueTotal, err := meter.Int64Counter(
|
||||
"kyverno_controller_requeue",
|
||||
instrument.WithDescription("can be used to track number of reconciliation errors"))
|
||||
if err != nil {
|
||||
logger.Error(err, "Failed to create instrument, kyverno_controller_requeue_total")
|
||||
}
|
||||
queueDropTotal, err := meter.SyncInt64().Counter(
|
||||
queueDropTotal, err := meter.Int64Counter(
|
||||
"kyverno_controller_drop",
|
||||
instrument.WithDescription("can be used to track number of queue drops"))
|
||||
if err != nil {
|
||||
|
|
|
@ -12,7 +12,7 @@ import (
|
|||
"go.opentelemetry.io/otel/attribute"
|
||||
"go.opentelemetry.io/otel/metric/global"
|
||||
"go.opentelemetry.io/otel/metric/instrument"
|
||||
semconv "go.opentelemetry.io/otel/semconv/v1.4.0"
|
||||
semconv "go.opentelemetry.io/otel/semconv/v1.17.0"
|
||||
admissionv1 "k8s.io/api/admission/v1"
|
||||
)
|
||||
|
||||
|
@ -22,14 +22,14 @@ func (inner AdmissionHandler) WithMetrics(logger logr.Logger, metricsConfig conf
|
|||
|
||||
func (inner AdmissionHandler) withMetrics(logger logr.Logger, metricsConfig config.MetricsConfiguration, attrs ...attribute.KeyValue) AdmissionHandler {
|
||||
meter := global.MeterProvider().Meter(metrics.MeterName)
|
||||
requestsMetric, err := meter.SyncInt64().Counter(
|
||||
requestsMetric, err := meter.Int64Counter(
|
||||
"kyverno_admission_requests",
|
||||
instrument.WithDescription("can be used to track the number of admission requests encountered by Kyverno in the cluster"),
|
||||
)
|
||||
if err != nil {
|
||||
logger.Error(err, "Failed to create instrument, kyverno_admission_requests_total")
|
||||
}
|
||||
durationMetric, err := meter.SyncFloat64().Histogram(
|
||||
durationMetric, err := meter.Float64Histogram(
|
||||
"kyverno_admission_review_duration_seconds",
|
||||
instrument.WithDescription("can be used to track the latencies (in seconds) associated with the entire individual admission review. For example, if an incoming request trigger, say, five policies, this metric will track the e2e latency associated with the execution of all those policies"),
|
||||
)
|
||||
|
@ -73,14 +73,14 @@ func (inner HttpHandler) WithMetrics(logger logr.Logger, attrs ...attribute.KeyV
|
|||
|
||||
func (inner HttpHandler) withMetrics(logger logr.Logger, attrs ...attribute.KeyValue) HttpHandler {
|
||||
meter := global.MeterProvider().Meter(metrics.MeterName)
|
||||
requestsMetric, err := meter.SyncInt64().Counter(
|
||||
requestsMetric, err := meter.Int64Counter(
|
||||
"kyverno_http_requests_total",
|
||||
instrument.WithDescription("can be used to track the number of http requests"),
|
||||
)
|
||||
if err != nil {
|
||||
logger.Error(err, "Failed to create instrument, kyverno_http_requests_total")
|
||||
}
|
||||
durationMetric, err := meter.SyncFloat64().Histogram(
|
||||
durationMetric, err := meter.Float64Histogram(
|
||||
"kyverno_http_requests_duration_seconds",
|
||||
instrument.WithDescription("can be used to track the latencies (in seconds) associated with the entire individual http request."),
|
||||
)
|
||||
|
@ -91,7 +91,7 @@ func (inner HttpHandler) withMetrics(logger logr.Logger, attrs ...attribute.KeyV
|
|||
startTime := time.Now()
|
||||
attributes := []attribute.KeyValue{
|
||||
semconv.HTTPRequestContentLengthKey.Int64(request.ContentLength),
|
||||
semconv.HTTPHostKey.String(request.Host),
|
||||
// semconv.HTTPHostKey.String(request.Host),
|
||||
semconv.HTTPMethodKey.String(request.Method),
|
||||
semconv.HTTPURLKey.String(request.RequestURI),
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@ import (
|
|||
|
||||
"github.com/go-logr/logr"
|
||||
"github.com/kyverno/kyverno/pkg/tracing"
|
||||
semconv "go.opentelemetry.io/otel/semconv/v1.4.0"
|
||||
semconv "go.opentelemetry.io/otel/semconv/v1.17.0"
|
||||
"go.opentelemetry.io/otel/trace"
|
||||
admissionv1 "k8s.io/api/admission/v1"
|
||||
)
|
||||
|
@ -24,7 +24,7 @@ func (inner HttpHandler) WithTrace(name string) HttpHandler {
|
|||
},
|
||||
trace.WithAttributes(
|
||||
semconv.HTTPRequestContentLengthKey.Int64(request.ContentLength),
|
||||
semconv.HTTPHostKey.String(tracing.StringValue(request.Host)),
|
||||
// semconv.HTTPHostKey.String(tracing.StringValue(request.Host)),
|
||||
semconv.HTTPMethodKey.String(tracing.StringValue(request.Method)),
|
||||
semconv.HTTPURLKey.String(tracing.StringValue(request.RequestURI)),
|
||||
),
|
||||
|
|
Loading…
Reference in a new issue