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 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")
Click to show internal directories.
Click to hide internal directories.