Golang中gRPC内置Trace的实现
目录
- 目录结构
- 代码
- 服务器事件查看
- 请求日志信息查看
gRPC内置了客户端和服务端的请求追踪,基于golang.org/x/net/trace包实现,默认是开启状态,可以查看事件和请求日志,对于基本的请求状态查看调试也是很有帮助的,客户端与服务端基本一致,这里以服务端开启trace server为例,代码如下。
目录结构
代码
- 服务端
package main import ( "context" "fmt" "log" "net" "net/http" hello "sample-app/grpc/proto" "golang.org/x/net/trace" "google.golang.org/grpc" ) // gprc服务器地址 var Addr = "127.0.0.1:8080" // 定义结构 实现约定接口 type helloService struct{} // uGWWUZtlsa服务 var HelloService = helloService{} // 实现服务接口 func (h helloService) SayHello(c context.Context, req *hello.HelloRequest) (*hello.HelloResponse, error) { resp := phpnew(hello.HelloResponse) resp.Message = fmt.Sprintf("Hello %s", req.Name) return resp, nil } func init() { //使用trace grpc.EnableTracing = true } func main() { ls, err := net.Listen("tcp", Addr) if err != nil { fmt.Println(err) return } //实例化grpc server server := grpc.NewServer() //注册HelloService hello.RegisterHelloServjser(server, HelloService) //开启trace go startTrace() fmt.Println("Listen on " + Addr) server.Serve(ls) } func s编程客栈tartTrace() { trace.AuthRequest = func(req *http.Request) (any, sensitive bool) { return true, true } go http.ListenAndServe(":8081", nil) log.Println("trace listen on 8081") }
这里我们开启一个http编程客栈服务监听8081端口,用来查看grpc请求的trace信息。
运行:
- 客户端
package main import ( "context" "fmt" hello "sample-app/grpc/proto" "google.golang.org/grpc" ) const ( Addr = "127.0.0.1:8080" ) func main() { conn, err := grpc.Dial(Addr, grpc.WithInsecure()) if err != nil { fmt.Println("Dial fail", err) return } defer conn.Close() //初始化服务器 c := hello.NewHelloClient(conn) //单项请求 req := new(hello.HelloRequest) req.Name = "gRPC" resp, err := c.SayHello(context.Background(), req) if err != nil { fmt.Println("say hello fail", err) return } fmt.Println(resp.Message) }
- 请求
服务器事件查看
访问:localhost:8081/debug/events,结果如图所示:
可以看到服务端注册的服务和服务正常启动的事件信息。
请求日志信息查看
访问:localhost:8081/debug/requests
这里可以显示最近的请求状态,包括请求的服务,参数,耗时,响应,对于简单的状态查看还是很方便,默认显示最近10条记录。
到此这篇关于Golang中gRPC内置Trace的实现的文章就介绍到这了,更多相关Golang gRPC内置Trace内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!
精彩评论