YoyoGo微服務框架入門系列-使用Prometheus監控Golang服務


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM