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.