当前位置:首页 > 科技  > 软件

Go 标准库想增加 metrics 指标,你支持吗?

来源: 责编: 时间:2023-10-13 14:37:45 199观看
导读大家好,我是煎鱼。在 Go 的标准库中,有一个神奇的标准库 runtime/metrics,这个标准库提供了一系列预定义好的 Go 自身的相关指标。如果没有编写过基础监控库或者关注的比较少的朋友可能会没接触到这类指标,甚至不知道有这

大家好,我是煎鱼。yTP28资讯网——每日最新资讯28at.com

在 Go 的标准库中,有一个神奇的标准库 runtime/metrics,这个标准库提供了一系列预定义好的 Go 自身的相关指标。yTP28资讯网——每日最新资讯28at.com

如果没有编写过基础监控库或者关注的比较少的朋友可能会没接触到这类指标,甚至不知道有这些值。但我相信你在监控图标中肯定看到过。yTP28资讯网——每日最新资讯28at.com

本文分两个部分,第一个部分是快速了解现有的 metrics 指标,第二个部分是了解现在社区希望追加到标准库的 metrics 指标内容。yTP28资讯网——每日最新资讯28at.com

一起看看社区讨论的方向和内容。yTP28资讯网——每日最新资讯28at.com

快速了解 runtime/metrics

以下是一个快速 Demo。代码如下:yTP28资讯网——每日最新资讯28at.com

func main() { descs := metrics.All() samples := make([]metrics.Sample, len(descs)) for i := range samples {  samples[i].Name = descs[i].Name } metrics.Read(samples) for _, sample := range samples {  name, value := sample.Name, sample.Value  switch value.Kind() {  case metrics.KindUint64:   fmt.Printf("%s: %d/n", name, value.Uint64())  case metrics.KindFloat64:   fmt.Printf("%s: %f/n", name, value.Float64())  case metrics.KindFloat64Histogram:   fmt.Printf("%s: %f/n", name, medianBucket(value.Float64Histogram()))   ...  } }}func medianBucket(h *metrics.Float64Histogram) float64 { total := uint64(0) for _, count := range h.Counts {  total += count } thresh := total / 2 total = 0 for i, count := range h.Counts {  total += count  if total >= thresh {   return h.Buckets[i]  } } panic("should not happen")}

输出结果:yTP28资讯网——每日最新资讯28at.com

/cgo/go-to-c-calls:calls: 0/cpu/classes/gc/mark/assist:cpu-seconds: 0.000000/cpu/classes/gc/mark/dedicated:cpu-seconds: 0.000000.../gc/cycles/automatic:gc-cycles: 0/gc/cycles/forced:gc-cycles: 0/gc/cycles/total:gc-cycles: 0/gc/gogc:percent: 100/gc/gomemlimit:bytes: 9223372036854775807/gc/heap/allocs-by-size:bytes: 8193.000000/gc/heap/allocs:bytes: 56832/gc/heap/allocs:objects: 6/gc/heap/frees-by-size:bytes: 1.000000/gc/heap/frees:bytes: 0/gc/heap/frees:objects: 0/gc/heap/goal:bytes: 4194304...

里面包含了相当多的 Go 系统指标。完整的代码运行和输出可以查看 https://go.dev/play/p/CKASbysqX9xyTP28资讯网——每日最新资讯28at.com

我梳理了一张对照清单。其中 10 个指标如下:yTP28资讯网——每日最新资讯28at.com

序号
yTP28资讯网——每日最新资讯28at.com

指标
yTP28资讯网——每日最新资讯28at.com

含义
yTP28资讯网——每日最新资讯28at.com

1
yTP28资讯网——每日最新资讯28at.com

/cgo/go-to-c-calls:calls
yTP28资讯网——每日最新资讯28at.com

当前进程从 Go 调用到 C 的次数
yTP28资讯网——每日最新资讯28at.com

2
yTP28资讯网——每日最新资讯28at.com

/cpu/classes/gc/mark/assist:cpu-seconds
yTP28资讯网——每日最新资讯28at.com

预计执行 GC 程序所花费的 CPU 总时长,以协助 GC 并防止其落后于应用程序
yTP28资讯网——每日最新资讯28at.com

3
yTP28资讯网——每日最新资讯28at.com

/cpu/classes/gc/mark/dedicated:cpu-seconds
yTP28资讯网——每日最新资讯28at.com

在专门用于执行 GC 任务的 CPU 处理器(根据 GOMAXPROCS 的定义)上执行 GC 任务预计需要花费的 CPU 总时长
yTP28资讯网——每日最新资讯28at.com

4
yTP28资讯网——每日最新资讯28at.com

/cpu/classes/gc/mark/idle:cpu-seconds
yTP28资讯网——每日最新资讯28at.com

在空闲 CPU 资源上执行 GC 任务所花费的 CPU 总时间
yTP28资讯网——每日最新资讯28at.com

5
yTP28资讯网——每日最新资讯28at.com

/cpu/classes/gc/pause:cpu-seconds
yTP28资讯网——每日最新资讯28at.com

GC 暂停应用程序预计所花费的 CPU 总时长
yTP28资讯网——每日最新资讯28at.com

6
yTP28资讯网——每日最新资讯28at.com

/gc/cycles/automatic:gc-cycles
yTP28资讯网——每日最新资讯28at.com

Go Runtime 程序已完成的 GC 循环次数。
yTP28资讯网——每日最新资讯28at.com

7
yTP28资讯网——每日最新资讯28at.com

/gc/gogc:percent
yTP28资讯网——每日最新资讯28at.com

用户配置的堆大小目标百分比
yTP28资讯网——每日最新资讯28at.com

8
yTP28资讯网——每日最新资讯28at.com

/gc/heap/allocs:objects
yTP28资讯网——每日最新资讯28at.com

应用程序触发的堆分配累计计数
yTP28资讯网——每日最新资讯28at.com

9
yTP28资讯网——每日最新资讯28at.com

/memory/classes/heap/free:bytes
yTP28资讯网——每日最新资讯28at.com

Go Runtime 对物理内存的可用空间大小的预估(完全空闲并可返回底层系统但尚未返回的内存)
yTP28资讯网——每日最新资讯28at.com

10
yTP28资讯网——每日最新资讯28at.com

/sched/gomaxprocs:threads
yTP28资讯网——每日最新资讯28at.com

当前 runtime.GOMAXPROCS 的值,或是可以同时执行用户级 Go 代码的操作系统线程数。yTP28资讯网——每日最新资讯28at.com

对于完整指标有兴趣的可以查看:https://pkg.go.dev/runtime/metrics#hdr-Supported_metricsyTP28资讯网——每日最新资讯28at.com

更多的 metrics 指标

最近在 Go 社区中有同学发起了一项讨论《metrics for the standard library[1]》,希望探讨和在其他标准库中添加更多的 metrics 指标,提供更多的可观察性。yTP28资讯网——每日最新资讯28at.com

比较多同学期望的是网络、延迟类的指标,针对性能、错误等。如下几种场景:yTP28资讯网——每日最新资讯28at.com

  • net/http 服务端:
  • 处理延迟。
  • 请求/响应体大小。
  • 恐慌(panic)、恢复(recover)。
  • 错误/警告(触发 net/http.Server.ErrorLog 的所有内容)
  • 被拒绝的无效请求。
  • net/http 客户端:
  • 调用延迟。yTP28资讯网——每日最新资讯28at.com

  • 请求/响应体大小yTP28资讯网——每日最新资讯28at.com

  • 连接池相关。yTP28资讯网——每日最新资讯28at.com

  • database/sql 客户端:yTP28资讯网——每日最新资讯28at.com

  • 查询延迟。yTP28资讯网——每日最新资讯28at.com

  • 响应大小。yTP28资讯网——每日最新资讯28at.com

  • 连接池相关。yTP28资讯网——每日最新资讯28at.com

  • net 网络包相关:yTP28资讯网——每日最新资讯28at.com

  • 例如 TCP、UDP 等,对应的打开连接的数量、连接状态(空闲、激活、关闭)、连接错误等。yTP28资讯网——每日最新资讯28at.com

  • 例如 TLS,在握手阶段相关的指标,握手持续时间、握手失败计数等。yTP28资讯网——每日最新资讯28at.com

新提及的 metrics 指标有没有满足你的需求呢,或者有没有更多的补充?yTP28资讯网——每日最新资讯28at.com

总结

整体上会发现大家对于 Go 标准库的指标诉求,更多的趋向于底层包。因为无论你用的是什么开源仓库,其绝大部分都是基于上述提到的包。yTP28资讯网——每日最新资讯28at.com

在现阶段,如果自己的 Go 业务应用程序去记录这些指标,就需要再封装一层,每一个包,例如:ORM 就需要去实现一遍插件等。yTP28资讯网——每日最新资讯28at.com

而第三方库实现不会把 metrics 这类非核心功能直接加入初始化实现中。因此官方标准库对 metrics 的支持是非常有必要的。yTP28资讯网——每日最新资讯28at.com

至少这样就不用每个团队都搞一遍 net/http、database/sql 等的延迟调用指标的配置和设置了。yTP28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-13349-0.htmlGo 标准库想增加 metrics 指标,你支持吗?

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: Java与第三方API集成:调用外部服务的最佳实践

下一篇: 深入探索Elasticsearch:高级查询技巧与性能优化策略

标签:
  • 热门焦点
  • 2023年Q2用户偏好榜:12+256G版本成新主流

    2023年Q2用户偏好榜:12+256G版本成新主流

    3月份的性能榜、性价比榜和好评榜之后,就要轮到2023年的第二季度偏好榜了,上半年的新机潮已经过去,最明显的肯定就是大内存和存储的机型了,另外部分中端机也取消了屏幕塑料支架
  • 一文搞定Java NIO,以及各种奇葩流

    一文搞定Java NIO,以及各种奇葩流

    大家好,我是哪吒。很多朋友问我,如何才能学好IO流,对各种流的概念,云里雾里的,不求甚解。用到的时候,现百度,功能虽然实现了,但是为什么用这个?不知道。更别说效率问题了~下次再遇到,
  • 本地生活这块肥肉,拼多多也想吃一口

    本地生活这块肥肉,拼多多也想吃一口

    出品/壹览商业 作者/李彦编辑/木鱼拼多多也看上本地生活这块蛋糕了。近期,拼多多在App首页“充值中心”入口上线了本机生活界面。壹览商业发现,该界面目前主要
  • 腾讯盖楼,字节拆墙

    腾讯盖楼,字节拆墙

    来源 | 光子星球撰文 | 吴坤谚编辑 | 吴先之“想重温暴刷深渊、30+技能搭配暴搓到爽的游戏体验吗?一起上晶核,即刻暴打!”曾凭借直播腾讯旗下代理格斗游戏《DNF》一
  • “又被陈思诚骗了”

    “又被陈思诚骗了”

    作者|张思齐 出品|众面(ID:ZhongMian_ZM)如今的国产悬疑电影,成了陈思诚的天下。最近大爆电影《消失的她》票房突破30亿断层夺魁暑期档,陈思诚再度风头无两。你可以说陈思诚的
  • 东方甄选单飞:有些鸟注定是关不住的

    东方甄选单飞:有些鸟注定是关不住的

    作者:彭宽鸿来源:华尔街科技眼‍‍‍‍‍‍‍‍‍‍东方甄选创始人俞敏洪带队的“7天甘肃行”直播活动已在近日顺利收官。成立后一
  • 华为开发者大会2023日程公开:开设鸿蒙HarmonyOS 4体验区

    华为开发者大会2023日程公开:开设鸿蒙HarmonyOS 4体验区

    IT之家 7 月 31 日消息,华为今日公布了 HDC.Together 开发者大会 2023 的详细日程。整场大会将于 8 月 4 日-6 日之间举行,届时将发布最新一代鸿蒙 H
  • 机构称Q2国内智能手机销量同比下滑4% vivo份额重回第1

    机构称Q2国内智能手机销量同比下滑4% vivo份额重回第1

    7月29日消息,根据市场调查机构Counterpoint Research公布的最新报告,2023年第2季度中国智能手机销量同比下降4%,创新自2014年以来第2季度销量新低。报
  • 支持aptX Lossless无损传输 iQOO TWS 1赛道版发布限时优惠价369元

    支持aptX Lossless无损传输 iQOO TWS 1赛道版发布限时优惠价369元

    2023年7月4日,“无损音质,声动人心”iQOO TWS 1正式发布,支持aptX Lossless无损传输,限时优惠价369元。iQOO TWS 1耳机率先支持端到端aptX Lossless无
Top