Zipkin : Golang 微服务全链路监控(三)
Golang 微服务全链路监控实现
- broker-service -> auth-service -> postgres db
- zipkin 监控:需代码入侵
使用 zipkin 库的 serverMiddleware,其通过 Http 跟踪(trace)链路。若要连接数据库,需传 tracer
zipkinhttp "github.com/openzipkin/zipkin-go/middleware/http"
一、auth-service
- 通过 Http 传递 span
main.go
package main
import (
"database/sql"
"log"
"net/http"
"os"
"time"
"tracing/auth-service/data"
zipkinhttp "github.com/openzipkin/zipkin-go/middleware/http"
_ "github.com/jackc/pgconn"
_ "github.com/jackc/pgx/v4"
_ "github.com/jackc/pgx/v4/stdlib"
)
const webPort = "80"
const (
// Our service name.
serviceName = "authentication"
// Host + port of our service.
hostPort = "localhost:8090"
// Endpoint to send Zipkin spans to.
zipkinHTTPEndpoint = "http://localhost:9411/api/v2/spans"
)
var counts int64
type Config struct {
DB *sql.DB
Models data.Models
}
func main() {
log.Println("Starting authentication service: ", webPort)
//connect to DB
conn := connectToDB()
if conn == nil {
log.Panic("Can't connect to Postgres!")
}
//setup config
app := Config{
DB: conn,
Models: data.New(conn),
}
tracer := GetTracer(serviceName, hostPort, zipkinHTTPEndpoint)
// create global zipkin http server middleware
serverMiddleware := zipkinhttp