Go服務監控

2021-09-29 12:19:49 字數 2401 閱讀 4221

使用golang可以開發出高效能的http、grpc服務。一般專案執行後,我們也需要監控服務的效能或者進行除錯。除了打日誌,還有沒有其他視覺化的方案呢?答案是有的。

本文將會介紹幾種常用的監控方案。

時光**

這個是go語言自帶的。啟用很簡單:

_ "net/http/pprof"
僅需顯式的在 main 包的 import 裡增加上面一行即可。完整使用示例:

}執行之後,在瀏覽器開啟就能看到監控的一些資訊了:

注:生產環境一般不會按上面那麼寫,都是開個協程:

go http.listenandserve(":10108", nil)
如何啟動 pprof 視覺化介面?

下面以heap為例:

方法一:

go tool pprof -http=:8081 http://localhost:10108/debug/pprof/heap
方法二:

go tool pprof http://localhost:10108/debug/pprof/heap
然後在互動式命令列輸入web即可跳轉到預設瀏覽器:

檢視協程資訊:

go tool pprof -http=:8081 http://localhost:10108/debug/pprof/goroutine
乙個可以實時檢視golang程式記憶體、cpu、gc、協程等變化情況的視覺化工具。

跟pprof一樣, import引入, 然後開端口監聽就行了:

_ "github.com/mkevac/debugcharts"
//省略其它**...

執行後,瀏覽器開啟 http://localhost:10108/debug/charts/ 就能看到了:

prometheus是grafana的外掛程式,支援go監控的視覺化。

首先需要**裡引入包:

"github.com/prometheus/client_golang/prometheus/promhttp"
然後增加路由:

配置grafana後,效果圖:

如果每乙個監控都開乙個埠就有點浪費埠了。可以在乙個埠裡開啟 pprof+charts+prometheus 。

1、入口檔案增加**:

//監控

}()

2、import增加

python監控 python 監控服務

最近寫了乙個web測試程式,因為部署在其他地方,所以想弄個監控的程序去看服務是不是還在,要是不在好發郵件,就用python簡單的寫了乙個。當然,有的時候也要考慮到監控程序本身就掛了,或者不想監控了。首先監控指令碼是這樣,很簡單 monitor.py coding 簡單的monitor函式,主要監控乙...

服務監控 PHP FPM狀態監控

root linux node1 vim etc zabbix zabbix agentd.conf 編輯配置檔案引用key include etc zabbix zabbix agentd.d conf root linux node1 mkdir etc zabbix scripts 存放she...

服務監控 TCP狀態監控

tcp的連線狀態對於我們web伺服器來說是至關重要的,尤其是併發量estab 或者是syn recv值,假如這個值比較大的話我們可以認為是不是受到了攻擊,或是是time wait值比較高的話,我們要考慮看我們核心是否需要調優,太高的time wait值的話會占用太多埠,要是埠少的話後果不堪設想 所以...