這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
newrelic是一個非常好用的監控平台。請求分析,資料事務,機器健全狀態,錯誤判警等功能,並且切分的力度足夠細,除了貴之外,其他都很好。其實,好的服務都值這個價。
newrelic對各大語言的架構支援都很完善,對golang的支援也不差。不過官網提供的例子只是針對net/http而言。對於目前正在使用的gin來說,還是需要一下hack。好在gin足夠優雅。下面就展示一下使用gin開發的時候註冊newrelic。
先安裝newrelic官方提供的golang包:
go get -u -v github.com/newrelic/go-agent
然後寫一個中介軟體,用於請求前的hook,即註冊到newrelic,代碼比較簡單,如下:
package mainimport ( "net/http" "github.com/gin-gonic/gin" "github.com/newrelic/go-agent")func NewrelicMiddleware(appName string, key string) gin.HandlerFunc { if appName == "" || key == "" { return func(c *gin.Context) {} } config := newrelic.NewConfig(appName, key) app, err := newrelic.NewApplication(config) if err != nil { panic(err) } return func(c *gin.Context) { txn := app.StartTransaction(c.Request.URL.Path, c.Writer, c.Request) defer txn.End() c.Next() }}func main(){ router := gin.Default() router.Use(NewrelicMiddleware("APP-NAME", "APP-KEY")) router.GET("/", func(c *gin.Context) { c.String(http.StatusOK, "It works") }) router.Run()}