日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

Go 標準庫想增加 metrics 指標,你支持嗎?

來源: 責編: 時間:2023-10-13 14:37:45 268觀看
導讀大家好,我是煎魚。在 Go 的標準庫中,有一個神奇的標準庫 runtime/metrics,這個標準庫提供了一系列預定義好的 Go 自身的相關指標。如果沒有編寫過基礎監控庫或者關注的比較少的朋友可能會沒接觸到這類指標,甚至不知道有這

大家好,我是煎魚。0xy28資訊網——每日最新資訊28at.com

在 Go 的標準庫中,有一個神奇的標準庫 runtime/metrics,這個標準庫提供了一系列預定義好的 Go 自身的相關指標。0xy28資訊網——每日最新資訊28at.com

如果沒有編寫過基礎監控庫或者關注的比較少的朋友可能會沒接觸到這類指標,甚至不知道有這些值。但我相信你在監控圖標中肯定看到過。0xy28資訊網——每日最新資訊28at.com

本文分兩個部分,第一個部分是快速了解現有的 metrics 指標,第二個部分是了解現在社區希望追加到標準庫的 metrics 指標內容。0xy28資訊網——每日最新資訊28at.com

一起看看社區討論的方向和內容。0xy28資訊網——每日最新資訊28at.com

快速了解 runtime/metrics

以下是一個快速 Demo。代碼如下:0xy28資訊網——每日最新資訊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")}

輸出結果:0xy28資訊網——每日最新資訊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/CKASbysqX9x0xy28資訊網——每日最新資訊28at.com

我梳理了一張對照清單。其中 10 個指標如下:0xy28資訊網——每日最新資訊28at.com

序號
0xy28資訊網——每日最新資訊28at.com

指標
0xy28資訊網——每日最新資訊28at.com

含義
0xy28資訊網——每日最新資訊28at.com

1
0xy28資訊網——每日最新資訊28at.com

/cgo/go-to-c-calls:calls
0xy28資訊網——每日最新資訊28at.com

當前進程從 Go 調用到 C 的次數
0xy28資訊網——每日最新資訊28at.com

2
0xy28資訊網——每日最新資訊28at.com

/cpu/classes/gc/mark/assist:cpu-seconds
0xy28資訊網——每日最新資訊28at.com

預計執行 GC 程序所花費的 CPU 總時長,以協助 GC 并防止其落后于應用程序
0xy28資訊網——每日最新資訊28at.com

3
0xy28資訊網——每日最新資訊28at.com

/cpu/classes/gc/mark/dedicated:cpu-seconds
0xy28資訊網——每日最新資訊28at.com

在專門用于執行 GC 任務的 CPU 處理器(根據 GOMAXPROCS 的定義)上執行 GC 任務預計需要花費的 CPU 總時長
0xy28資訊網——每日最新資訊28at.com

4
0xy28資訊網——每日最新資訊28at.com

/cpu/classes/gc/mark/idle:cpu-seconds
0xy28資訊網——每日最新資訊28at.com

在空閑 CPU 資源上執行 GC 任務所花費的 CPU 總時間
0xy28資訊網——每日最新資訊28at.com

5
0xy28資訊網——每日最新資訊28at.com

/cpu/classes/gc/pause:cpu-seconds
0xy28資訊網——每日最新資訊28at.com

GC 暫停應用程序預計所花費的 CPU 總時長
0xy28資訊網——每日最新資訊28at.com

6
0xy28資訊網——每日最新資訊28at.com

/gc/cycles/automatic:gc-cycles
0xy28資訊網——每日最新資訊28at.com

Go Runtime 程序已完成的 GC 循環次數。
0xy28資訊網——每日最新資訊28at.com

7
0xy28資訊網——每日最新資訊28at.com

/gc/gogc:percent
0xy28資訊網——每日最新資訊28at.com

用戶配置的堆大小目標百分比
0xy28資訊網——每日最新資訊28at.com

8
0xy28資訊網——每日最新資訊28at.com

/gc/heap/allocs:objects
0xy28資訊網——每日最新資訊28at.com

應用程序觸發的堆分配累計計數
0xy28資訊網——每日最新資訊28at.com

9
0xy28資訊網——每日最新資訊28at.com

/memory/classes/heap/free:bytes
0xy28資訊網——每日最新資訊28at.com

Go Runtime 對物理內存的可用空間大小的預估(完全空閑并可返回底層系統但尚未返回的內存)
0xy28資訊網——每日最新資訊28at.com

10
0xy28資訊網——每日最新資訊28at.com

/sched/gomaxprocs:threads
0xy28資訊網——每日最新資訊28at.com

當前 runtime.GOMAXPROCS 的值,或是可以同時執行用戶級 Go 代碼的操作系統線程數。0xy28資訊網——每日最新資訊28at.com

對于完整指標有興趣的可以查看:https://pkg.go.dev/runtime/metrics#hdr-Supported_metrics0xy28資訊網——每日最新資訊28at.com

更多的 metrics 指標

最近在 Go 社區中有同學發起了一項討論《metrics for the standard library[1]》,希望探討和在其他標準庫中添加更多的 metrics 指標,提供更多的可觀察性。0xy28資訊網——每日最新資訊28at.com

比較多同學期望的是網絡、延遲類的指標,針對性能、錯誤等。如下幾種場景:0xy28資訊網——每日最新資訊28at.com

  • net/http 服務端:
  • 處理延遲。
  • 請求/響應體大小。
  • 恐慌(panic)、恢復(recover)。
  • 錯誤/警告(觸發 net/http.Server.ErrorLog 的所有內容)
  • 被拒絕的無效請求。
  • net/http 客戶端:
  • 調用延遲。0xy28資訊網——每日最新資訊28at.com

  • 請求/響應體大小0xy28資訊網——每日最新資訊28at.com

  • 連接池相關。0xy28資訊網——每日最新資訊28at.com

  • database/sql 客戶端:0xy28資訊網——每日最新資訊28at.com

  • 查詢延遲。0xy28資訊網——每日最新資訊28at.com

  • 響應大小。0xy28資訊網——每日最新資訊28at.com

  • 連接池相關。0xy28資訊網——每日最新資訊28at.com

  • net 網絡包相關:0xy28資訊網——每日最新資訊28at.com

  • 例如 TCP、UDP 等,對應的打開連接的數量、連接狀態(空閑、激活、關閉)、連接錯誤等。0xy28資訊網——每日最新資訊28at.com

  • 例如 TLS,在握手階段相關的指標,握手持續時間、握手失敗計數等。0xy28資訊網——每日最新資訊28at.com

新提及的 metrics 指標有沒有滿足你的需求呢,或者有沒有更多的補充?0xy28資訊網——每日最新資訊28at.com

總結

整體上會發現大家對于 Go 標準庫的指標訴求,更多的趨向于底層包。因為無論你用的是什么開源倉庫,其絕大部分都是基于上述提到的包。0xy28資訊網——每日最新資訊28at.com

在現階段,如果自己的 Go 業務應用程序去記錄這些指標,就需要再封裝一層,每一個包,例如:ORM 就需要去實現一遍插件等。0xy28資訊網——每日最新資訊28at.com

而第三方庫實現不會把 metrics 這類非核心功能直接加入初始化實現中。因此官方標準庫對 metrics 的支持是非常有必要的。0xy28資訊網——每日最新資訊28at.com

至少這樣就不用每個團隊都搞一遍 net/http、database/sql 等的延遲調用指標的配置和設置了。0xy28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-13579-0.htmlGo 標準庫想增加 metrics 指標,你支持嗎?

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Java與第三方API集成:調用外部服務的最佳實踐

下一篇: 深入探索Elasticsearch:高級查詢技巧與性能優化策略

標簽:
  • 熱門焦點
  • 6月安卓手機性價比榜:Note 12 Turbo斷層式碾壓

    6月份有一個618,雖然這是京東周年慶的日子,但別的電商也都不約而同的跟進了,反正促銷沒壞處,廠商和用戶都能滿意。618期間一些產品也出現了歷史低價,那么各個價位段的產品性價比
  • 《英雄聯盟》夏季賽總決賽今日開打!JDG對陣LNG首發名單來了 Knight:準備三連冠

    8月5日消息,今日17:00,《英雄聯盟》2023LPL夏季賽總決賽將正式開打,由JDG對陣LNG。對兩支隊伍來說,這場比賽不僅要爭奪夏季賽冠軍,更要決定誰才是LPL賽區一
  • 如何正確使用:Has和:Nth-Last-Child

    我們可以用CSS檢查,以了解一組元素的數量是否小于或等于一個數字。例如,一個擁有三個或更多子項的grid。你可能會想,為什么需要這樣做呢?在某些情況下,一個組件或一個布局可能會
  • 如何通過Python線程池實現異步編程?

    線程池的概念和基本原理線程池是一種并發處理機制,它可以在程序啟動時創建一組線程,并將它們置于等待任務的狀態。當任務到達時,線程池中的某個線程會被喚醒并執行任務,執行完任
  • 如何使用JavaScript創建一只圖像放大鏡?

    譯者 | 布加迪審校 | 重樓如果您曾經瀏覽過購物網站,可能遇到過圖像放大功能。它可以讓您放大圖像的特定區域,以便瀏覽。結合這個小小的重要功能可以大大改善您網站的用戶體驗
  • 2022爆款:ROG魔霸6 冰川散熱系統持續護航

    喜逢開學季,各大商家開始推出自己的新產品,進行打折促銷活動。對于忠實的端游愛好者來說,能夠擁有一款夢寐以求的筆記本電腦是一件十分開心的事。但是現在的
  • “買真退假” 這種“羊毛”不能薅

    □ 法治日報 記者 王春   □ 本報通訊員 胡佳麗  2020年初,還在上大學的小東加入了一個大學生兼職QQ群。群主“七王”在群里介紹一些刷單賺
  • 親歷馬斯克血洗Twitter,硅谷的苦日子在后頭

    文/劉哲銘  編輯/李薇  馬斯克再次揮下裁員大刀?! ∶绹鴷r間11月14日,Twitter約4400名外包員工遭解雇,此次被解雇的員工的主要工作為內容審核等。此前,T
  • 利用職權私自解除被封帳號 Meta開除20多名員工

    11月18日消息,據外媒援引知情人士表示,過去一年時間內,Facebook母公司Meta解雇或處罰了20多名員工以及合同工,指控這些人通過內部系統以不當方式重置用戶帳號,其
Top 主站蜘蛛池模板: 固镇县| 温宿县| 鄄城县| 东乌珠穆沁旗| 夏津县| 阿勒泰市| 西盟| 汤阴县| 光泽县| 治多县| 越西县| 康平县| 岑巩县| 沈阳市| 滨海县| 中卫市| 镇平县| 西乌| 偏关县| 阳谷县| 登封市| 上林县| 小金县| 惠东县| 丹棱县| 东源县| 眉山市| 寻乌县| 获嘉县| 林西县| 固原市| 新营市| 南木林县| 阿瓦提县| 彭阳县| 吉水县| 靖远县| 雷波县| 斗六市| 永丰县| 西贡区|