opentracing support
Signed-off-by: Andrea Luzzardi <aluzzardi@gmail.com>
This commit is contained in:
@@ -3,11 +3,9 @@ package cmd
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"dagger.io/go/cmd/dagger/logger"
|
||||
"dagger.io/go/dagger"
|
||||
|
||||
"github.com/moby/buildkit/util/appcontext"
|
||||
|
||||
"github.com/rs/zerolog/log"
|
||||
"github.com/spf13/cobra"
|
||||
"github.com/spf13/viper"
|
||||
)
|
||||
@@ -29,8 +27,8 @@ var computeCmd = &cobra.Command{
|
||||
}
|
||||
},
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
lg := logger.New()
|
||||
ctx := lg.WithContext(appcontext.Context())
|
||||
ctx := cmd.Context()
|
||||
lg := log.Ctx(ctx)
|
||||
|
||||
env, err := dagger.NewEnv()
|
||||
if err != nil {
|
||||
|
@@ -1,9 +1,13 @@
|
||||
package cmd
|
||||
|
||||
import (
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
"dagger.io/go/cmd/dagger/logger"
|
||||
"github.com/moby/buildkit/util/appcontext"
|
||||
"github.com/opentracing/opentracing-go"
|
||||
otlog "github.com/opentracing/opentracing-go/log"
|
||||
"github.com/spf13/cobra"
|
||||
"github.com/spf13/viper"
|
||||
)
|
||||
@@ -39,9 +43,27 @@ func init() {
|
||||
}
|
||||
|
||||
func Execute() {
|
||||
lg := logger.New()
|
||||
var (
|
||||
lg = logger.New()
|
||||
ctx = lg.WithContext(appcontext.Context())
|
||||
|
||||
if err := rootCmd.Execute(); err != nil {
|
||||
closer = logger.InitTracing()
|
||||
span opentracing.Span
|
||||
)
|
||||
|
||||
if len(os.Args) > 1 {
|
||||
span, ctx = opentracing.StartSpanFromContext(ctx, os.Args[1])
|
||||
span.LogFields(otlog.String("command", strings.Join(os.Args, " ")))
|
||||
}
|
||||
|
||||
defer func() {
|
||||
if span != nil {
|
||||
span.Finish()
|
||||
}
|
||||
closer.Close()
|
||||
}()
|
||||
|
||||
if err := rootCmd.ExecuteContext(ctx); err != nil {
|
||||
lg.Fatal().Err(err).Msg("failed to execute command")
|
||||
}
|
||||
}
|
||||
|
36
cmd/dagger/logger/tracer.go
Normal file
36
cmd/dagger/logger/tracer.go
Normal file
@@ -0,0 +1,36 @@
|
||||
package logger
|
||||
|
||||
import (
|
||||
"io"
|
||||
"os"
|
||||
|
||||
opentracing "github.com/opentracing/opentracing-go"
|
||||
jaeger "github.com/uber/jaeger-client-go"
|
||||
)
|
||||
|
||||
func InitTracing() io.Closer {
|
||||
traceAddr := os.Getenv("JAEGER_TRACE")
|
||||
if traceAddr == "" {
|
||||
return &nopCloser{}
|
||||
}
|
||||
|
||||
tr, err := jaeger.NewUDPTransport(traceAddr, 0)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
tracer, closer := jaeger.NewTracer(
|
||||
"dagger",
|
||||
jaeger.NewConstSampler(true),
|
||||
jaeger.NewRemoteReporter(tr),
|
||||
)
|
||||
opentracing.SetGlobalTracer(tracer)
|
||||
return closer
|
||||
}
|
||||
|
||||
type nopCloser struct {
|
||||
}
|
||||
|
||||
func (*nopCloser) Close() error {
|
||||
return nil
|
||||
}
|
Reference in New Issue
Block a user