1
0
Fork 0
mirror of https://github.com/kyverno/kyverno.git synced 2025-03-10 01:46:55 +00:00
kyverno/pkg/metrics/init.go
Charles-Edouard Brétéché dfded5cc60
feat: propagate context to the metrics package (#5479)
Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>

Signed-off-by: Charles-Edouard Brétéché <charles.edouard@nirmata.com>
2022-11-28 10:30:14 +00:00

65 lines
1.5 KiB
Go

package metrics
import (
"context"
"net/http"
"github.com/go-logr/logr"
"github.com/kyverno/kyverno/pkg/config"
controller "go.opentelemetry.io/otel/sdk/metric/controller/basic"
"k8s.io/client-go/kubernetes"
)
func InitMetrics(
ctx context.Context,
disableMetricsExport bool,
otel string,
metricsAddr string,
otelCollector string,
metricsConfiguration config.MetricsConfiguration,
transportCreds string,
kubeClient kubernetes.Interface,
log logr.Logger,
) (*MetricsConfig, *http.ServeMux, *controller.Controller, error) {
var err error
var metricsServerMux *http.ServeMux
var pusher *controller.Controller
metricsConfig := MetricsConfig{
Log: log,
Config: metricsConfiguration,
}
err = metricsConfig.initializeMetrics()
if err != nil {
log.Error(err, "Failed initializing metrics")
return nil, nil, nil, err
}
if !disableMetricsExport {
if otel == "grpc" {
// Otlpgrpc metrics will be served on port 4317: default port for otlpgrpcmetrics
log.V(2).Info("Enabling Metrics for Kyverno", "address", metricsAddr)
endpoint := otelCollector + metricsAddr
pusher, err = NewOTLPGRPCConfig(
ctx,
endpoint,
transportCreds,
kubeClient,
log,
)
if err != nil {
return nil, nil, nil, err
}
} else if otel == "prometheus" {
// Prometheus Server will serve metrics on metrics-port
metricsServerMux, err = NewPrometheusConfig(ctx, log)
if err != nil {
return nil, nil, pusher, err
}
}
}
return &metricsConfig, metricsServerMux, pusher, nil
}