zoukankan      html  css  js  c++  java
  • Golang gRPC实践 连载六 内置Trace

    内置Trace

    grpc默认提供了客户端和服务端的trace日志,可惜没有提供自定义接口,当前只能查看基本的事件日志和请求日志,对于基本的请求状态查看也是很有帮助的,客户端与服务端基本一致,这里已服务端开启trace为例,修改hello项目的server代码:

    server/main.go

    package main
    
    import (
        "net"
        "net/http"
    
        pb "git.vodjk.com/go-grpc/example/proto" // 引入编译生成的包
    
        "golang.org/x/net/context"
        "golang.org/x/net/trace"  // 引入trace包
        "google.golang.org/grpc"
        "google.golang.org/grpc/grpclog"
    )
    
    const (
        // Address gRPC服务地址
        Address = "127.0.0.1:50052"
    )
    
    // 定义helloService并实现约定的接口
    type helloService struct{}
    
    // HelloService ...
    var HelloService = helloService{}
    
    func (h helloService) SayHello(ctx context.Context, in *pb.HelloRequest) (*pb.HelloReply, error) {
        resp := new(pb.HelloReply)
        resp.Message = "Hello " + in.Name + "."
    
        return resp, nil
    }
    
    func main() {
        listen, err := net.Listen("tcp", Address)
        if err != nil {
            grpclog.Fatalf("failed to listen: %v", err)
        }
    
        // 实例化grpc Server
        s := grpc.NewServer()
    
        // 注册HelloService
        pb.RegisterHelloServer(s, HelloService)
    
        // 开启trace
        go startTrace()
    
        grpclog.Println("Listen on " + Address)
        s.Serve(listen)
    }
    
    func startTrace() {
        trace.AuthRequest = func(req *http.Request) (any, sensitive bool) {
            return true, true
        }
        go http.ListenAndServe(":50051", nil)
        grpclog.Println("Trace listen on 50051")
    }
    

    这里我们开启一个http服务监听50051端口,用来查看grpc请求的trace信息

    运行:

    go run main.go
    
    Listen on 127.0.0.1:50052                                                       
    Trace listen on 50051
    
    // 进入client目录执行一次客户端请求     

    服务端事件查看

    访问:localhost:50051/debug/events,结果如图:

    图片描述

    可以看到服务端注册的服务和服务正常启动的事件信息,默认trace中只有这一个事件

    请求日志信息查看

    访问:localhost:50051/debug/requests,结果如图:

    图片描述

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

    参考

    本系列示例代码

  • 相关阅读:
    redhat Nginx 安装
    黑客经验谈:跳板攻击入侵技术实例解析
    Linux各版本的本地root密码破解方法
    python学习笔记
    Git 提交的正确姿势:Commit message 编写指南
    数论 + 扩展欧几里得
    数论
    flutter 延时函数delay Loading页面
    flutter 切换tab后保留tab状态
    iOS 应用"无法安装应用程序 因为证书无效"的解决方案
  • 原文地址:https://www.cnblogs.com/ExMan/p/12163104.html
Copyright © 2011-2022 走看看