From ec7ed11ea1c085934e4623150c941fe7529b7723 Mon Sep 17 00:00:00 2001 From: Todd Treece <360020+toddtreece@users.noreply.github.com> Date: Tue, 17 Oct 2023 10:44:23 -0400 Subject: [PATCH] K8s: Logging improvements (#76646) --- go.mod | 4 ++-- go.sum | 2 -- pkg/services/grafana-apiserver/log.go | 15 ++++++++------ pkg/services/grafana-apiserver/service.go | 25 ++++++++++++----------- 4 files changed, 24 insertions(+), 22 deletions(-) diff --git a/go.mod b/go.mod index dd22ea89017..bd46bc35b79 100644 --- a/go.mod +++ b/go.mod @@ -124,7 +124,7 @@ require ( gopkg.in/mail.v2 v2.3.1 // @grafana/backend-platform gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // @grafana/alerting-squad-backend - xorm.io/builder v0.3.6 // @grafana/backend-platform + xorm.io/builder v0.3.6 // indirect; @grafana/backend-platform xorm.io/core v0.7.3 // @grafana/backend-platform xorm.io/xorm v0.8.2 // @grafana/alerting-squad-backend ) @@ -176,7 +176,7 @@ require ( github.com/grpc-ecosystem/go-grpc-prometheus v1.2.1-0.20191002090509-6af20e3a5340 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-msgpack v0.5.5 // indirect - github.com/hashicorp/go-multierror v1.1.1 // @grafana/alerting-squad + github.com/hashicorp/go-multierror v1.1.1 // indirect; @grafana/alerting-squad github.com/hashicorp/go-sockaddr v1.0.2 // indirect github.com/hashicorp/golang-lru v0.6.0 // indirect github.com/hashicorp/yamux v0.1.1 // indirect diff --git a/go.sum b/go.sum index 1941397f8a9..613b77190ea 100644 --- a/go.sum +++ b/go.sum @@ -1805,8 +1805,6 @@ github.com/grafana/grafana-google-sdk-go v0.1.0 h1:LKGY8z2DSxKjYfr2flZsWgTRTZ6HG github.com/grafana/grafana-google-sdk-go v0.1.0/go.mod h1:Vo2TKWfDVmNTELBUM+3lkrZvFtBws0qSZdXhQxRdJrE= github.com/grafana/grafana-plugin-sdk-go v0.94.0/go.mod h1:3VXz4nCv6wH5SfgB3mlW39s+c+LetqSCjFj7xxPC5+M= github.com/grafana/grafana-plugin-sdk-go v0.114.0/go.mod h1:D7x3ah+1d4phNXpbnOaxa/osSaZlwh9/ZUnGGzegRbk= -github.com/grafana/grafana-plugin-sdk-go v0.183.0 h1:nT8LUQHnGLiyToRjTjFVKhnWHXVfrV1EdIpXZADBrp0= -github.com/grafana/grafana-plugin-sdk-go v0.183.0/go.mod h1:fPX9spPWEzyUg0BLTQbdXCCq7PVSJZGNVKfNpiTQUts= github.com/grafana/grafana-plugin-sdk-go v0.184.0 h1:1bIQZnOLqktYwaFybkghE9TmWv+gLKB4plB2wL4DCdQ= github.com/grafana/grafana-plugin-sdk-go v0.184.0/go.mod h1:fPX9spPWEzyUg0BLTQbdXCCq7PVSJZGNVKfNpiTQUts= github.com/grafana/kindsys v0.0.0-20230508162304-452481b63482 h1:1YNoeIhii4UIIQpCPU+EXidnqf449d0C3ZntAEt4KSo= diff --git a/pkg/services/grafana-apiserver/log.go b/pkg/services/grafana-apiserver/log.go index 2f2d137b9ca..ff1e6705565 100644 --- a/pkg/services/grafana-apiserver/log.go +++ b/pkg/services/grafana-apiserver/log.go @@ -10,11 +10,12 @@ import ( var _ logr.LogSink = (*logAdapter)(nil) type logAdapter struct { - log log.Logger + level int + log log.Logger } -func newLogAdapter() *logAdapter { - return &logAdapter{log: log.New("k8s.apiserver")} +func newLogAdapter(level int) *logAdapter { + return &logAdapter{log: log.New("grafana-apiserver"), level: level} } func (l *logAdapter) WithName(name string) logr.LogSink { @@ -28,19 +29,21 @@ func (l *logAdapter) WithValues(keysAndValues ...any) logr.LogSink { } func (l *logAdapter) Init(_ logr.RuntimeInfo) { - // TODO: shrug emoji + // we aren't using the logr library for logging, so this is a no-op } func (l *logAdapter) Enabled(level int) bool { - return level <= 5 + return level <= l.level } func (l *logAdapter) Info(level int, msg string, keysAndValues ...any) { msg = strings.TrimSpace(msg) - if level < 1 { + // kubernetes uses level 0 for critical messages, so map that to Info + if level == 0 { l.log.Info(msg, keysAndValues...) return } + // every other level is mapped to Debug l.log.Debug(msg, keysAndValues...) } diff --git a/pkg/services/grafana-apiserver/service.go b/pkg/services/grafana-apiserver/service.go index ea5fe1ad186..a4ff8469493 100644 --- a/pkg/services/grafana-apiserver/service.go +++ b/pkg/services/grafana-apiserver/service.go @@ -91,10 +91,11 @@ type RestConfigProvider interface { type service struct { *services.BasicService - restConfig *clientrest.Config - etcd_servers []string + restConfig *clientrest.Config + etcdServers []string enabled bool + logLevel int dataPath string stopCh chan struct{} stoppedCh chan error @@ -112,13 +113,14 @@ func ProvideService( authz authorizer.Authorizer, ) (*service, error) { s := &service{ - etcd_servers: cfg.SectionWithEnvOverrides("grafana-apiserver").Key("etcd_servers").Strings(","), - enabled: cfg.IsFeatureToggleEnabled(featuremgmt.FlagGrafanaAPIServer), - rr: rr, - dataPath: path.Join(cfg.DataPath, "k8s"), - stopCh: make(chan struct{}), - builders: []APIGroupBuilder{}, - authorizer: authz, + logLevel: cfg.SectionWithEnvOverrides("grafana-apiserver").Key("log_level").MustInt(10), + etcdServers: cfg.SectionWithEnvOverrides("grafana-apiserver").Key("etcd_servers").Strings(","), + enabled: cfg.IsFeatureToggleEnabled(featuremgmt.FlagGrafanaAPIServer), + rr: rr, + dataPath: path.Join(cfg.DataPath, "k8s"), + stopCh: make(chan struct{}), + builders: []APIGroupBuilder{}, + authorizer: authz, } // This will be used when running as a dskit service @@ -171,15 +173,14 @@ func (s *service) RegisterAPI(builder APIGroupBuilder) { } func (s *service) start(ctx context.Context) error { - logger := logr.New(newLogAdapter()) - logger.V(9) + logger := logr.New(newLogAdapter(s.logLevel)) klog.SetLoggerWithOptions(logger, klog.ContextualLogger(true)) o := options.NewRecommendedOptions("", unstructured.UnstructuredJSONScheme) o.SecureServing.BindPort = 6443 o.Authentication.RemoteKubeConfigFileOptional = true o.Authorization.RemoteKubeConfigFileOptional = true - o.Etcd.StorageConfig.Transport.ServerList = s.etcd_servers + o.Etcd.StorageConfig.Transport.ServerList = s.etcdServers o.Admission = nil o.CoreAPI = nil