Prometheus
Prometheus是一個非常棒的工具,結合grafana能夠讓我在不寫程式碼,或者少寫程式碼的情況下搭建一套有效的監控體系。這裡介紹一下Prometheus監控golang程式的方式。
Golang 服務程式
Golang的Web程式,我使用了YoyoGo框架,《 YoyoGo基於ASP.NET Core設計的Golang實現 》 可以檢視這篇文章進行了解。 最新也釋出了最新的v1.5.0版本,下面Prometheus介面就是這個版本的新功能。
想要程式能夠被監控,就必須要將程式執行中的各專案指標暴露出來,提供給Promtheus進行資訊採集,當然Prometheus也提供push的方式,本例中將使用拉的方式。我們可以使用Prometheus提供的golang客戶端暴露自身的執行時資訊。程式碼例子如下:
import (
"github.com/yoyofx/yoyogo/WebFramework"
"github.com/yoyofx/yoyogo/WebFramework/Context"
"github.com/yoyofx/yoyogo/WebFramework/Endpoints"
)
func main(){
YoyoGo.CreateDefaultBuilder(func(router Router.IRouterBuilder) {
Endpoints.UsePrometheus(router)
router.GET("/info", func (ctx *Context.HttpContext) {
ctx.JSON(200, Context.M{"info": "ok"})
})
}).Build().Run()
}
訪問本地的8080埠就能看到監控的指標,這裡監控的都是預設指標,當然你可以可以自定義你需要的量化的指標,然後暴露出來,這裡就不多介紹了。
配置 Prometheus
在Prometheus官網下載後,我們來配置下 Prometheus,讓它為我們採集的Golang服務程式的監控指標:
prometheus.yml:
- job_name: 'golang'
scrape_interval: 10s
metrics_path: /actuator/metrics
static_configs:
- targets: ['localhost:8080']
啟動 Prometheus :
.\prometheus.exe
啟動Promethues等待10s,Golang指標就會被採集到Promethues的時序資料庫中了,訪問 http://localhost:9090/ 得到如下效果
Grafana
在Grafana官網下載後,接下來就是把這些指標在grafana圖形化展示出來:
啟動Grafana:
./grafana-server
進入http://localhost:3000/ 後,配置資料來源 DataSource,Dashboard直接使用了官方外掛 10826 匯入這個ID後,最後展示出來的效果如下:
最後
最近在寫基於Golang的工具和框架,還請多多Star.
YoyoGo 是一個用 Go 編寫的簡單,輕便,快速的 微服務框架,目前已實現了Web框架的能力,但是底層設計已支援多種服務架構。
Github
https://github.com/yoyofx/yoyogo
https://github.com/yoyofxteam