trace

package
v0.15.0 Latest Latest
Warning

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

Go to latest
Published: Oct 30, 2024 License: MIT Imports: 8 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[ITraceContext]()

CurTraceContext 当前请求的Trace上下文

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

ScopeLevel 层级列表

Functions

func ClearComment added in v0.13.0

func ClearComment()

ClearComment 移除注释

func GetCallerInfo

func GetCallerInfo() (string, string, int)

func GetComment added in v0.13.0

func GetComment() string

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

func SetComment added in v0.13.0

func SetComment(cmt ...string)

SetComment 添加操作的注释

Types

type BaseTraceDetail

type BaseTraceDetail struct {
	TraceId        string           // 上下文ID
	TraceLevel     int              // 逐层递增(显示上下游顺序)
	AppId          string           // 应用ID
	AppName        string           // 应用名称
	AppIp          string           // 应用IP
	ParentAppName  string           // 上游应用
	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            // 调用停止时间戳(微秒)
	UseTs          time.Duration    // 总共使用时间微秒
	UseDesc        string           // 总共使用时间(描述)

	Exception *ExceptionStack   // 异常信息
	CreateAt  dateTime.DateTime // 请求时间
	// contains filtered or unexported fields
}

BaseTraceDetail 埋点明细(基类)

func (*BaseTraceDetail) End

func (receiver *BaseTraceDetail) End(err error)

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

func (*BaseTraceDetail) GetLevel

func (receiver *BaseTraceDetail) GetLevel() int

func (*BaseTraceDetail) Ignore

func (receiver *BaseTraceDetail) Ignore()

func (*BaseTraceDetail) IsIgnore

func (receiver *BaseTraceDetail) IsIgnore() bool

func (*BaseTraceDetail) Run added in v0.15.0

func (receiver *BaseTraceDetail) Run(fn func())

func (*BaseTraceDetail) SetHttpRequest added in v0.12.0

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

func (*BaseTraceDetail) SetRows added in v0.15.0

func (receiver *BaseTraceDetail) SetRows(rows int)

func (*BaseTraceDetail) SetSql

func (receiver *BaseTraceDetail) SetSql(connectionString string, dbName string, tableName string, sql string, rowsAffected int64)

type EmptyManager

type EmptyManager struct {
}

func (*EmptyManager) EntryEventConsumer added in v0.13.0

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

func (*EmptyManager) EntryFSchedule

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

func (*EmptyManager) EntryMqConsumer

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

func (*EmptyManager) EntryQueueConsumer

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

func (*EmptyManager) EntryTask

func (*EmptyManager) EntryTask(taskName string) ITraceContext

func (*EmptyManager) EntryTaskGroup added in v0.12.0

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

func (*EmptyManager) EntryWatchKey

func (*EmptyManager) EntryWatchKey(key string) ITraceContext

func (*EmptyManager) EntryWebApi

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

func (*EmptyManager) EntryWebSocket added in v0.15.0

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

func (*EmptyManager) GetCurTrace

func (*EmptyManager) GetCurTrace() ITraceContext

func (*EmptyManager) GetTraceId added in v0.14.0

func (*EmptyManager) GetTraceId() string

func (*EmptyManager) TraceDatabase

func (*EmptyManager) TraceDatabase() ITraceDetail

func (*EmptyManager) TraceDatabaseOpen

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

func (*EmptyManager) TraceElasticsearch

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

func (*EmptyManager) TraceEtcd

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

func (*EmptyManager) TraceEventPublish added in v0.13.0

func (*EmptyManager) TraceEventPublish(eventName string) ITraceDetail

func (*EmptyManager) TraceHand

func (*EmptyManager) TraceHand(name string) ITraceDetail

func (*EmptyManager) TraceHttp

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

func (*EmptyManager) TraceMq

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

func (*EmptyManager) TraceMqSend

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

func (*EmptyManager) TraceRedis

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

type ExceptionStack

type ExceptionStack struct {
	ExceptionCallFile     string // 调用者文件路径
	ExceptionCallLine     int    // 调用者行号
	ExceptionCallFuncName string // 调用者函数名称
	ExceptionIsException  bool   // 是否执行异常
	ExceptionMessage      string // 异常信息
}

func (ExceptionStack) IsNil added in v0.11.0

func (receiver ExceptionStack) IsNil() bool

type IManager

type IManager interface {
	GetCurTrace() ITraceContext
	// GetTraceId 获取当前TraceId
	GetTraceId() string
	// EntryWebApi 创建webapi的链路追踪入口
	EntryWebApi(domain string, path string, method string, contentType string, headerDictionary map[string]string, requestIp string) ITraceContext
	// EntryWebSocket 创建WebSocket的链路追踪入口
	EntryWebSocket(domain string, path string, headerDictionary map[string]string, requestIp string) ITraceContext
	// EntryMqConsumer 创建MQ消费入口
	EntryMqConsumer(parentTraceId, parentAppName, server string, queueName string, routingKey string) ITraceContext
	// EntryQueueConsumer 创建Queue消费入口
	EntryQueueConsumer(queueName, subscribeName string) ITraceContext
	// EntryEventConsumer 创建Event消费入口
	EntryEventConsumer(server, eventName, subscribeName string) ITraceContext
	// EntryTask 创建本地任务入口
	EntryTask(taskName string) ITraceContext
	// EntryTaskGroup 创建本地任务入口(调度中心专用)
	EntryTaskGroup(taskName string, taskGroupName string, taskId int64) ITraceContext
	// EntryFSchedule 创建调度中心入口
	EntryFSchedule(taskGroupName string, taskId int64, data map[string]string) ITraceContext
	// EntryWatchKey 创建etcd入口
	EntryWatchKey(key string) ITraceContext
	// TraceDatabaseOpen 数据库埋点
	TraceDatabaseOpen(dbName string, connectString string) ITraceDetail
	// TraceDatabase 数据库埋点
	TraceDatabase() ITraceDetail
	// TraceElasticsearch Elasticsearch埋点
	TraceElasticsearch(method string, IndexName string, AliasesName string) ITraceDetail
	// TraceEtcd etcd埋点
	TraceEtcd(method string, key string, leaseID int64) ITraceDetail
	// TraceHand 手动埋点
	TraceHand(name string) ITraceDetail
	// TraceEventPublish 事件发布
	TraceEventPublish(eventName string) ITraceDetail
	// TraceMqSend send埋点
	TraceMqSend(method string, server string, exchange string, routingKey string) ITraceDetail
	// TraceMq open、create埋点
	TraceMq(method string, server string, exchange string) ITraceDetail
	// TraceRedis Redis埋点
	TraceRedis(method string, key string, field string) ITraceDetail
	// TraceHttp http埋点
	TraceHttp(method string, url string) ITraceDetail
}

IManager 链路追踪管理

type ITraceContext

type ITraceContext interface {
	// End 结束
	End(err error)
	// SetBody 设置webapi的响应报文
	SetBody(requestBody string, statusCode int, responseBody string)
	// SetResponseBody 设置webapi的响应报文
	SetResponseBody(responseBody string)
	// GetTraceId 获取traceId
	GetTraceId() string
	// GetStartTs 获取链路开启时间
	GetStartTs() int64
	// GetList 获取链路明细
	GetList() []any
	// AddDetail 添加链路明细
	AddDetail(detail ITraceDetail)
	// Error 异常信息
	Error(err error)
	// Ignore 忽略这次的链路追踪
	Ignore()
	// GetAppInfo 获取应用信息
	GetAppInfo() (string, string, string, string, string)
	// GetTraceLevel 得到当前链路层
	GetTraceLevel() int
}

type ITraceDetail

type ITraceDetail interface {
	// Run 运行完后调用End
	Run(fn func())
	ToString() string
	GetTraceDetail() *BaseTraceDetail
	End(err error)
	SetSql(connectionString string, DbName string, tableName string, sql string, rowsAffected int64)
	// Ignore 忽略这次的链路追踪
	Ignore()
	// IsIgnore 是否忽略
	IsIgnore() bool
	// GetLevel 获取层级
	GetLevel() int
	// SetHttpRequest 设置Http请求出入参
	SetHttpRequest(url string, reqHead map[string]any, rspHead map[string]string, requestBody string, responseBody string, statusCode int)
	// 设置得到的数据量
	SetRows(rows int)
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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