2019独角兽企业重金招聘Python工程师标准>>>

内置Trace

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

server/main.go

package mainimport ("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 Servers := grpc.NewServer()// 注册HelloServicepb.RegisterHelloServer(s, HelloService)// 开启tracego 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.goListen on 127.0.0.1:50052
Trace listen on 50051// 进入client目录执行一次客户端请求     

服务端事件查看

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

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

请求日志信息查看

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

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

参考

本系列示例代码

  • go-grpc-example

转载于:https://my.oschina.net/ifraincoat/blog/879548

Golang gRPC实践 连载六 内置Trace相关推荐

  1. Golang gRPC实践 连载七 HTTP协议转换

    gRPC HTTP协议转换 正当有这个需求的时候,就看到了这个实现姿势.源自coreos的一篇博客,转载到了grpc官方博客gRPC with REST and Open APIs. etcd3改用g ...

  2. JS基础 -- 大复习(阶段六:对象和内置对象及预解析)

    1.概念 现实生活:对象就是东西,是一个具体的事物.万物皆对象 程序角度: 对象是一组无序的数据的集合.包含属性与方法 2.对象的创建 方式1:字面量 var person = {      name ...

  3. 用c语言编写实心菱形,C语言编写内置菱形的程序

    C语言编写内置菱形的程序 最近迷上了用C语言编写图形的输出程序,有矩形的.三角形.等腰三角形,平行四边形.菱形.沙漏形.今天尝试着将菱形内置到矩形中,结果成功了,下面将快乐分享给大家,也希望广大C程序 ...

  4. JavaScript 对象增删改查 + 遍历对象+内置函数 + 随机对象

    red red 1.什么是对象? 对象是JavaScript 里的一种数据类型:可以理解为是一种无序的数据集合:用来描述某个事物,例如描述一个人信息 2.对象怎么声明? let 对象名 = {} 例如 ...

  5. python字符串(连载二)|字符串内置函数原来还可以这么玩!

    此系列连载涵盖 字符串,列表,字典,元组,集合等内置函数的基本用法.每次更新十个函数的基本用法.(建议收藏哈) 有福利哦,小编整理了些python学习资料,需要的自行领取!获取方式在文末哈! 目录: ...

  6. golang中字符串内置函数整理

    字符串内置函数 1. 判断字符串的长度 str := "korea国" fmt.Println("str len=", len(str)) 2. 字符串遍历,同 ...

  7. 内置host_浏览器内置对象应用实践

    " 浏览器内置对象,我们每天都与其打交道,可能你并未全面的去了解过它.我们一起讨论下你有过哪些实践." 1. 什么是浏览器对象模型?(BOM :Browser Object Mod ...

  8. 修改器内置脚本编写_Node.js 中实践 Redis Lua 脚本

    对别人的意见要表示尊重.千万别说:"你错了."--卡耐基 Lua 是一种轻量小巧的脚本语言,用标准 C 语言编写并以源代码形式开放,其设计目的是为了嵌入应用程序中,从而为应用程序提 ...

  9. 二十六. Python基础(26)--类的内置特殊属性和方法

    二十六. Python基础(26)--类的内置特殊属性和方法 ● 知识框架 ● 类的内置方法/魔法方法案例1: 单例设计模式 # 类的魔法方法 # 案例1: 单例设计模式 class Teacher: ...

最新文章

  1. 2022-2028年中国企业核心路由交换机行业市场前瞻与投资分析报告
  2. copper实现图片的裁剪和上传(1)
  3. c语言邻接表的构建_c语言数据结构--图的邻接矩阵和邻接表操作的基本操作
  4. Web/app端自动化测试对比
  5. 酷狗音乐在线试听下载
  6. MultiByteToWideChar和WideCharToMultiByte
  7. java笔记数组小知识点
  8. Android跳转WIFI界面的四种方式
  9. (二十四)【2021 ACL】OntoED: Low-resource Event Detection with Ontology Embedding
  10. AndroidStuido连接不上手机的解决方法
  11. centos 6.5安装extundelete软件报错
  12. PHP使用DES进行加密和解密
  13. 基于深度学习的视觉 SLAM 综述
  14. ###【Python版本】股票行情API:获取A股主流指数成分股st股和次新股日内资金净流入A股个股实时盘口/历史行情数据基本财务数据/现金流量数据央行货币供应数据融资融券历史数据的Api
  15. CHD6.3.1部署文档
  16. TortoiseSVN 帮助教程(一)—— 建立版本库
  17. databanding 替换 findviewbyid
  18. 树状数组 之 poj 3067
  19. 【太虚AR_v0.1】使用教程 | AR录屏
  20. AltiumDesigner中plane和layer区别

热门文章

  1. PHP学习笔记-文件操作1
  2. (0079)iOS开发之安全策略之HTTPS(2)
  3. python第七章动手试一试_Python学习3
  4. uniapp中遮罩穿透问题
  5. [C++] stack和queue的常用函数
  6. CentOS7 配置Supervisor开机启动
  7. ubuntu安装openssh-server 报依赖错误的解决过程
  8. 剑指offer 把数组排成最小的数 atoi和itoa,pow
  9. python--函数
  10. 合并果子(NOIP2004)