开发者

Golang中gRPC内置Trace的实现

目录
  • 目录结构
  • 代码
  • 服务器事件查看
  • 请求日志信息查看

gRPC内置了客户端和服务端的请求追踪,基于golang.org/x/net/trace包实现,默认是开启状态,可以查看事件和请求日志,对于基本的请求状态查看调试也是很有帮助的,客户端与服务端基本一致,这里以服务端开启trace server为例,代码如下。

目录结构

Golang中gRPC内置Trace的实现

代码

  • 服务端
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信息。

运行:

Golang中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)
}
  • 请求

Golang中gRPC内置Trace的实现

服务器事件查看

访问:localhost:8081/debug/events,结果如图所示:

Golang中gRPC内置Trace的实现

可以看到服务端注册的服务和服务正常启动的事件信息。

请求日志信息查看

访问:localhost:8081/debug/requests

Golang中gRPC内置Trace的实现

这里可以显示最近的请求状态,包括请求的服务,参数,耗时,响应,对于简单的状态查看还是很方便,默认显示最近10条记录。

到此这篇关于Golang中gRPC内置Trace的实现的文章就介绍到这了,更多相关Golang gRPC内置Trace内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新开发

开发排行榜