Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
74 commits
Select commit Hold shift + click to select a range
a21626f
feat: add shared klog bootstrap
0x0034 Apr 13, 2026
6efc41e
refactor: migrate core runtime logs to klog
0x0034 Apr 13, 2026
8eea665
refactor: normalize input init logging
0x0034 Apr 14, 2026
fccc075
docs: add klog migration specs and plans
0x0034 Apr 14, 2026
448682a
refactor: migrate config api and parser logs to klog
0x0034 Apr 14, 2026
026cdf8
refactor: migrate ibex and provider logs to klog
0x0034 Apr 14, 2026
bbbc562
refactor: migrate agent module logs to klog
0x0034 Apr 14, 2026
592feb2
refactor: migrate ibex task logs to klog
0x0034 Apr 14, 2026
3cd8bc6
refactor: migrate logs agent logs to klog
0x0034 Apr 14, 2026
1041844
refactor: migrate update logs to klog
0x0034 Apr 14, 2026
7a453a5
refactor: migrate install and vmstat logs to klog
0x0034 Apr 14, 2026
cd2e24a
refactor: migrate simple input logs to klog
0x0034 Apr 14, 2026
52ac4e0
refactor: migrate response input logs to klog
0x0034 Apr 14, 2026
0e073cc
refactor: migrate pkg logging callsites to klog
0x0034 Apr 14, 2026
7c1d37a
refactor: migrate redis and jolokia logs to klog
0x0034 Apr 14, 2026
dce9f6b
refactor: migrate snmp table logs to klog
0x0034 Apr 14, 2026
623a756
refactor: migrate clickhouse logs to klog
0x0034 Apr 14, 2026
d2b1c16
refactor: migrate system and ethtool logs to klog
0x0034 Apr 14, 2026
ec5280a
refactor: migrate haproxy exporter logs to klog
0x0034 Apr 14, 2026
d6da02f
refactor: migrate redis sentinel logs to klog
0x0034 Apr 14, 2026
76772dd
refactor: migrate nsq logs to klog
0x0034 Apr 14, 2026
1ef32ac
refactor: migrate nfsclient logs to klog
0x0034 Apr 14, 2026
ac1207e
refactor: migrate net input logs to klog
0x0034 Apr 14, 2026
64060ca
refactor: migrate diskio logs to klog
0x0034 Apr 14, 2026
827a53f
refactor: migrate prometheus consul logs to klog
0x0034 Apr 14, 2026
ede8bf7
refactor: migrate prometheus scrape logs to klog
0x0034 Apr 14, 2026
31b87af
refactor: migrate nginx upstream check logs to klog
0x0034 Apr 14, 2026
51aa2e3
test: avoid direct stdlog calls in logging tests
0x0034 Apr 14, 2026
412a5ac
refactor: migrate supervisor logs to klog
0x0034 Apr 14, 2026
ad0fe65
refactor: migrate conntrack logs to klog
0x0034 Apr 14, 2026
b7212b9
refactor: migrate core system input logs to klog
0x0034 Apr 14, 2026
a4cee4b
refactor: migrate simple collector logs to klog
0x0034 Apr 14, 2026
dbf0d9c
refactor: migrate filecount and logstash logs to klog
0x0034 Apr 14, 2026
c8b84b3
refactor: migrate gnmi logs to klog
0x0034 Apr 14, 2026
8d670d9
refactor: migrate lightweight input logs to klog
0x0034 Apr 14, 2026
36d1c54
refactor: migrate consul and whois logs to klog
0x0034 Apr 14, 2026
40f71b6
refactor: migrate collector and ldap logs to klog
0x0034 Apr 14, 2026
e95e5fc
refactor: migrate exporter wrapper logs to klog
0x0034 Apr 14, 2026
546efc9
refactor: migrate service discovery input logs to klog
0x0034 Apr 14, 2026
310130d
refactor: migrate network appliance logs to klog
0x0034 Apr 14, 2026
6d8e789
refactor: migrate exec runner logs to klog
0x0034 Apr 14, 2026
a8e1a5a
refactor: migrate storage collector logs to klog
0x0034 Apr 14, 2026
322c202
refactor: migrate gpu collector logs to klog
0x0034 Apr 14, 2026
d5c072a
refactor: migrate system utility logs to klog
0x0034 Apr 14, 2026
c88c197
refactor: migrate runtime helper logs to klog
0x0034 Apr 14, 2026
5fd17cd
refactor: migrate mysql query logs to klog
0x0034 Apr 14, 2026
12918a2
refactor: migrate node exporter logs to klog
0x0034 Apr 14, 2026
20436e1
refactor: migrate ipmi collector logs to klog
0x0034 Apr 14, 2026
71b10ff
refactor: migrate ipmi exporter logs to klog
0x0034 Apr 14, 2026
d6700e9
refactor: migrate mysql connection logs to klog
0x0034 Apr 14, 2026
02a0abd
refactor: migrate mysql and ipmi logs to klog
0x0034 Apr 14, 2026
4540f0c
refactor: migrate node exporter collector logs to klog
0x0034 Apr 14, 2026
c445775
refactor: migrate cloud provider logs to klog
0x0034 Apr 14, 2026
448eebb
refactor: migrate web service logs to klog
0x0034 Apr 14, 2026
7680902
refactor: migrate automation collector logs to klog
0x0034 Apr 14, 2026
74e3d94
refactor: migrate certificate and zookeeper logs to klog
0x0034 Apr 14, 2026
8126bb3
refactor: migrate service endpoint logs to klog
0x0034 Apr 14, 2026
48c645c
refactor: migrate process parser logs to klog
0x0034 Apr 14, 2026
a7a9912
refactor: migrate platform collector logs to klog
0x0034 Apr 14, 2026
9ca5ea5
refactor: migrate host inspection logs to klog
0x0034 Apr 14, 2026
c6fda01
refactor: migrate database and queue logs to klog
0x0034 Apr 14, 2026
ca689a4
refactor: migrate cloud and container logs to klog
0x0034 Apr 14, 2026
630c044
refactor: migrate elasticsearch logs to klog
0x0034 Apr 14, 2026
d93e58a
refactor: migrate dcgm logs to klog
0x0034 Apr 14, 2026
4420965
refactor: migrate service probe logs to klog
0x0034 Apr 14, 2026
7a46afd
refactor: migrate node exporter and xsky logs to klog
0x0034 Apr 14, 2026
fb78166
refactor: migrate vsphere logs to klog
0x0034 Apr 14, 2026
af9051a
refactor: migrate snmp runtime logs to klog
0x0034 Apr 14, 2026
1a99cfd
refactor: migrate switch legacy logs to klog
0x0034 Apr 14, 2026
4af278d
refactor: migrate snmp zabbix logs to klog
0x0034 Apr 14, 2026
c0d3466
test: avoid direct stdlog calls in ntp tests
0x0034 Apr 14, 2026
ee2e2cb
refactor: migrate mtail logs to klog
0x0034 Apr 14, 2026
b7099ff
feat: support config-driven log verbosity
0x0034 Apr 14, 2026
c58f6fd
refactor: migrate logs runtime logs to klog
0x0034 Apr 14, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 12 additions & 11 deletions agent/agent.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@ package agent

import (
"errors"
"log"

"k8s.io/klog/v2"
)

type Agent struct {
Expand Down Expand Up @@ -35,38 +36,38 @@ func NewAgent() (*Agent, error) {
}

func (a *Agent) Start() {
log.Println("I! agent starting")
klog.InfoS("agent starting")
for _, agent := range a.agents {
if agent == nil {
continue
}
if err := agent.Start(); err != nil {
log.Printf("E! start [%T] err: [%+v]", agent, err)
klog.ErrorS(err, "start agent module failed", "module", agent)
} else {
log.Printf("I! [%T] started", agent)
klog.InfoS("agent module started", "module", agent)
}
}
log.Println("I! agent started")
klog.InfoS("agent started")
}

func (a *Agent) Stop() {
log.Println("I! agent stopping")
klog.InfoS("agent stopping")
for _, agent := range a.agents {
if agent == nil {
continue
}
if err := agent.Stop(); err != nil {
log.Printf("E! stop [%T] err: [%+v]", agent, err)
klog.ErrorS(err, "stop agent module failed", "module", agent)
} else {
log.Printf("I! [%T] stopped", agent)
klog.InfoS("agent module stopped", "module", agent)
}
}
log.Println("I! agent stopped")
klog.InfoS("agent stopped")
}

func (a *Agent) Reload() {
log.Println("I! agent reloading")
klog.InfoS("agent reloading")
a.Stop()
a.Start()
log.Println("I! agent reloaded")
klog.InfoS("agent reloaded")
}
5 changes: 2 additions & 3 deletions agent/ibex_agent.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,9 @@
package agent

import (
"log"

coreconfig "flashcat.cloud/categraf/config"
"flashcat.cloud/categraf/ibex"
"k8s.io/klog/v2"
)

type IbexAgent struct {
Expand All @@ -16,7 +15,7 @@ func NewIbexAgent() AgentModule {
if coreconfig.Config == nil ||
coreconfig.Config.Ibex == nil ||
!coreconfig.Config.Ibex.Enable {
log.Println("I! ibex agent disabled!")
klog.Info("ibex agent disabled")
return nil
}
if coreconfig.Config.Ibex.MetaDir == "" {
Expand Down
6 changes: 3 additions & 3 deletions agent/install/service_linux.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,14 @@ package install
import (
"bytes"
"fmt"
"log"
"os"
"os/exec"
"path/filepath"
"strings"
"time"

"github.com/kardianos/service"
"k8s.io/klog/v2"

"flashcat.cloud/categraf/pkg/cmdx"
)
Expand Down Expand Up @@ -167,7 +167,7 @@ func isSystemd() bool {

err, timeout := cmdx.RunTimeout(cmd, time.Second*2)
if timeout {
log.Printf("E! run command: %s timeout", cmd)
klog.Warningf("run command timeout: %s", cmd)
return false
}

Expand Down Expand Up @@ -234,7 +234,7 @@ func ServiceConfig(userMode bool) *service.Config {
cfg.WorkingDirectory = filepath.Dir(ov)
}
} else {
log.Println("E! get exeutable path error:", err)
klog.ErrorS(err, "get executable path error")
}
cfg.Arguments = []string{"-configs", filepath.Dir(ov) + "/conf"}
if userMode {
Expand Down
18 changes: 9 additions & 9 deletions agent/logs_agent.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ import (
"context"
"errors"
"fmt"
"log"
"os"
"time"

Expand All @@ -31,6 +30,7 @@ import (
coreconfig "flashcat.cloud/categraf/config"
logsconfig "flashcat.cloud/categraf/config/logs"
logService "flashcat.cloud/categraf/logs/service"
"k8s.io/klog/v2"
)

const (
Expand Down Expand Up @@ -71,20 +71,20 @@ func NewLogsAgent() AgentModule {
if err != nil {
message := fmt.Sprintf("Invalid endpoints: %v", err)
status.AddGlobalError("invalid endpoints", message)
log.Println("E!", errors.New(message))
klog.ErrorS(errors.New(message), "invalid endpoints")
return nil
}
processingRules, err := GlobalProcessingRules()
if err != nil {
message := fmt.Sprintf("Invalid processing rules: %v", err)
status.AddGlobalError(invalidProcessingRules, message)
log.Println("E!", errors.New(message))
klog.ErrorS(errors.New(message), "invalid processing rules")
return nil
}

sources := logsconfig.NewLogSources()
services := logService.NewServices()
log.Println("I! Starting logs-agent...")
klog.Info("starting logs-agent")

// setup the auditor
// We pass the health handle to the auditor because it's the end of the pipeline and the most
Expand Down Expand Up @@ -120,7 +120,7 @@ func NewLogsAgent() AgentModule {
journald.NewLauncher(sources, pipelineProvider, auditor),
}
if coreconfig.EnableCollectContainer() {
log.Println("collect docker logs...")
klog.Info("collect docker logs")
inputs = append(inputs, container.NewLauncher(containerLaunchables))
}

Expand All @@ -142,7 +142,7 @@ func (la *LogsAgent) Start() error {
if coreconfig.EnableCollectContainer() {
// collect container all
if util.Debug() {
log.Println("Adding ContainerCollectAll source to the Logs Agent")
klog.V(1).Info("adding ContainerCollectAll source to the Logs Agent")
}
kubesource := logsconfig.NewLogSource(logsconfig.ContainerCollectAll,
&logsconfig.LogsConfig{
Expand All @@ -161,7 +161,7 @@ func (la *LogsAgent) Start() error {
}
source := logsconfig.NewLogSource(c.Name, c)
if err := c.Validate(); err != nil {
log.Println("W! Invalid logs configuration:", err)
klog.Warningf("invalid logs configuration: %v", err)
source.Status.Error(err)
continue
}
Expand Down Expand Up @@ -214,7 +214,7 @@ func (a *LogsAgent) Stop() error {
select {
case <-c:
case <-time.After(timeout):
log.Println("I! Timed out when stopping logs-agent, forcing it to stop now")
klog.Info("timed out when stopping logs-agent, forcing it to stop now")
// We force all destinations to read/flush all the messages they get without
// trying to write to the network.
a.destinationsCtx.Stop()
Expand All @@ -226,7 +226,7 @@ func (a *LogsAgent) Stop() error {
select {
case <-c:
case <-timeout.C:
log.Println("W! Force close of the Logs LogsAgent, dumping the Go routines.")
klog.Warning("force close of the logs agent, dumping the Go routines")
}
}
return nil
Expand Down
66 changes: 41 additions & 25 deletions agent/metrics_agent.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package agent

import (
"errors"
"log"
"strings"
"sync"

Expand Down Expand Up @@ -104,6 +103,7 @@ import (
_ "flashcat.cloud/categraf/inputs/x509_cert"
_ "flashcat.cloud/categraf/inputs/xskyapi"
_ "flashcat.cloud/categraf/inputs/zookeeper"
"k8s.io/klog/v2"
)

type MetricsAgent struct {
Expand Down Expand Up @@ -167,7 +167,7 @@ func NewMetricsAgent() AgentModule {

provider, err := inputs.NewProvider(c, agent)
if err != nil {
log.Println("E! init metrics agent error: ", err)
klog.ErrorS(err, "init metrics agent error")
return nil
}
agent.InputProviders = provider
Expand Down Expand Up @@ -196,7 +196,7 @@ func (ma *MetricsAgent) Start() error {

func (ma *MetricsAgent) start(idx int) error {
if _, err := ma.InputProviders[idx].LoadConfig(); err != nil {
log.Println("E! input provider load config get err: ", err)
klog.ErrorS(err, "input provider load config get err")
}
ma.InputProviders[idx].StartReloader()

Expand All @@ -206,7 +206,7 @@ func (ma *MetricsAgent) start(idx int) error {
}

if len(names) == 0 {
log.Println("I! no inputs")
klog.InfoS("no inputs")
return nil
}

Expand All @@ -218,7 +218,7 @@ func (ma *MetricsAgent) start(idx int) error {

configs, err := ma.InputProviders[idx].GetInputConfig(name)
if err != nil {
log.Println("E! failed to get configuration of plugin:", name, "error:", err)
klog.ErrorS(err, "failed to get configuration of plugin", "plugin", name)
continue
}

Expand Down Expand Up @@ -249,7 +249,7 @@ func (ma *MetricsAgent) RegisterInput(name string, configs []cfg.ConfigWithForma

creator, has := inputs.InputCreators[inputKey]
if !has {
log.Println("E! input:", name, "not supported")
klog.Warningf("input %s not supported", name)
return
}

Expand All @@ -260,12 +260,12 @@ func (ma *MetricsAgent) RegisterInput(name string, configs []cfg.ConfigWithForma
}
}
if idx == -1 {
log.Println("E! input provider:", typ, "not found")
klog.Warningf("input provider %s not found", typ)
// hint and panic next line
}
newInputs, err := ma.InputProviders[idx].LoadInputConfig(configs, creator())
if err != nil {
log.Println("E! failed to load configuration of plugin:", name, "error:", err)
klog.ErrorS(err, "failed to load configuration of plugin", "plugin", name)
return
}

Expand All @@ -276,19 +276,18 @@ func (ma *MetricsAgent) RegisterInput(name string, configs []cfg.ConfigWithForma

func (ma *MetricsAgent) inputGo(name string, sum string, input inputs.Input) {
var err error
inputLogger := klog.Background().WithValues(metricsAgentInputLoggerValues(name, sum)...)
if err = input.InitInternalConfig(); err != nil {
log.Println("E! failed to init input:", name, "error:", err)
klog.ErrorS(err, "failed to init input", "input", name)
return
}

if err = inputs.MayInit(input); err != nil {
if err = inputs.MayInit(input, inputLogger); err != nil {
if !errors.Is(err, types.ErrInstancesEmpty) {
log.Println("E! failed to init input:", name, "error:", err)
klog.ErrorS(err, "failed to init input", "input", name)
} else {
if config.Config.DebugMode {
_, inputKey := inputs.ParseInputName(name)
log.Println("W! no instances for input: ", inputKey)
}
_, inputKey := inputs.ParseInputName(name)
klog.V(1).InfoS("no instances for input", "input", inputKey)
}
return
}
Expand All @@ -298,13 +297,14 @@ func (ma *MetricsAgent) inputGo(name string, sum string, input inputs.Input) {
empty := true
for i := 0; i < len(instances); i++ {
if err := instances[i].InitInternalConfig(); err != nil {
log.Println("E! failed to init input:", name, "error:", err)
klog.ErrorS(err, "failed to init input", "input", name)
continue
}

if err := inputs.MayInit(instances[i]); err != nil {
instanceLogger := inputLogger.WithValues(metricsAgentInstanceLoggerValues(i, instances[i].GetLabels())...)
if err := inputs.MayInit(instances[i], instanceLogger); err != nil {
if !errors.Is(err, types.ErrInstancesEmpty) {
log.Println("E! failed to init input:", name, "error:", err)
klog.ErrorS(err, "failed to init input", "input", name)
}
continue
}
Expand All @@ -313,18 +313,16 @@ func (ma *MetricsAgent) inputGo(name string, sum string, input inputs.Input) {
}

if empty {
if config.Config.DebugMode {
_, inputKey := inputs.ParseInputName(name)
log.Printf("W! no instances for input:%s", inputKey)
}
_, inputKey := inputs.ParseInputName(name)
klog.V(1).InfoS("no instances for input", "input", inputKey)
return
}
}

reader := newInputReader(name, input)
go reader.startInput()
ma.InputReaders.Add(name, sum, reader)
log.Println("I! input:", name, "started")
klog.InfoS("input started", "input", name)
}

func (ma *MetricsAgent) DeregisterInput(name string, sum string) {
Expand All @@ -335,9 +333,9 @@ func (ma *MetricsAgent) DeregisterInput(name string, sum string) {
}
}
ma.InputReaders.Del(name, sum)
log.Printf("I! input: %s[checksum:%s] stopped", name, sum)
klog.InfoS("input stopped", "input", name, "checksum", sum)
} else {
log.Printf("W! dereigster input name [%s] not found", name)
klog.Warningf("deregister input name [%s] not found", name)
}
}

Expand All @@ -352,3 +350,21 @@ func parseFilter(filterStr string) map[string]struct{} {
}
return filtermap
}

func metricsAgentInputLoggerValues(name, sum string) []interface{} {
_, plugin := inputs.ParseInputName(name)
return []interface{}{
"component", "inputs",
"input", name,
"plugin", plugin,
"checksum", sum,
}
}

func metricsAgentInstanceLoggerValues(index int, labels map[string]string) []interface{} {
values := []interface{}{"instance_index", index}
if target, ok := labels["target"]; ok && target != "" {
values = append(values, "instance_target", target)
}
return values
}
Loading
Loading