gormopentracing

package module
v0.0.0-...-29f2488 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 1, 2021 License: MIT Imports: 7 Imported by: 0

README

gorm-opentracing

Go Report Card go.dev reference

opentracing support for gorm2.

Features
  • Record SQL in span logs.
  • Record Result in span logs.
  • Record Table in span tags.
  • Record Error in span tags and logs.
  • Register Create Query Delete Update Row Raw tracing callbacks.
Get Started

I assume that you already have an opentracing Tracer client started in your project.

func main() {
	var db *gorm.DB
	
	db.Use(gormopentracing.New())
	
	// if you want to use customized tracer instead of opentracing.GlobalTracer() which is default,
	// you can use the option WithTracer(yourTracer)
}

Otherwise, you need to deploy distributed tracing server(jaeger, zipkin for example), then you need to boot tracer client in yours project and set tracer to opentracing.

import (
	"github.com/opentracing/opentracing-go"
	"github.com/uber/jaeger-client-go"
	"github.com/uber/jaeger-client-go/config"
	jaegerlog "github.com/uber/jaeger-client-go/log"
)

func bootTracerBasedJaeger() {
	// jaeger tracer configuration
	cfg := &config.Configuration{
		Sampler: &config.SamplerConfig{
			Type:  jaeger.SamplerTypeConst,
			Param: 1,
		},
		ServiceName: "gormopentracing",
		Reporter: &config.ReporterConfig{
			LogSpans: true,
			//LocalAgentHostPort:  "127.0.0.1:6381",
			BufferFlushInterval: 100 * time.Millisecond,
			CollectorEndpoint:   "http://127.0.0.1:14268/api/traces",
		},
	}

	// jaeger tracer client 
	tracer, _, err := cfg.NewTracer(
		config.Logger(jaegerlog.StdLogger),
		config.ZipkinSharedRPCSpan(true),
	)
	if err != nil {
		log.Printf("failed to use jaeger tracer plugin, got error %v", err)
		os.Exit(1)
	}
	
	// set into opentracing's global tracer, so the plugin would take it as default tracer.
	opentracing.SetGlobalTracer(tracer)
}
Plugin options
// WithLogResult log result into span log, default: disabled.
func WithLogResult(logResult bool)

// WithTracer allows to use customized tracer rather than the global one only.
func WithTracer(tracer opentracing.Tracer)
Snapshots

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func New

func New(opts ...applyOption) gorm.Plugin

New constructs a new plugin based opentracing. It supports to trace all operations in gorm, so if you have already traced your servers, now this plugin will perfect your tracing job.

func WithLogResult

func WithLogResult(logResult bool) applyOption

WithLogResult enable opentracingPlugin to log the result of each executed sql.

func WithOpNameKey

func WithOpNameKey(opNameKey string) applyOption

func WithSpanCtxKey

func WithSpanCtxKey(spanCtxKey string) applyOption

func WithSqlParameters

func WithSqlParameters(logSqlParameters bool) applyOption

func WithTracer

func WithTracer(tracer opentracing.Tracer) applyOption

WithTracer allows to use customized tracer rather than the global one only.

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL