tracer

package module
v0.0.0-...-b821833 Latest Latest
Warning

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

Go to latest
Published: Dec 26, 2021 License: GPL-3.0 Imports: 14 Imported by: 0

README

tracer

middleware of open tracing

Documentation

Index

Constants

View Source
const OtMwTraceContextHeaderName = "ot-mw-trace-id"

OtMwTraceContextHeaderName trace的http header key名称, jaeger解析前会将其转换成小写, 所以不能存在大写字母, 设置跨域header需要, 要开放出去

Variables

This section is empty.

Functions

func MakeupUrlByHostPathQueryParams

func MakeupUrlByHostPathQueryParams(
	host, path string, queryParams map[string]string,
) (url string)

MakeupUrlByHostPathQueryParams 根据给定的host, path, queryParams获取组成的url; 参数示例: host "http://localhost:18200", path: "/path/xxx", queryParams: map[string]string{ "abc": "213123", "def": "213123" }; 返回值示例: "http://localhost:18200/path/xxx?abc=213123&def=213123"

Types

type FasthttpRespCallback

type FasthttpRespCallback func(ctx context.Context, resp *fasthttp.Response)

type Tracer

type Tracer interface {
	// Close 释放tracer占用的资源
	Close() (err error)
	// StartSpan 生成一个操作名称为opName的起始span(父span)
	StartSpan(opName string) (span opentracing.Span)
	// ChildSpanFromContext 根据ctx里的span信息生成一个操作名称为opName的子span, 如果ctx没有span信息, 将生成一个操作名称为opName的起始span(父span)
	ChildSpanFromContext(opName string, ctx context.Context) (
		child opentracing.Span,
	)
	// FollowerSpanFromContext 根据ctx里的span信息生成一个操作名称为opName的跟随span, 如果ctx没有span信息, 将生成一个操作名称为opName的起始span(父span)
	FollowerSpanFromContext(opName string, ctx context.Context) (
		follower opentracing.Span,
	)
	// ChildSpanFromParent 根据父span生成一个操作名称为opName的子span, 如果parent为nil, 将生成一个操作名称为opName的起始span(父span)
	ChildSpanFromParent(opName string, parent opentracing.Span) (
		child opentracing.Span,
	)
	// FollowerSpanFromParent 根据父span生成一个操作名称为opName的跟随span, 如果parent为nil, 将生成一个操作名称为opName的起始span(父span)
	FollowerSpanFromParent(opName string, parent opentracing.Span) (
		follower opentracing.Span,
	)
	// ChildSpanFromHttpHeader 根据http头里的span信息生成一个操作名称为opName的子span, 如果http头没有span信息, 将生成一个操作名称为opName的起始span(父span)
	ChildSpanFromHttpHeader(opName string, header http.Header) (
		child opentracing.Span,
	)
	// FollowerSpanFromHttpHeader 根据http头里的span信息生成一个操作名称为opName的跟随span, 如果http头没有span信息, 将生成一个操作名称为opName的起始span(父span)
	FollowerSpanFromHttpHeader(opName string, header http.Header) (
		follower opentracing.Span,
	)
	// ChildSpanFromFasthttpHeader 根据 fasthttp.ResponseHeader 头里的span信息生成一个操作名称为opName的子span, 如果 fasthttp.ResponseHeader 头没有span信息, 将生成一个操作名称为opName的起始span(父span)
	ChildSpanFromFasthttpHeader(
		opName string, header *fasthttp.ResponseHeader,
	) (child opentracing.Span)
	// FollowerSpanFromFasthttpHeader 根据 fasthttp.ResponseHeader 头里的span信息生成一个操作名称为opName的跟随span, 如果 fasthttp.ResponseHeader 头没有span信息, 将生成一个操作名称为opName的起始span(父span)
	FollowerSpanFromFasthttpHeader(
		opName string, header *fasthttp.ResponseHeader,
	) (follower opentracing.Span)
	// LogCodeAndMsgToSpan 已log的形式记录code和msg到span
	LogCodeAndMsgToSpan(span opentracing.Span, code int, msg string)
	// ContextWithSpan 将span注入ctx生成新的ctx, ctxWithChild携带新生成的span信息, 当span为nil时返回传入的ctx
	ContextWithSpan(ctx context.Context, span opentracing.Span) (
		ctxWithSpan context.Context,
	)
	// CtxWithSpanCtxFromHttpHeader 从 http.Header 中获取 SpanContext 信息, 并将之注入到ctx中, 生成新的ctx, 当未获取到 SpanContext 信息时返回传入的ctx
	CtxWithSpanCtxFromHttpHeader(ctx context.Context, header http.Header) (
		newCtx context.Context,
	)
	// CtxWithSpanCtxFromFasthttpHeader 从 *fasthttp.ResponseHeader 中获取 SpanContext 信息, 并将之注入到ctx中, 生成新的ctx, 当未获取到 SpanContext 信息时返回传入的ctx
	CtxWithSpanCtxFromFasthttpHeader(
		ctx context.Context, header *fasthttp.ResponseHeader,
	) (newCtx context.Context)
	// Inject2HttpHeader 将span信息打进http头里, 便于在不同服务间传递span信息
	Inject2HttpHeader(span opentracing.Span, header http.Header) (err error)
	// Inject2FasthttpHeader 将span信息打进fasthttp头里, 便于在不同服务间传递span信息
	Inject2FasthttpHeader(
		span opentracing.Span, header *fasthttp.RequestHeader,
	) (err error)
	// Inject2HttpHeaderByCtx 将ctx里的span信息打进http头里, 便于在不同服务间传递span信息
	Inject2HttpHeaderByCtx(ctx context.Context, header http.Header) (err error)
	// Inject2FasthttpHeaderByCtx 将ctx里的span信息打进fasthttp头里, 便于在不同服务间传递span信息
	Inject2FasthttpHeaderByCtx(
		ctx context.Context, header *fasthttp.RequestHeader,
	) (err error)
	// HttpMiddleWare 返回带有该tracer信息的http.Handler, 返回的http.Handler将根据http的request的header里的span信息生成一个子span, 并将其注入的request.context中(如果http的request的header中没有span信息, 将生成一个父span, 并将其信息注入request.context中)
	HttpMiddleWare(handler http.Handler) (traceHandler http.Handler)
	// GetFasthttp 通过fasthttp发起get请求
	GetFasthttp(
		ctx context.Context, url string,
		mapHeader, mapCookie map[string]string, cbs ...FasthttpRespCallback,
	) (newCtx context.Context, respBody []byte, err error)
	// PostJsonFasthttp 通过fasthttp发起post请求, data为可json序列化的结构数据
	PostJsonFasthttp(
		ctx context.Context, url string, data interface{},
		mapHeader, mapCookie map[string]string, cbs ...FasthttpRespCallback,
	) (newCtx context.Context, respBody []byte, err error)
	// PutJsonFasthttp 通过fasthttp发起put请求, data为可json序列化的结构数据
	PutJsonFasthttp(
		ctx context.Context, url string, data interface{},
		mapHeader, mapCookie map[string]string, cbs ...FasthttpRespCallback,
	) (newCtx context.Context, respBody []byte, err error)
	// DeleteJsonFasthttp 通过fasthttp发起delete请求, data为可json序列化的结构数据
	DeleteJsonFasthttp(
		ctx context.Context, url string, data interface{},
		mapHeader, mapCookie map[string]string, cbs ...FasthttpRespCallback,
	) (newCtx context.Context, respBody []byte, err error)
}

func InitEmptyTracer

func InitEmptyTracer() Tracer

func NewTracerBySrvNameAndTracerSrvHost

func NewTracerBySrvNameAndTracerSrvHost(srvName, tracerSrvHost string) (
	tracer Tracer, err error,
)

NewTracerBySrvNameAndTracerSrvHost 根据服务名称和tracer服务地址创建Tracer实例, 目前内部的实现方式为全追踪模式并通过http直连jaeger服务端上报追踪信息且设置为opentracing中的全局唯一tracer, 内置的log为beego默认的BeeLogger; 返回的tracer可在服务内并发使用, 在程序退出前通过调用tracer.Close()释放tracer占用的资源; example: NewTracerBySrvNameAndTracerSrvHost("tracer-self", "http://127.0.0.1:14268")

Jump to

Keyboard shortcuts

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