trace

package
v0.17.3 Latest Latest
Warning

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

Go to latest
Published: Jul 25, 2025 License: MIT Imports: 15 Imported by: 18

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ComNames = []string{"/farseer-go/async/", "/farseer-go/cache/", "/farseer-go/cacheMemory/", "/farseer-go/collections/", "/farseer-go/data/", "/farseer-go/elasticSearch/", "/farseer-go/etcd/", "/farseer-go/eventBus/", "/farseer-go/fs/", "/farseer-go/fSchedule/", "/farseer-go/linkTrace/", "/farseer-go/mapper/", "/farseer-go/queue/", "/farseer-go/rabbit/", "/farseer-go/redis/", "/farseer-go/redisStream/", "/farseer-go/tasks/", "/farseer-go/utils/", "/farseer-go/webapi/", "/src/reflect/", "/usr/local/go/src/", "gorm.io/"}
View Source
var CurTraceContext = asyncLocal.New[*TraceContext]()

CurTraceContext 当前请求的Trace上下文

View Source
var ScopeLevel = asyncLocal.New[[]*TraceDetail]()

ScopeLevel 层级列表

Functions

func ClearComment added in v0.13.0

func ClearComment()

ClearComment 移除注释

func GetComment added in v0.13.0

func GetComment() string

GetComment 获取操作的注释,并删除

func GetTraceId added in v0.16.0

func GetTraceId() string

func SetComment added in v0.13.0

func SetComment(cmt ...string)

SetComment 添加操作的注释

Types

type ConsumerContext added in v0.16.0

type ConsumerContext struct {
	ConsumerServer     string `json:"cs"` // MQ服务器
	ConsumerQueueName  string `json:"cq"` // 队列名称
	ConsumerRoutingKey string `json:"cr"` // 路由KEY
}

func (ConsumerContext) IsNil added in v0.16.0

func (receiver ConsumerContext) IsNil() bool

type EmptyManager

type EmptyManager struct {
}

func (*EmptyManager) EntryEventConsumer added in v0.13.0

func (*EmptyManager) EntryEventConsumer(server, eventName, subscribeName string) *TraceContext

func (*EmptyManager) EntryFSchedule

func (*EmptyManager) EntryFSchedule(taskGroupName string, taskId int64, data map[string]string) *TraceContext

func (*EmptyManager) EntryMqConsumer

func (*EmptyManager) EntryMqConsumer(parentTraceId, parentAppName, server string, queueName string, routingKey string) *TraceContext

func (*EmptyManager) EntryQueueConsumer

func (*EmptyManager) EntryQueueConsumer(queueName, subscribeName string) *TraceContext

func (*EmptyManager) EntryTask

func (*EmptyManager) EntryTask(taskName string) *TraceContext

func (*EmptyManager) EntryTaskGroup added in v0.12.0

func (*EmptyManager) EntryTaskGroup(taskName string, taskGroupName string, taskId int64) *TraceContext

func (*EmptyManager) EntryWatchKey

func (*EmptyManager) EntryWatchKey(key string) *TraceContext

func (*EmptyManager) EntryWebApi

func (*EmptyManager) EntryWebApi(domain string, path string, method string, contentType string, header map[string]string, requestIp string) *TraceContext

func (*EmptyManager) EntryWebSocket added in v0.15.0

func (*EmptyManager) EntryWebSocket(domain string, path string, header map[string]string, requestIp string) *TraceContext

func (*EmptyManager) GetCurTrace

func (*EmptyManager) GetCurTrace() *TraceContext

func (*EmptyManager) GetTraceId added in v0.14.0

func (*EmptyManager) GetTraceId() string

func (*EmptyManager) Push added in v0.16.0

func (*EmptyManager) Push(traceContext *TraceContext, err error)

func (*EmptyManager) TraceDatabase

func (*EmptyManager) TraceDatabase() *TraceDetail

func (*EmptyManager) TraceDatabaseOpen

func (*EmptyManager) TraceDatabaseOpen(dbName string, connectString string) *TraceDetail

func (*EmptyManager) TraceElasticsearch

func (*EmptyManager) TraceElasticsearch(method string, IndexName string, AliasesName string) *TraceDetail

func (*EmptyManager) TraceEtcd

func (*EmptyManager) TraceEtcd(method string, key string, leaseID int64) *TraceDetail

func (*EmptyManager) TraceEventPublish added in v0.13.0

func (*EmptyManager) TraceEventPublish(eventName string) *TraceDetail

func (*EmptyManager) TraceHand

func (*EmptyManager) TraceHand(name string) *TraceDetail

func (*EmptyManager) TraceHttp

func (*EmptyManager) TraceHttp(method string, url string) *TraceDetail

func (*EmptyManager) TraceMq

func (*EmptyManager) TraceMq(method string, server string, exchange string) *TraceDetail

func (*EmptyManager) TraceMqSend

func (*EmptyManager) TraceMqSend(method string, server string, exchange string, routingKey string) *TraceDetail

func (*EmptyManager) TraceRedis

func (*EmptyManager) TraceRedis(method string, key string, field string) *TraceDetail

type ExceptionStack

type ExceptionStack struct {
	ExceptionIsException bool                   // 是否执行异常
	ExceptionMessage     string                 // 异常信息
	ExceptionDetails     []ExceptionStackDetail // 异常详情
}

func (ExceptionStack) IsNil added in v0.11.0

func (receiver ExceptionStack) IsNil() bool

type ExceptionStackDetail added in v0.16.2

type ExceptionStackDetail struct {
	ExceptionCallFile     string // 调用者文件路径
	ExceptionCallLine     int    // 调用者行号
	ExceptionCallFuncName string // 调用者函数名称
}

func GetCallerInfo

func GetCallerInfo() []ExceptionStackDetail

type IManager

type IManager interface {
	// EntryWebApi 创建webapi的链路追踪入口
	EntryWebApi(domain string, path string, method string, contentType string, headerDictionary map[string]string, requestIp string) *TraceContext
	// EntryWebSocket 创建WebSocket的链路追踪入口
	EntryWebSocket(domain string, path string, headerDictionary map[string]string, requestIp string) *TraceContext
	// EntryMqConsumer 创建MQ消费入口
	EntryMqConsumer(parentTraceId, parentAppName, server string, queueName string, routingKey string) *TraceContext
	// EntryQueueConsumer 创建Queue消费入口
	EntryQueueConsumer(queueName, subscribeName string) *TraceContext
	// EntryEventConsumer 创建Event消费入口
	EntryEventConsumer(server, eventName, subscribeName string) *TraceContext
	// EntryTask 创建本地任务入口
	EntryTask(taskName string) *TraceContext
	// EntryTaskGroup 创建本地任务入口(调度中心专用)
	EntryTaskGroup(taskName string, taskGroupName string, taskId int64) *TraceContext
	// EntryFSchedule 创建调度中心入口
	EntryFSchedule(taskGroupName string, taskId int64, data map[string]string) *TraceContext
	// EntryWatchKey 创建etcd入口
	EntryWatchKey(key string) *TraceContext

	// TraceDatabaseOpen 数据库埋点
	TraceDatabaseOpen(dbName string, connectString string) *TraceDetail
	// TraceDatabase 数据库埋点
	TraceDatabase() *TraceDetail
	// TraceElasticsearch Elasticsearch埋点
	TraceElasticsearch(method string, IndexName string, AliasesName string) *TraceDetail
	// TraceEtcd etcd埋点
	TraceEtcd(method string, key string, leaseID int64) *TraceDetail
	// TraceHand 手动埋点
	TraceHand(name string) *TraceDetail
	// TraceEventPublish 事件发布
	TraceEventPublish(eventName string) *TraceDetail
	// TraceMqSend send埋点
	TraceMqSend(method string, server string, exchange string, routingKey string) *TraceDetail
	// TraceMq open、create埋点
	TraceMq(method string, server string, exchange string) *TraceDetail
	// TraceRedis Redis埋点
	TraceRedis(method string, key string, field string) *TraceDetail
	// TraceHttp http埋点
	TraceHttp(method string, url string) *TraceDetail
	// 推送到队列
	Push(traceContext *TraceContext, err error)
}

IManager 链路追踪管理

type TaskContext added in v0.16.0

type TaskContext struct {
	TaskName      string            `json:"tn"`  // 任务名称
	TaskGroupName string            `json:"tgn"` // 任务组ID
	TaskId        int64             `json:"tid"` // 任务ID
	TaskData      map[string]string `json:"td"`  // 任务数据
}

func (TaskContext) IsNil added in v0.16.0

func (receiver TaskContext) IsNil() bool

type TraceContext added in v0.16.0

type TraceContext struct {
	TraceId       string            `json:"tid"` // 上下文ID
	AppId         string            `json:"aid"` // 应用ID
	AppName       string            `json:"an"`  // 应用名称
	AppIp         string            `json:"aip"` // 应用IP
	ParentAppName string            `json:"pn"`  // 上游应用
	TraceLevel    int               `json:"tl"`  // 逐层递增(显示上下游顺序)
	StartTs       int64             `json:"st"`  // 调用开始时间戳(微秒)
	EndTs         int64             `json:"et"`  // 调用结束时间戳(微秒)
	UseTs         time.Duration     `json:"ut"`  // 总共使用时间(微秒)
	UseDesc       string            `json:"ud"`  // 总共使用时间(描述)
	TraceType     eumTraceType.Enum `json:"tt"`  // 状态码
	List          []*TraceDetail    `json:"l"`   // 调用的上下文trace.TraceDetail
	TraceCount    int               `json:"tc"`  // 追踪明细数量

	Exception *ExceptionStack `json:"e"` // 异常信息
	WebContext
	ConsumerContext
	TaskContext
	WatchKeyContext
	CreateAt dateTime.DateTime `json:"ca"` // 请求时间
	// contains filtered or unexported fields
}

func NewTraceContext added in v0.16.0

func NewTraceContext() *TraceContext

func (*TraceContext) AddDetail added in v0.16.0

func (receiver *TraceContext) AddDetail(traceDetail *TraceDetail)

AddDetail 添加链路明细

func (*TraceContext) Error added in v0.16.0

func (receiver *TraceContext) Error(err error)

func (*TraceContext) GetAppInfo added in v0.16.0

func (receiver *TraceContext) GetAppInfo() (string, string, string, string, string)

func (*TraceContext) Ignore added in v0.16.0

func (receiver *TraceContext) Ignore()

func (*TraceContext) IgnoreDetail added in v0.16.0

func (receiver *TraceContext) IgnoreDetail(f func())

func (*TraceContext) IsIgnore added in v0.16.0

func (receiver *TraceContext) IsIgnore() bool

func (*TraceContext) SetBody added in v0.16.0

func (receiver *TraceContext) SetBody(requestBody string, statusCode int, responseBody string)

func (*TraceContext) SetResponseBody added in v0.16.0

func (receiver *TraceContext) SetResponseBody(responseBody string)

type TraceDetail added in v0.16.0

type TraceDetail struct {
	// TraceId    string // 上下文ID
	// AppId          string            // 应用ID
	// AppName        string            // 应用名称
	// AppIp          string            // 应用IP
	// ParentAppName  string            // 上游应用
	TraceLevel     int              // 逐层递增(显示上下游顺序)
	DetailId       string           // 明细ID
	ParentDetailId string           // 父级明细ID
	Level          int              // 当前层级(入口为0层)
	Comment        string           // 调用注释
	MethodName     string           // 调用方法
	CallType       eumCallType.Enum // 调用类型
	Timeline       time.Duration    // 从入口开始统计(微秒)
	UnTraceTs      time.Duration    // 上一次结束到现在开始之间未Trace的时间(微秒)
	StartTs        int64            // 调用开始时间戳(微秒)
	EndTs          int64            // 调用停止时间戳(微秒)

	Exception *ExceptionStack   // 异常信息
	CreateAt  dateTime.DateTime // 请求时间
	TraceDetailHand
	TraceDetailDatabase
	TraceDetailEs
	TraceDetailEtcd
	TraceDetailEvent
	TraceDetailGrpc
	TraceDetailHttp
	TraceDetailMq
	TraceDetailRedis
	// contains filtered or unexported fields
}

TraceDetail 埋点明细(基类)

func NewTraceDetail added in v0.16.0

func NewTraceDetail(callType eumCallType.Enum, methodName string) *TraceDetail

func (*TraceDetail) End added in v0.16.0

func (receiver *TraceDetail) End(err error)

End 链路明细执行完后,统计用时

func (*TraceDetail) Ignore added in v0.16.0

func (receiver *TraceDetail) Ignore()

func (*TraceDetail) IsIgnore added in v0.16.0

func (receiver *TraceDetail) IsIgnore() bool

func (*TraceDetail) Join added in v0.16.0

func (receiver *TraceDetail) Join()

func (*TraceDetail) Run added in v0.16.0

func (receiver *TraceDetail) Run(fn func())

func (*TraceDetail) ToString added in v0.16.0

func (receiver *TraceDetail) ToString() string

type TraceDetailDatabase added in v0.16.0

type TraceDetailDatabase struct {
	DbName             string // 数据库名
	DbTableName        string // 表名
	DbSql              string // SQL
	DbConnectionString string // 连接字符串
	DbRowsAffected     int64  // 影响行数
}

func (*TraceDetailDatabase) SetSql added in v0.16.0

func (receiver *TraceDetailDatabase) SetSql(connectionString string, DbName string, tableName string, sql string, rowsAffected int64)

type TraceDetailEs added in v0.16.0

type TraceDetailEs struct {
	EsIndexName   string // 索引名称
	EsAliasesName string // 别名
}

type TraceDetailEtcd added in v0.16.0

type TraceDetailEtcd struct {
	EtcdKey     string // key
	EtcdLeaseID int64
}

type TraceDetailEvent added in v0.16.0

type TraceDetailEvent struct {
	EventName string
}

TraceDetailEvent 事件埋点

type TraceDetailGrpc added in v0.16.0

type TraceDetailGrpc struct {
	GrpcMethod          string            // post/get/put/delete
	GrpcUrl             string            // url
	GrpcHeaders         map[string]string // 头部
	GrpcRequestBody     string            // 入参
	GrpcResponseBody    string            // 出参
	GrpcResponseHeaders map[string]string // 响应头部
	GrpcStatusCode      int               // 状态码
}

func (*TraceDetailGrpc) SetHttpRequest added in v0.16.0

func (receiver *TraceDetailGrpc) SetHttpRequest(url string, reqHead map[string]any, rspHead map[string]string, requestBody string, responseBody string, statusCode int)

type TraceDetailHand added in v0.16.0

type TraceDetailHand struct {
	HandName string
}

TraceDetailHand 手动埋点

func (*TraceDetailHand) SetName added in v0.16.0

func (receiver *TraceDetailHand) SetName(name string)

type TraceDetailHttp added in v0.16.0

type TraceDetailHttp struct {
	HttpMethod          string            // post/get/put/delete
	HttpUrl             string            // url
	HttpHeaders         map[string]string // 头部
	HttpRequestBody     string            // 入参
	HttpResponseBody    string            // 出参
	HttpResponseHeaders map[string]string // 响应头部
	HttpStatusCode      int               // 状态码
}

func (*TraceDetailHttp) SetHttpRequest added in v0.16.0

func (receiver *TraceDetailHttp) SetHttpRequest(url string, reqHead map[string]any, rspHead map[string]string, requestBody string, responseBody string, statusCode int)

type TraceDetailMq added in v0.16.0

type TraceDetailMq struct {
	MqServer     string // MQ服务器地址
	MqExchange   string // 交换器名称
	MqRoutingKey string // 路由key
}

type TraceDetailRedis added in v0.16.0

type TraceDetailRedis struct {
	RedisKey          string // redis key
	RedisField        string // hash field
	RedisRowsAffected int    // 影响行数
}

func (*TraceDetailRedis) SetRows added in v0.16.0

func (receiver *TraceDetailRedis) SetRows(rows int)

type WatchKeyContext added in v0.16.0

type WatchKeyContext struct {
	WatchKey string `json:"wk"` // KEY
}

func (WatchKeyContext) IsNil added in v0.16.0

func (receiver WatchKeyContext) IsNil() bool

type WebContext added in v0.16.0

type WebContext struct {
	WebDomain       string            `json:"wd"`  // 请求域名
	WebPath         string            `json:"wp"`  // 请求地址
	WebMethod       string            `json:"wm"`  // 请求方式
	WebContentType  string            `json:"wct"` // 请求内容类型
	WebStatusCode   int               `json:"wsc"` // 状态码
	WebHeaders      map[string]string `json:"wh"`  // 请求头部
	WebRequestBody  string            `json:"wrb"` // 请求参数
	WebResponseBody string            `json:"wpb"` // 输出参数
	WebRequestIp    string            `json:"wip"` // 客户端IP
}

func (WebContext) IsNil added in v0.16.0

func (receiver WebContext) IsNil() bool

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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