mirror of
https://github.com/prometheus-operator/prometheus-operator.git
synced 2025-04-21 03:38:43 +00:00
chore: refactor logger and eventrecorder creations (#6225)
Signed-off-by: Simon Pasquier <spasquie@redhat.com>
This commit is contained in:
parent
0502dfbb77
commit
34836082f8
6 changed files with 36 additions and 44 deletions
cmd/operator
pkg
alertmanager
operator
prometheus
thanos
|
@ -254,11 +254,13 @@ func run(fs *flag.FlagSet) int {
|
|||
cancel()
|
||||
return 1
|
||||
}
|
||||
|
||||
if !canEmitEvents {
|
||||
for _, reason := range reasons {
|
||||
level.Warn(logger).Log("msg", "missing permission to emit events", "reason", reason)
|
||||
}
|
||||
}
|
||||
eventRecorderFactory := operator.NewEventRecorderFactory(canEmitEvents)
|
||||
|
||||
scrapeConfigSupported, err := checkPrerequisites(
|
||||
ctx,
|
||||
|
@ -280,7 +282,7 @@ func run(fs *flag.FlagSet) int {
|
|||
return 1
|
||||
}
|
||||
|
||||
po, err := prometheuscontroller.New(ctx, restConfig, cfg, log.With(logger, "component", prometheuscontroller.ControllerName), r, scrapeConfigSupported, canReadStorageClass, canEmitEvents)
|
||||
po, err := prometheuscontroller.New(ctx, restConfig, cfg, logger, r, scrapeConfigSupported, canReadStorageClass, eventRecorderFactory)
|
||||
if err != nil {
|
||||
level.Error(logger).Log("msg", "instantiating prometheus controller failed", "err", err)
|
||||
cancel()
|
||||
|
@ -315,7 +317,7 @@ func run(fs *flag.FlagSet) int {
|
|||
|
||||
var pao *prometheusagentcontroller.Operator
|
||||
if prometheusAgentSupported {
|
||||
pao, err = prometheusagentcontroller.New(ctx, restConfig, cfg, log.With(logger, "component", prometheusagentcontroller.ControllerName), r, scrapeConfigSupported, canReadStorageClass, canEmitEvents)
|
||||
pao, err = prometheusagentcontroller.New(ctx, restConfig, cfg, logger, r, scrapeConfigSupported, canReadStorageClass, eventRecorderFactory)
|
||||
if err != nil {
|
||||
level.Error(logger).Log("msg", "instantiating prometheus-agent controller failed", "err", err)
|
||||
cancel()
|
||||
|
@ -323,14 +325,14 @@ func run(fs *flag.FlagSet) int {
|
|||
}
|
||||
}
|
||||
|
||||
ao, err := alertmanagercontroller.New(ctx, restConfig, cfg, log.With(logger, "component", alertmanagercontroller.ControllerName), r, canReadStorageClass, canEmitEvents)
|
||||
ao, err := alertmanagercontroller.New(ctx, restConfig, cfg, logger, r, canReadStorageClass, eventRecorderFactory)
|
||||
if err != nil {
|
||||
level.Error(logger).Log("msg", "instantiating alertmanager controller failed", "err", err)
|
||||
cancel()
|
||||
return 1
|
||||
}
|
||||
|
||||
to, err := thanoscontroller.New(ctx, restConfig, cfg, log.With(logger, "component", thanoscontroller.ControllerName), r, canReadStorageClass, canEmitEvents)
|
||||
to, err := thanoscontroller.New(ctx, restConfig, cfg, logger, r, canReadStorageClass, eventRecorderFactory)
|
||||
if err != nil {
|
||||
level.Error(logger).Log("msg", "instantiating thanos controller failed", "err", err)
|
||||
cancel()
|
||||
|
|
|
@ -58,7 +58,7 @@ import (
|
|||
|
||||
const (
|
||||
resyncPeriod = 5 * time.Minute
|
||||
ControllerName = "alertmanager-controller"
|
||||
controllerName = "alertmanager-controller"
|
||||
)
|
||||
|
||||
// Config defines the operator's parameters for the Alertmanager controller.
|
||||
|
@ -105,7 +105,9 @@ type Operator struct {
|
|||
}
|
||||
|
||||
// New creates a new controller.
|
||||
func New(ctx context.Context, restConfig *rest.Config, c operator.Config, logger log.Logger, r prometheus.Registerer, canReadStorageClass, canEmitEvents bool) (*Operator, error) {
|
||||
func New(ctx context.Context, restConfig *rest.Config, c operator.Config, logger log.Logger, r prometheus.Registerer, canReadStorageClass bool, erf operator.EventRecorderFactory) (*Operator, error) {
|
||||
logger = log.With(logger, "component", controllerName)
|
||||
|
||||
client, err := kubernetes.NewForConfig(restConfig)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("instantiating kubernetes client failed: %w", err)
|
||||
|
@ -124,11 +126,6 @@ func New(ctx context.Context, restConfig *rest.Config, c operator.Config, logger
|
|||
// All the metrics exposed by the controller get the controller="alertmanager" label.
|
||||
r = prometheus.WrapRegistererWith(prometheus.Labels{"controller": "alertmanager"}, r)
|
||||
|
||||
var eventsClient kubernetes.Interface
|
||||
if canEmitEvents {
|
||||
eventsClient = client
|
||||
}
|
||||
|
||||
o := &Operator{
|
||||
kclient: client,
|
||||
mdClient: mdClient,
|
||||
|
@ -140,7 +137,7 @@ func New(ctx context.Context, restConfig *rest.Config, c operator.Config, logger
|
|||
|
||||
metrics: operator.NewMetrics(r),
|
||||
reconciliations: &operator.ReconciliationTracker{},
|
||||
eventRecorder: operator.NewEventRecorder(eventsClient, ControllerName),
|
||||
eventRecorder: erf(client, controllerName),
|
||||
canReadStorageClass: canReadStorageClass,
|
||||
|
||||
config: Config{
|
||||
|
|
|
@ -268,17 +268,19 @@ func NewMetrics(r prometheus.Registerer) *Metrics {
|
|||
return &m
|
||||
}
|
||||
|
||||
func NewEventRecorder(client kubernetes.Interface, component string) record.EventRecorder {
|
||||
type EventRecorderFactory func(client kubernetes.Interface, component string) record.EventRecorder
|
||||
|
||||
eventBroadcaster := record.NewBroadcaster()
|
||||
eventBroadcaster.StartStructuredLogging(0)
|
||||
func NewEventRecorderFactory(emitEvents bool) EventRecorderFactory {
|
||||
return func(client kubernetes.Interface, component string) record.EventRecorder {
|
||||
eventBroadcaster := record.NewBroadcaster()
|
||||
eventBroadcaster.StartStructuredLogging(0)
|
||||
|
||||
// Client can be nil in tests or when the operator doesn't have permissions to create events.
|
||||
if client != nil {
|
||||
eventBroadcaster.StartRecordingToSink(&typedv1.EventSinkImpl{Interface: client.CoreV1().Events("")})
|
||||
if emitEvents {
|
||||
eventBroadcaster.StartRecordingToSink(&typedv1.EventSinkImpl{Interface: client.CoreV1().Events("")})
|
||||
}
|
||||
|
||||
return eventBroadcaster.NewRecorder(scheme.Scheme, v1.EventSource{Component: component})
|
||||
}
|
||||
|
||||
return eventBroadcaster.NewRecorder(scheme.Scheme, v1.EventSource{Component: component})
|
||||
}
|
||||
|
||||
// StsDeleteCreateCounter returns a counter to track statefulset's recreations.
|
||||
|
|
|
@ -52,7 +52,7 @@ import (
|
|||
|
||||
const (
|
||||
resyncPeriod = 5 * time.Minute
|
||||
ControllerName = "prometheusagent-controller"
|
||||
controllerName = "prometheusagent-controller"
|
||||
)
|
||||
|
||||
// Operator manages life cycle of Prometheus agent deployments and
|
||||
|
@ -93,7 +93,9 @@ type Operator struct {
|
|||
}
|
||||
|
||||
// New creates a new controller.
|
||||
func New(ctx context.Context, restConfig *rest.Config, c operator.Config, logger log.Logger, r prometheus.Registerer, scrapeConfigSupported, canReadStorageClass, canEmitEvents bool) (*Operator, error) {
|
||||
func New(ctx context.Context, restConfig *rest.Config, c operator.Config, logger log.Logger, r prometheus.Registerer, scrapeConfigSupported, canReadStorageClass bool, erf operator.EventRecorderFactory) (*Operator, error) {
|
||||
logger = log.With(logger, "component", controllerName)
|
||||
|
||||
client, err := kubernetes.NewForConfig(restConfig)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("instantiating kubernetes client failed: %w", err)
|
||||
|
@ -112,11 +114,6 @@ func New(ctx context.Context, restConfig *rest.Config, c operator.Config, logger
|
|||
// All the metrics exposed by the controller get the controller="prometheus-agent" label.
|
||||
r = prometheus.WrapRegistererWith(prometheus.Labels{"controller": "prometheus-agent"}, r)
|
||||
|
||||
var eventsClient kubernetes.Interface
|
||||
if canEmitEvents {
|
||||
eventsClient = client
|
||||
}
|
||||
|
||||
o := &Operator{
|
||||
kclient: client,
|
||||
mdClient: mdClient,
|
||||
|
@ -134,7 +131,7 @@ func New(ctx context.Context, restConfig *rest.Config, c operator.Config, logger
|
|||
reconciliations: &operator.ReconciliationTracker{},
|
||||
scrapeConfigSupported: scrapeConfigSupported,
|
||||
canReadStorageClass: canReadStorageClass,
|
||||
eventRecorder: operator.NewEventRecorder(eventsClient, ControllerName),
|
||||
eventRecorder: erf(client, controllerName),
|
||||
}
|
||||
o.metrics.MustRegister(
|
||||
o.reconciliations,
|
||||
|
|
|
@ -52,7 +52,7 @@ import (
|
|||
|
||||
const (
|
||||
resyncPeriod = 5 * time.Minute
|
||||
ControllerName = "prometheus-controller"
|
||||
controllerName = "prometheus-controller"
|
||||
)
|
||||
|
||||
// Operator manages life cycle of Prometheus deployments and
|
||||
|
@ -93,7 +93,9 @@ type Operator struct {
|
|||
}
|
||||
|
||||
// New creates a new controller.
|
||||
func New(ctx context.Context, restConfig *rest.Config, c operator.Config, logger log.Logger, r prometheus.Registerer, scrapeConfigSupported, canReadStorageClass, canEmitEvents bool) (*Operator, error) {
|
||||
func New(ctx context.Context, restConfig *rest.Config, c operator.Config, logger log.Logger, r prometheus.Registerer, scrapeConfigSupported, canReadStorageClass bool, erf operator.EventRecorderFactory) (*Operator, error) {
|
||||
logger = log.With(logger, "component", controllerName)
|
||||
|
||||
client, err := kubernetes.NewForConfig(restConfig)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("instantiating kubernetes client failed: %w", err)
|
||||
|
@ -112,11 +114,6 @@ func New(ctx context.Context, restConfig *rest.Config, c operator.Config, logger
|
|||
// All the metrics exposed by the controller get the controller="prometheus" label.
|
||||
r = prometheus.WrapRegistererWith(prometheus.Labels{"controller": "prometheus"}, r)
|
||||
|
||||
var eventsClient kubernetes.Interface
|
||||
if canEmitEvents {
|
||||
eventsClient = client
|
||||
}
|
||||
|
||||
o := &Operator{
|
||||
kclient: client,
|
||||
mdClient: mdClient,
|
||||
|
@ -138,7 +135,7 @@ func New(ctx context.Context, restConfig *rest.Config, c operator.Config, logger
|
|||
scrapeConfigSupported: scrapeConfigSupported,
|
||||
canReadStorageClass: canReadStorageClass,
|
||||
|
||||
eventRecorder: operator.NewEventRecorder(eventsClient, ControllerName),
|
||||
eventRecorder: erf(client, controllerName),
|
||||
}
|
||||
o.metrics.MustRegister(o.reconciliations)
|
||||
|
||||
|
|
|
@ -48,7 +48,7 @@ import (
|
|||
const (
|
||||
resyncPeriod = 5 * time.Minute
|
||||
thanosRulerLabel = "thanos-ruler"
|
||||
ControllerName = "thanos-controller"
|
||||
controllerName = "thanos-controller"
|
||||
)
|
||||
|
||||
// Operator manages life cycle of Thanos deployments and
|
||||
|
@ -91,7 +91,9 @@ type Config struct {
|
|||
}
|
||||
|
||||
// New creates a new controller.
|
||||
func New(ctx context.Context, restConfig *rest.Config, c operator.Config, logger log.Logger, r prometheus.Registerer, canReadStorageClass, canEmitEvents bool) (*Operator, error) {
|
||||
func New(ctx context.Context, restConfig *rest.Config, c operator.Config, logger log.Logger, r prometheus.Registerer, canReadStorageClass bool, erf operator.EventRecorderFactory) (*Operator, error) {
|
||||
logger = log.With(logger, "component", controllerName)
|
||||
|
||||
client, err := kubernetes.NewForConfig(restConfig)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("instantiating kubernetes client failed: %w", err)
|
||||
|
@ -110,11 +112,6 @@ func New(ctx context.Context, restConfig *rest.Config, c operator.Config, logger
|
|||
// All the metrics exposed by the controller get the controller="thanos" label.
|
||||
r = prometheus.WrapRegistererWith(prometheus.Labels{"controller": "thanos"}, r)
|
||||
|
||||
var eventsClient kubernetes.Interface
|
||||
if canEmitEvents {
|
||||
eventsClient = client
|
||||
}
|
||||
|
||||
o := &Operator{
|
||||
kclient: client,
|
||||
mdClient: mdClient,
|
||||
|
@ -122,7 +119,7 @@ func New(ctx context.Context, restConfig *rest.Config, c operator.Config, logger
|
|||
logger: logger,
|
||||
accessor: operator.NewAccessor(logger),
|
||||
metrics: operator.NewMetrics(r),
|
||||
eventRecorder: operator.NewEventRecorder(eventsClient, ControllerName),
|
||||
eventRecorder: erf(client, controllerName),
|
||||
reconciliations: &operator.ReconciliationTracker{},
|
||||
canReadStorageClass: canReadStorageClass,
|
||||
config: Config{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue