opentracing support

Signed-off-by: Andrea Luzzardi <aluzzardi@gmail.com>
This commit is contained in:
Andrea Luzzardi
2021-03-03 18:09:25 -08:00
parent 14aa03e3e3
commit f35df0475b
9 changed files with 142 additions and 33 deletions

View File

@@ -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 {

View File

@@ -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")
}
}

View 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
}