1
0
Fork 0
mirror of https://github.com/kyverno/kyverno.git synced 2024-12-14 11:57:48 +00:00
kyverno/pkg/metrics/init.go

64 lines
1.5 KiB
Go
Raw Normal View History

package metrics
import (
"context"
"net/http"
"github.com/go-logr/logr"
"github.com/kyverno/kyverno/pkg/config"
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/metric"
sdkmetric "go.opentelemetry.io/otel/sdk/metric"
"k8s.io/client-go/kubernetes"
)
func InitMetrics(
ctx context.Context,
disableMetricsExport bool,
otelProvider string,
metricsAddr string,
otelCollector string,
metricsConfiguration config.MetricsConfiguration,
transportCreds string,
kubeClient kubernetes.Interface,
logger logr.Logger,
) (MetricsConfigManager, *http.ServeMux, *sdkmetric.MeterProvider, error) {
var err error
var metricsServerMux *http.ServeMux
if !disableMetricsExport {
var meterProvider metric.MeterProvider
if otelProvider == "grpc" {
endpoint := otelCollector + metricsAddr
meterProvider, err = NewOTLPGRPCConfig(
ctx,
endpoint,
transportCreds,
kubeClient,
logger,
metricsConfiguration,
)
if err != nil {
return nil, nil, nil, err
}
} else if otelProvider == "prometheus" {
meterProvider, metricsServerMux, err = NewPrometheusConfig(ctx, logger, metricsConfiguration)
if err != nil {
return nil, nil, nil, err
}
}
if meterProvider != nil {
otel.SetMeterProvider(meterProvider)
}
}
metricsConfig := MetricsConfig{
Log: logger,
config: metricsConfiguration,
}
err = metricsConfig.initializeMetrics(otel.GetMeterProvider())
if err != nil {
logger.Error(err, "Failed initializing metrics")
return nil, nil, nil, err
}
return &metricsConfig, metricsServerMux, nil, nil
}