From a07024722aa6bb5c844b34c7dc4715ee86173b0e Mon Sep 17 00:00:00 2001 From: Alex Collins Date: Wed, 29 Sep 2021 21:42:18 -0700 Subject: [PATCH] feat: log metrics on runner stop --- runner/sidecar/sidecar.go | 17 +++++++++++++++++ shared/util/log.go | 12 ++++++++++++ 2 files changed, 29 insertions(+) diff --git a/runner/sidecar/sidecar.go b/runner/sidecar/sidecar.go index b1f7839a..bb6fa128 100644 --- a/runner/sidecar/sidecar.go +++ b/runner/sidecar/sidecar.go @@ -17,6 +17,7 @@ import ( "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/promauto" "github.com/prometheus/client_golang/prometheus/promhttp" + "github.com/prometheus/common/expfmt" jaegercfg "github.com/uber/jaeger-client-go/config" jaegerlog "github.com/uber/jaeger-client-go/log" "github.com/uber/jaeger-lib/metrics" @@ -95,6 +96,8 @@ func Exec(ctx context.Context) error { opentracing.SetGlobalTracer(tracer) + addStopHook(logMetrics) + if err := enrichSpec(ctx); err != nil { return err } @@ -202,6 +205,20 @@ func Exec(ctx context.Context) error { return nil } +func logMetrics(ctx context.Context) error { + families, err := prometheus.DefaultGatherer.Gather() + if err != nil { + return err + } + w := sharedutil.LogWriter(logger) + for _, f := range families { + if _, err := expfmt.MetricFamilyToText(w, f); err != nil { + return err + } + } + return nil +} + func enrichSpec(ctx context.Context) error { if err := enrichSources(ctx); err != nil { return err diff --git a/shared/util/log.go b/shared/util/log.go index 71cf7c7d..f72a4849 100644 --- a/shared/util/log.go +++ b/shared/util/log.go @@ -1,6 +1,7 @@ package util import ( + "io" "os" "github.com/bombsimon/logrusr" @@ -13,3 +14,14 @@ func NewLogger() logr.Logger { l.SetOutput(os.Stdout) return logrusr.NewLogger(l) } + +type logWriter struct{ logr.Logger } + +func (l logWriter) Write(p []byte) (n int, err error) { + l.Info(string(p)) + return len(p), nil +} + +func LogWriter(l logr.Logger) io.Writer { + return logWriter{l} +}