go-common/library/net/trace/README.md
2019-04-22 18:49:16 +08:00

140 lines
4.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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