Skip to content

Commit e16a8e6

Browse files
authored
Merge pull request #6439 from nihar4276/metrics-adaptor-json-logging
JSON logging support for Karmada Metrics Adapter component
2 parents 2af742b + eb3fed6 commit e16a8e6

File tree

3 files changed

+34
-18
lines changed

3 files changed

+34
-18
lines changed

artifacts/deploy/karmada-metrics-adapter.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ spec:
4646
- --audit-log-maxbackup=0
4747
- --tls-min-version=VersionTLS13
4848
- --bind-address=$(POD_IP)
49+
- --logging-format=json
4950
readinessProbe:
5051
httpGet:
5152
path: /readyz

cmd/metrics-adapter/app/metrics-adapter.go

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,14 @@ import (
2222

2323
"github.com/spf13/cobra"
2424
cliflag "k8s.io/component-base/cli/flag"
25+
"k8s.io/component-base/logs"
26+
logsv1 "k8s.io/component-base/logs/api/v1"
2527
"k8s.io/component-base/term"
28+
"k8s.io/klog/v2"
29+
controllerruntime "sigs.k8s.io/controller-runtime"
2630

2731
"github.com/karmada-io/karmada/cmd/metrics-adapter/app/options"
32+
"github.com/karmada-io/karmada/pkg/features"
2833
"github.com/karmada-io/karmada/pkg/sharedcli"
2934
"github.com/karmada-io/karmada/pkg/sharedcli/klogflag"
3035
"github.com/karmada-io/karmada/pkg/util/names"
@@ -33,7 +38,17 @@ import (
3338

3439
// NewMetricsAdapterCommand creates a *cobra.Command object with default parameters
3540
func NewMetricsAdapterCommand(ctx context.Context) *cobra.Command {
41+
logConfig := logsv1.NewLoggingConfiguration()
42+
fss := cliflag.NamedFlagSets{}
43+
44+
logsFlagSet := fss.FlagSet("logs")
45+
logs.AddFlags(logsFlagSet, logs.SkipLoggingConfigurationFlags())
46+
logsv1.AddFlags(logConfig, logsFlagSet)
47+
klogflag.Add(logsFlagSet)
48+
49+
genericFlagSet := fss.FlagSet("generic")
3650
opts := options.NewOptions()
51+
opts.AddFlags(genericFlagSet)
3752

3853
cmd := &cobra.Command{
3954
Use: names.KarmadaMetricsAdapterComponentName,
@@ -50,6 +65,19 @@ func NewMetricsAdapterCommand(ctx context.Context) *cobra.Command {
5065
}
5166
return nil
5267
},
68+
PersistentPreRunE: func(_ *cobra.Command, _ []string) error {
69+
if err := logsv1.ValidateAndApply(logConfig, features.FeatureGate); err != nil {
70+
return err
71+
}
72+
logs.InitLogs()
73+
// Starting from version 0.15.0, controller-runtime expects its consumers to set a logger through log.SetLogger.
74+
// If SetLogger is not called within the first 30 seconds of a binaries lifetime, it will get
75+
// set to a NullLogSink and report an error. Here's to silence the "log.SetLogger(...) was never called; logs will not be displayed" error
76+
// by setting a logger through log.SetLogger.
77+
// More info refer to: https://github.com/karmada-io/karmada/pull/4885.
78+
controllerruntime.SetLogger(klog.Background())
79+
return nil
80+
},
5381
Args: func(cmd *cobra.Command, args []string) error {
5482
for _, arg := range args {
5583
if len(arg) > 0 {
@@ -60,15 +88,6 @@ func NewMetricsAdapterCommand(ctx context.Context) *cobra.Command {
6088
},
6189
}
6290

63-
fss := cliflag.NamedFlagSets{}
64-
65-
genericFlagSet := fss.FlagSet("generic")
66-
opts.AddFlags(genericFlagSet)
67-
68-
// Set klog flags
69-
logsFlagSet := fss.FlagSet("logs")
70-
klogflag.Add(logsFlagSet)
71-
7291
cmd.AddCommand(sharedcommand.NewCmdVersion(names.KarmadaMetricsAdapterComponentName))
7392
cmd.Flags().AddFlagSet(genericFlagSet)
7493
cmd.Flags().AddFlagSet(logsFlagSet)

cmd/metrics-adapter/main.go

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,22 +20,18 @@ import (
2020
"os"
2121

2222
"k8s.io/component-base/cli"
23+
"k8s.io/component-base/logs"
2324
_ "k8s.io/component-base/logs/json/register" // for JSON log format registration
24-
"k8s.io/klog/v2"
2525
controllerruntime "sigs.k8s.io/controller-runtime"
2626

2727
"github.com/karmada-io/karmada/cmd/metrics-adapter/app"
2828
)
2929

3030
func main() {
3131
ctx := controllerruntime.SetupSignalHandler()
32-
// Starting from version 0.15.0, controller-runtime expects its consumers to set a logger through log.SetLogger.
33-
// If SetLogger is not called within the first 30 seconds of a binaries lifetime, it will get
34-
// set to a NullLogSink and report an error. Here's to silence the "log.SetLogger(...) was never called; logs will not be displayed" error
35-
// by setting a logger through log.SetLogger.
36-
// More info refer to: https://github.com/karmada-io/karmada/pull/4885.
37-
controllerruntime.SetLogger(klog.Background())
3832
cmd := app.NewMetricsAdapterCommand(ctx)
39-
code := cli.Run(cmd)
40-
os.Exit(code)
33+
exitCode := cli.Run(cmd)
34+
// Ensure any buffered log entries are flushed
35+
logs.FlushLogs()
36+
os.Exit(exitCode)
4137
}

0 commit comments

Comments
 (0)