最近打算学习zipkin的使用,所以写此文记录一下zipkin在httpserver简单使用。
官方github地址:https://github.com/openzipkin/zipkin-go
此文根据官方示例代码进行分析,示例文件名称:example_httpserver_test.go
以下为具体流程分析:
1.创建NewReporter
reporter := logreporter.NewReporter(log.New(os.Stderr, "", log.LstdFlags))
defer reporter.Close()
首先创建Reporter,此处传入了os.Stderr,回将收到的数据直接打印到控制台。
设置了关闭函数,释放资源。
2.创建Endpoint
endpoint, err := zipkin.NewEndpoint("myService", "localhost:0")
if err != nil {
log.Fatalf("unable to create local endpoint: %+v\n", err)
}
需要传入服务名称和hostPort,返回EndPoint对象,包含服务名,ip,端口信息
type Endpoint struct {
ServiceName string
IPv4 net.IP
IPv6 net.IP
Port uint16
}
3.创建Tracer
tracer, err := zipkin.NewTracer(reporter, zipkin.WithLocalEndpoint(endpoint))
if err != nil {
log.Fatalf("unable to create tracer: %+v\n", err)
}
返回Tracer对象,属性如下:
type Tracer struct {
defaultTags map[string]string
extractFailurePolicy ExtractFailurePolicy
sampler Sampler
generate idgenerator.IDGenerator
reporter repo