diff --git a/go.mod b/go.mod index 83bb173..ff77f9e 100644 --- a/go.mod +++ b/go.mod @@ -138,7 +138,7 @@ require ( golang.org/x/exp v0.0.0-20221106115401-f9659909a136 // indirect golang.org/x/sync v0.1.0 // indirect golang.org/x/text v0.7.0 // indirect - golang.org/x/time v0.2.0 // indirect + golang.org/x/time v0.3.0 // indirect google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f // indirect google.golang.org/grpc v1.53.0 // indirect google.golang.org/protobuf v1.28.1 // indirect diff --git a/go.sum b/go.sum index afc458b..8ba8a27 100644 --- a/go.sum +++ b/go.sum @@ -1211,6 +1211,8 @@ golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxb golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.2.0 h1:52I/1L54xyEQAYdtcSuxtiT84KGYTBGXwayxmIpNJhE= golang.org/x/time v0.2.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4= +golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/main.go b/main.go index 728acf0..42f3fa1 100644 --- a/main.go +++ b/main.go @@ -11,6 +11,7 @@ import ( "github.com/prometheus/client_golang/prometheus/promhttp" "golang.org/x/mod/semver" "golang.org/x/sys/unix" + "golang.org/x/time/rate" "k8s.io/klog/v2" "net/http" _ "net/http/pprof" @@ -74,6 +75,9 @@ func machineID() string { } func main() { + klog.LogToStderr(false) + klog.SetOutput(&RateLimitedLogOutput{limiter: rate.NewLimiter(10, 100)}) + klog.Infoln("agent version:", version) hostname, kv, err := uname() @@ -128,3 +132,14 @@ type logger struct{} func (l logger) Println(v ...interface{}) { klog.Errorln(v...) } + +type RateLimitedLogOutput struct { + limiter *rate.Limiter +} + +func (o *RateLimitedLogOutput) Write(data []byte) (int, error) { + if !o.limiter.Allow() { + return len(data), nil + } + return os.Stderr.Write(data) +}