140 lines
4.8 KiB
Markdown
140 lines
4.8 KiB
Markdown
# go-common/net/trace
|
||
|
||
##### 项目简介
|
||
> 1. 提供Trace的接口规范
|
||
> 2. 提供 trace 对Tracer接口的实现,供业务接入使用
|
||
|
||
##### 编译环境
|
||
> 1. 请只用golang v1.7.x以上版本编译执行。
|
||
|
||
##### 依赖包
|
||
> 1. 无
|
||
|
||
##### 编译执行
|
||
> 1. 启动接入示例
|
||
if conf.Conf.Common.Trace {
|
||
trace.Init(conf.Conf.tracer)
|
||
}
|
||
> 2. 配置参考
|
||
[tracer]
|
||
proto = "unixgram"
|
||
addr = "/var/run/dapper-collect/dapper-collect.sock"
|
||
family = "account-service"
|
||
|
||
##### 测试
|
||
> 1. 执行当前目录下所有测试文件,测试所有功能
|
||
|
||
##### 特别说明
|
||
> 1. trace 需要在conf.common配置family 和设置trace = true 应用才能接入
|
||
|
||
|
||
### trace sdk serviceName, operationName, tag 规范
|
||
|
||
注: serviceName 及之前的 family 字段, operationName 及之前的 title 字段
|
||
|
||
serviceName 使用 APP_ID 可以通过 caster 上 APP_ID 环境变量获取
|
||
|
||
#### 全局 Tag
|
||
|
||
| 名称 | 类型 | 备注 |
|
||
|----------|--------|------------------------------------------------------|
|
||
| hostname | string | 主机名 |
|
||
| ip | string | caster上使用 POD_IP 环境变量,其他环境取第一个外网IP |
|
||
| zone | string | zone caster 使用 ZONE 环境变量 e.g. sh |
|
||
| region | string | region caster 使用 REGION 环境变量 e.g. region |
|
||
|
||
#### HTTP
|
||
|
||
HTTP server && client 共同 tag
|
||
|
||
| 名称 | 类型 | 备注 |
|
||
|------------------|--------|--------------------------------------------|
|
||
| http.method | string | GET、POST ... |
|
||
| http.url | string | http 完整 URL,包含 query |
|
||
| http.status_code | int | http 状态码 |
|
||
|
||
HTTP server
|
||
|
||
operationName 设置:
|
||
|
||
- 非 restful API 的应用使用 URL path 部分 例如 URL http://api.bilibili.co/x/internal/user/info?mid=123 operationName 为 /x/internal/user/info
|
||
- restful API 的使用路由定义,使用 {} 代替可变部分, 例如 URL http://api.bilibili.co/x/internal/user/info/123 其中 123 为 mid,则 operationName 设置为 /x/internal/user/info/{mid}
|
||
|
||
| 名称 | 类型 | 备注 |
|
||
|-----------|--------|--------------------------------------------|
|
||
| span.kind | string | 固定值 server |
|
||
| component | string | 组件名称 e.g. library/net/http/baldemaster |
|
||
|
||
HTTP client
|
||
|
||
operationName 设置:
|
||
|
||
- 请求内部非 restful 的应用可以直接设置为 URL 的 path 部分
|
||
- 请求的三方的服务或者 restful API operationName 可以直接设置为 HTTP:{Method} e.g. HTTP:GET
|
||
|
||
| 名称 | 类型 | 备注 |
|
||
|--------------|--------|--------------------------------------------------------------------------------------|
|
||
| span.kind | string | 固定值 client |
|
||
| component | string | 组件名称 e.g. library/net/http 或者 net/http |
|
||
| peer.service | string | 请求的服务APP_ID,例如请求 account-service 则应该设置为 main.account.account-service |
|
||
| \_peer.sign | string | URL 的 path 部分不包含 query |
|
||
|
||
注: peer.service 不知道可以不设置,_peer.sign 用于自定探测 peer.service
|
||
|
||
#### gRPC
|
||
|
||
gRPC server && client 共同 tag
|
||
|
||
gRPC server
|
||
|
||
operationName 设置:
|
||
|
||
- 使用 FullMethod https://github.com/grpc/grpc-go/blob/master/interceptor.go#L47:2
|
||
|
||
|
||
| 名称 | 类型 | 备注 |
|
||
|-----------|--------|---------------|
|
||
| span.kind | string | 固定值 server |
|
||
| component | string | 固定值 gRPC |
|
||
|
||
gRPC client
|
||
|
||
operationName 设置:
|
||
|
||
- 使用 FullMethod https://github.com/grpc/grpc-go/blob/master/interceptor.go#L47:2
|
||
|
||
| 名称 | 类型 | 备注 |
|
||
|--------------|--------|--------------------------------------------------------------------------------------|
|
||
| span.kind | string | 固定值 client |
|
||
| component | string | 固定值 gRPC |
|
||
| peer.service | string | 请求的服务APP_ID,例如请求 account-service 则应该设置为 main.account.account-service |
|
||
| \_peer.sign | string | gRPC FullMethod |
|
||
|
||
#### goRPC
|
||
|
||
TODO
|
||
|
||
#### Memcache
|
||
|
||
TODO
|
||
|
||
#### Redis
|
||
|
||
TODO
|
||
|
||
#### MySQL
|
||
|
||
TODO
|
||
|
||
#### Databus
|
||
|
||
TODO
|
||
|
||
#### HBase
|
||
|
||
TODO
|
||
|
||
#### ElasticSearch
|
||
|
||
TODO
|