ginopentracing

package module
v0.0.0-...-61cc7b3 Latest Latest
Warning

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

Go to latest
Published: Dec 19, 2018 License: BSD-3-Clause Imports: 7 Imported by: 0

README

go-gin-opentracing

Gin Web Framework Open Tracing middleware

Installation

$ go get github.com/Bose/go-gin-opentracing

Usage

package main

import (
	"fmt"
	"os"

	"github.com/Bose/go-gin-opentracing"
	"github.com/gin-gonic/gin"
	opentracing "github.com/opentracing/opentracing-go"
)

func main() {
	r := gin.Default()
	hostName, err := os.Hostname()
	if err != nil {
		hostName = "unknown"
	}

	tracer, closer, err := ginopentracing.Config.New(fmt.Sprintf("example.go::%s", hostName))
	if err == nil {
		fmt.Println("Setting global tracer")
		defer closer.Close()
		opentracing.SetGlobalTracer(tracer)
	} else {
		fmt.Println("Can't enable tracing: ", err.Error())
	}

	p := ginopentracing.OpenTracer([]byte("api-request-"))
	r.Use(p)

	r.GET("/", func(c *gin.Context) {
		c.JSON(200, "Hello world!")
	})

	r.Run(":29090")
}

See the example.go file

Documentation

Index

Constants

This section is empty.

Variables

Config - the open tracing config singleton

Functions

func InitDevelopment

func InitDevelopment(tracingAgentHostPort []byte)

InitDevelopment - init a production tracer environment example: Create the default tracer and schedule its closing when main returns.

   func main() {
 tracing.InitDevelopment() # defaults to "localhost:6831" for tracing agent
	tracer, closer, _ := tracing.Config.New("passport-gigya-user-access") // the service name is the param to New()
	defer closer.Close()
	opentracing.SetGlobalTracer(tracer)

func InitMacDocker

func InitMacDocker(tracingAgentHostPort []byte)

InitMacDocker - init a production tracer environment example: Create the default tracer and schedule its closing when main returns.

   func main() {
 tracing.InitMacDocker() # defaults to "host.docker.internal:6831 for tracing agent
	tracer, closer, _ := tracing.Config.New("passport-gigya-user-access") // the service name is the param to New()
	defer closer.Close()
	opentracing.SetGlobalTracer(tracer)

func InitProduction

func InitProduction(sampleProbability float64, tracingAgentHostPort []byte)

InitProduction - init a production tracer environment example: Create the default tracer and schedule its closing when main returns.

   func main() {
	tracing.InitProduction("jaegeragent.svc.cluster.local:6831")
	tracer, closer, _ := tracing.Config.New("passport-gigya-user-access") // the service name is the param to New()
	defer closer.Close()
	opentracing.SetGlobalTracer(tracer)

func InjectTraceID

func InjectTraceID(ctx opentracing.SpanContext, header http.Header)

InjectTraceID injects the span ID into the provided HTTP header object, so that the current span will be propogated downstream to the server responding to an HTTP request. Specifying the span ID in this way will allow the tracing system to connect spans between servers.

 Usage:
         // resty example
	    r := resty.R()
	    injectTraceID(span, r.Header)
	    resp, err := r.Get(fmt.Sprintf("http://localhost:8000/users/%s", bosePersonID))

         // galapagos_clients example
         c := galapagos_clients.GetHTTPClient()
         req, err := http.NewRequest("GET", fmt.Sprintf("http://localhost:8000/users/%s", bosePersonID))
         injectTraceID(span, req.Header)
         c.Do(req)

func OpenTracer

func OpenTracer(operationPrefix []byte) gin.HandlerFunc

OpenTracer - middleware that addes opentracing

func StartDBSpanWithParent

func StartDBSpanWithParent(parent opentracing.SpanContext, operationName, dbInstance, dbType, dbStatement string) opentracing.Span

func StartSpan

func StartSpan(operationName, method, path string) opentracing.Span

StartSpan will start a new span with no parent span.

func StartSpanWithHeader

func StartSpanWithHeader(header *http.Header, operationName, method, path string) opentracing.Span

StartSpanWithHeader will look in the headers to look for a parent span before starting the new span. example:

func handleGet(c *gin.Context) {
   span := StartSpanWithHeader(&c.Request.Header, "api-request", method, path)
   defer span.Finish()
   c.Set("tracing-context", span) // add the span to the context so it can be used for the duration of the request.
   bosePersonID := c.Param("bosePersonID")
   span.SetTag("bosePersonID", bosePersonID)

func StartSpanWithParent

func StartSpanWithParent(parent opentracing.SpanContext, operationName, method, path string) opentracing.Span

StartSpanWithParent will start a new span with a parent span. example:

span:= StartSpanWithParent(c.Get("tracing-context"),

Types

This section is empty.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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