tracer

package module
v0.0.0-...-8dde5f7 Latest Latest
Warning

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

Go to latest
Published: Apr 19, 2024 License: MIT Imports: 11 Imported by: 6

README

tracer

Example of using gin-gonic/gin.

import (
	"net/http"

	"github.com/gin-gonic/gin"
	"github.com/itsubaki/tracer"
)

func SetTraceID(c *gin.Context) {
	value := c.GetHeader("X-Cloud-Trace-Context")

	xc, err := tracer.Parse(value)
	if err != nil {
		c.AbortWithStatus(http.StatusInternalServerError)
		return
	}

	c.Set("trace_id", xc.TraceID)
	c.Set("span_id", xc.SpanID)
	c.Set("trace_true", xc.TraceTrue)

	c.Next()
}
import (
	"net/http"

	"github.com/gin-gonic/gin"
	"github.com/itsubaki/tracer"
	"go.opentelemetry.io/otel"
)

var tr = otel.Tracer("mypackage/myfunc")

func Func(c *gin.Context) {
	traceID := c.GetString("trace_id")
	spanID := c.GetString("span_id")
	traceTrue := c.GetBool("trace_true")

	parent, err := tracer.Context(c.Request.Context(), traceID, spanID, traceTrue)
	if err != nil {
		c.Status(http.StatusInternalServerError)
		return
	}

	func() {
		_, s := tr.Start(parent, "something to do")
		defer s.End()

		...
	}()
...

Documentation

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func Context

func Context(ctx context.Context, traceID, spanID string, traceTrue bool) (context.Context, error)

func Must

func Must(f func() error, err error) func() error

func MustSetup

func MustSetup(projectID, serviceName, revision string, timeout time.Duration) func() error

func Setup

func Setup(projectID, serviceName, revision string, timeout time.Duration) (func() error, error)

Types

type XCloudTraceContext

type XCloudTraceContext struct {
	TraceID   string
	SpanID    string
	TraceTrue bool
}

https://cloud.google.com/trace/docs/setup#force-trace

func Parse

func Parse(xCloudTraceContext string) (*XCloudTraceContext, error)
Example
package main

import (
	"fmt"

	"github.com/itsubaki/tracer"
)

func main() {
	// TRACE_ID/SPAN_ID;o=TRACE_TRUE
	xc, err := tracer.Parse("105445aa7843bc8bf206b12000100000/0000000000000001;o=1")
	if err != nil {
		panic(err)
	}

	fmt.Println(xc.TraceID)
	fmt.Println(xc.SpanID)
	fmt.Println(xc.TraceTrue)

}
Output:

105445aa7843bc8bf206b12000100000
0000000000000001
true

Jump to

Keyboard shortcuts

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