1
0
Fork 0
mirror of https://github.com/prometheus-operator/prometheus-operator.git synced 2025-04-21 03:38:43 +00:00

replace goKitLogger in rules and server

This commit is contained in:
perebaj 2024-08-29 12:17:31 -03:00
parent 5da3c988dd
commit 47ae005e7e
7 changed files with 48 additions and 78 deletions
cmd
admission-webhook
operator
pkg

View file

@ -64,14 +64,6 @@ func main() {
stdlog.Fatal(err)
}
// We're currently migrating our logging library from go-kit to slog.
// The go-kit logger is being removed in small PRs. For now, we are creating 2 loggers to avoid breaking changes and
// to have a smooth transition.
goKitLogger, err := logging.NewLogger(logConfig)
if err != nil {
stdlog.Fatal(err)
}
goruntime.SetMaxProcs(logger)
goruntime.SetMemLimit(logger, memlimitRatio)
@ -96,7 +88,7 @@ func main() {
w.Write([]byte(`{"status":"up"}`))
})
srv, err := server.NewServer(goKitLogger, &serverConfig, mux)
srv, err := server.NewServer(logger, &serverConfig, mux)
if err != nil {
logger.Error("failed to create web server", "err", err)
os.Exit(1)

View file

@ -382,7 +382,7 @@ func run(fs *flag.FlagSet) int {
var po *prometheuscontroller.Operator
if prometheusSupported {
po, err = prometheuscontroller.New(ctx, restConfig, cfg, goKitLogger, logger, r, promControllerOptions...)
po, err = prometheuscontroller.New(ctx, restConfig, cfg, logger, r, promControllerOptions...)
if err != nil {
logger.Error("instantiating prometheus controller failed", "err", err)
cancel()
@ -444,7 +444,7 @@ func run(fs *flag.FlagSet) int {
var pao *prometheusagentcontroller.Operator
if prometheusAgentSupported {
pao, err = prometheusagentcontroller.New(ctx, restConfig, cfg, goKitLogger, logger, r, promAgentControllerOptions...)
pao, err = prometheusagentcontroller.New(ctx, restConfig, cfg, logger, r, promAgentControllerOptions...)
if err != nil {
logger.Error("instantiating prometheus-agent controller failed", "err", err)
cancel()
@ -516,7 +516,7 @@ func run(fs *flag.FlagSet) int {
var to *thanoscontroller.Operator
if thanosRulerSupported {
to, err = thanoscontroller.New(ctx, restConfig, cfg, goKitLogger, logger, r, thanosControllerOptions...)
to, err = thanoscontroller.New(ctx, restConfig, cfg, logger, r, thanosControllerOptions...)
if err != nil {
logger.Error("instantiating thanos controller failed", "err", err)
cancel()
@ -575,7 +575,7 @@ func run(fs *flag.FlagSet) int {
w.WriteHeader(http.StatusOK)
}))
srv, err := server.NewServer(goKitLogger, &serverConfig, mux)
srv, err := server.NewServer(logger, &serverConfig, mux)
if err != nil {
logger.Error("failed to create web server", "err", err)
cancel()

View file

@ -22,7 +22,6 @@ import (
"strings"
"time"
"github.com/go-kit/log"
"github.com/mitchellh/hashstructure"
"github.com/prometheus/client_golang/prometheus"
appsv1 "k8s.io/api/apps/v1"
@ -66,11 +65,8 @@ type Operator struct {
mclient monitoringclient.Interface
logger *slog.Logger
// We're currently migrating our logging library from go-kit to slog.
// The go-kit logger is being removed in small PRs. For now, we are creating 2 loggers to avoid breaking changes and
// to have a smooth transition.
goKitLogger log.Logger
accessor *operator.Accessor
accessor *operator.Accessor
controllerID string
@ -130,7 +126,7 @@ func WithStorageClassValidation() ControllerOption {
}
// New creates a new controller.
func New(ctx context.Context, restConfig *rest.Config, c operator.Config, goKitLogger log.Logger, logger *slog.Logger, r prometheus.Registerer, options ...ControllerOption) (*Operator, error) {
func New(ctx context.Context, restConfig *rest.Config, c operator.Config, logger *slog.Logger, r prometheus.Registerer, options ...ControllerOption) (*Operator, error) {
logger = logger.With("component", controllerName)
client, err := kubernetes.NewForConfig(restConfig)
@ -152,11 +148,10 @@ func New(ctx context.Context, restConfig *rest.Config, c operator.Config, goKitL
r = prometheus.WrapRegistererWith(prometheus.Labels{"controller": "prometheus-agent"}, r)
o := &Operator{
kclient: client,
mdClient: mdClient,
mclient: mclient,
logger: logger,
goKitLogger: goKitLogger,
kclient: client,
mdClient: mdClient,
mclient: mclient,
logger: logger,
config: prompkg.Config{
LocalHost: c.LocalHost,
ReloaderConfig: c.ReloaderConfig,

View file

@ -23,7 +23,6 @@ import (
"strings"
"time"
"github.com/go-kit/log"
"github.com/mitchellh/hashstructure"
"github.com/prometheus/client_golang/prometheus"
appsv1 "k8s.io/api/apps/v1"
@ -66,13 +65,9 @@ type Operator struct {
mdClient metadata.Interface
mclient monitoringclient.Interface
// // We're currently migrating our logging library from go-kit to slog.
// The go-kit logger is being removed in small PRs. For now, we are creating 2 loggers to avoid breaking changes and
// to have a smooth transition.
goKitLogger log.Logger
logger *slog.Logger
accessor *operator.Accessor
config prompkg.Config
logger *slog.Logger
accessor *operator.Accessor
config prompkg.Config
controllerID string
@ -127,8 +122,7 @@ func WithStorageClassValidation() ControllerOption {
}
// New creates a new controller.
func New(ctx context.Context, restConfig *rest.Config, c operator.Config, goKitLogger log.Logger, logger *slog.Logger, r prometheus.Registerer, opts ...ControllerOption) (*Operator, error) {
goKitLogger = log.With(goKitLogger, "component", controllerName)
func New(ctx context.Context, restConfig *rest.Config, c operator.Config, logger *slog.Logger, r prometheus.Registerer, opts ...ControllerOption) (*Operator, error) {
logger = logger.With("component", controllerName)
client, err := kubernetes.NewForConfig(restConfig)
@ -150,12 +144,11 @@ func New(ctx context.Context, restConfig *rest.Config, c operator.Config, goKitL
r = prometheus.WrapRegistererWith(prometheus.Labels{"controller": "prometheus"}, r)
o := &Operator{
kclient: client,
mdClient: mdClient,
mclient: mclient,
goKitLogger: goKitLogger,
logger: logger,
accessor: operator.NewAccessor(logger),
kclient: client,
mdClient: mdClient,
mclient: mclient,
logger: logger,
accessor: operator.NewAccessor(logger),
config: prompkg.Config{
LocalHost: c.LocalHost,

View file

@ -21,7 +21,6 @@ import (
"sort"
"strings"
"github.com/go-kit/log/level"
v1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@ -96,8 +95,7 @@ func (c *Operator) createOrUpdateRuleConfigMaps(ctx context.Context, p *monitori
equal := reflect.DeepEqual(newRules, currentRules)
if equal && len(currentConfigMaps) != 0 {
level.Debug(c.goKitLogger).Log(
"msg", "no PrometheusRule changes",
c.logger.Debug("no PrometheusRule changes",
"namespace", p.Namespace,
"prometheus", p.Name,
)
@ -124,8 +122,7 @@ func (c *Operator) createOrUpdateRuleConfigMaps(ctx context.Context, p *monitori
}
if len(currentConfigMaps) == 0 {
level.Debug(c.goKitLogger).Log(
"msg", "no PrometheusRule configmap found, creating new one",
c.logger.Debug("no PrometheusRule configmap found, creating new one",
"namespace", p.Namespace,
"prometheus", p.Name,
)
@ -147,8 +144,7 @@ func (c *Operator) createOrUpdateRuleConfigMaps(ctx context.Context, p *monitori
}
}
level.Debug(c.goKitLogger).Log(
"msg", "updating PrometheusRule",
c.logger.Debug("updating PrometheusRule",
"namespace", p.Namespace,
"prometheus", p.Name,
)
@ -184,8 +180,7 @@ func (c *Operator) selectRuleNamespaces(p *monitoringv1.Prometheus) ([]string, e
}
}
level.Debug(c.goKitLogger).Log(
"msg", "selected RuleNamespaces",
c.logger.Debug("selected RuleNamespaces",
"namespaces", strings.Join(namespaces, ","),
"namespace", p.Namespace,
"prometheus", p.Name,

View file

@ -19,15 +19,14 @@ import (
"crypto/tls"
"flag"
"fmt"
stdlog "log"
"log/slog"
"math"
"net"
"net/http"
"os"
"path/filepath"
"time"
"github.com/go-kit/log"
"github.com/go-kit/log/level"
"k8s.io/apiserver/pkg/server/dynamiccertificates"
kflag "k8s.io/component-base/cli/flag"
@ -105,9 +104,14 @@ type TLSConfig struct {
// Convert returns a *tls.Config from the given TLSConfig.
// It returns nil when TLS isn't enabled/configured.
func (tc *TLSConfig) Convert(logger log.Logger) (*tls.Config, error) {
func (tc *TLSConfig) Convert(logger *slog.Logger) (*tls.Config, error) {
if logger == nil {
logger = log.NewNopLogger()
logger = slog.New(slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{
// slog level math.MaxInt means no logging
// We would like to use the slog buil-in No-op level once it is available
// More: https://github.com/golang/go/issues/62005
Level: slog.Level(math.MaxInt),
}))
}
if !tc.Enabled {
@ -120,7 +124,7 @@ func (tc *TLSConfig) Convert(logger log.Logger) (*tls.Config, error) {
}
// Disable TLS.
level.Warn(logger).Log("msg", "server key and certificate not provided, TLS disabled")
logger.Warn("server key and certificate not provided, TLS disabled")
return nil, nil
}
@ -157,15 +161,15 @@ func (tc *TLSConfig) Convert(logger log.Logger) (*tls.Config, error) {
info, err := os.Stat(tc.ClientCAFile)
switch {
case err != nil:
level.Warn(logger).Log("msg", "server TLS client verification disabled", "client_ca_file", tc.ClientCAFile, "err", err)
logger.Warn("server TLS client verification disabled", "client_ca_file", tc.ClientCAFile, "err", err)
case !info.Mode().IsRegular():
level.Warn(logger).Log("msg", "server TLS client verification disabled", "client_ca_file", tc.ClientCAFile, "file_mode", info.Mode().String())
logger.Warn("server TLS client verification disabled", "client_ca_file", tc.ClientCAFile, "file_mode", info.Mode().String())
default:
// The client CA content will be checked by the cert controller.
tlsCfg.ClientAuth = tls.RequireAndVerifyClientCert
level.Info(logger).Log("msg", "server TLS client verification enabled", "client_ca_file", tc.ClientCAFile)
logger.Info("server TLS client verification enabled", "client_ca_file", tc.ClientCAFile)
}
return tlsCfg, nil
@ -173,7 +177,7 @@ func (tc *TLSConfig) Convert(logger log.Logger) (*tls.Config, error) {
// Server is a web server.
type Server struct {
logger log.Logger
logger *slog.Logger
listener net.Listener
srv *http.Server
@ -183,7 +187,7 @@ type Server struct {
}
// NewServer initializes a web server with the given handler (typically an http.MuxServe).
func NewServer(logger log.Logger, c *Config, handler http.Handler) (*Server, error) {
func NewServer(logger *slog.Logger, c *Config, handler http.Handler) (*Server, error) {
listener, err := net.Listen("tcp", c.ListenAddress)
if err != nil {
return nil, err
@ -268,10 +272,7 @@ func NewServer(logger log.Logger, c *Config, handler http.Handler) (*Server, err
TLSConfig: tlsConfig,
ReadHeaderTimeout: 30 * time.Second,
ReadTimeout: 30 * time.Second,
// use flags on standard logger to align with base logger and get consistent parsed fields form adapter:
// use shortfile flag to get proper 'caller' field (avoid being wrongly parsed/extracted from message)
// and no datetime related flag to keep 'ts' field from base logger (with controlled format)
ErrorLog: stdlog.New(log.NewStdlibAdapter(logger), "", stdlog.Lshortfile),
ErrorLog: slog.NewLogLogger(logger.Handler(), slog.LevelError),
}
if !c.EnableHTTP2 {
@ -295,9 +296,9 @@ func (s *Server) Serve(ctx context.Context) error {
}
if s.srv.TLSConfig == nil {
level.Info(s.logger).Log("msg", "starting insecure server", "address", s.listener.Addr().String())
s.logger.Info("starting insecure server", "address", s.listener.Addr().String())
} else {
level.Info(s.logger).Log("msg", "starting secure server", "address", s.listener.Addr().String(), "http2", s.cfg.EnableHTTP2)
s.logger.Info("starting secure server", "address", s.listener.Addr().String(), "http2", s.cfg.EnableHTTP2)
}
if err := s.srv.Serve(s.listener); err != http.ErrServerClosed {
@ -309,6 +310,6 @@ func (s *Server) Serve(ctx context.Context) error {
// Shutdown closes gracefully all active connections.
func (s *Server) Shutdown(ctx context.Context) error {
level.Info(s.logger).Log("msg", "shutting down web server")
s.logger.Info("shutting down web server")
return s.srv.Shutdown(ctx)
}

View file

@ -21,7 +21,6 @@ import (
"strings"
"time"
"github.com/go-kit/log"
"github.com/mitchellh/hashstructure"
"github.com/prometheus/client_golang/prometheus"
appsv1 "k8s.io/api/apps/v1"
@ -59,12 +58,9 @@ type Operator struct {
kclient kubernetes.Interface
mdClient metadata.Interface
mclient monitoringclient.Interface
// We're currently migrating our logging library from go-kit to slog.
// The go-kit logger is being removed in small PRs. For now, we are creating 2 loggers to avoid breaking changes and
// to have a smooth transition.
goKitLogger log.Logger
logger *slog.Logger
accessor *operator.Accessor
logger *slog.Logger
accessor *operator.Accessor
controllerID string
@ -109,8 +105,7 @@ func WithStorageClassValidation() ControllerOption {
}
// New creates a new controller.
func New(ctx context.Context, restConfig *rest.Config, c operator.Config, goKitLogger log.Logger, logger *slog.Logger, r prometheus.Registerer, options ...ControllerOption) (*Operator, error) {
goKitLogger = log.With(goKitLogger, "component", controllerName)
func New(ctx context.Context, restConfig *rest.Config, c operator.Config, logger *slog.Logger, r prometheus.Registerer, options ...ControllerOption) (*Operator, error) {
logger = logger.With("component", controllerName)
client, err := kubernetes.NewForConfig(restConfig)
@ -135,7 +130,6 @@ func New(ctx context.Context, restConfig *rest.Config, c operator.Config, goKitL
kclient: client,
mdClient: mdClient,
mclient: mclient,
goKitLogger: goKitLogger,
logger: logger,
accessor: operator.NewAccessor(logger),
metrics: operator.NewMetrics(r),