Mattermost + New Relic APM

时间:2016-10-06 08:04:17

标签: go newrelic apm mattermost

我想在mattermost应用程序中使用新的遗留APM。为了监视应用程序的性能,我在api / post.go文件中的createpost api请求处理程序上方添加了代码(如新文件中所述)。

func createPost(c *Context, w http.ResponseWriter, r *http.Request) {
    config := newrelic.NewConfig("mylocalstarfp", "####12337")
    app, err1 := newrelic.NewApplication(config)
    fmt.Println("config")
    fmt.Println(config)
    if nil != err1 {
        fmt.Println(err1)
        // os.Exit(1)
    }
    txn := app.StartTransaction("mylocalstar",w, r)
    defer txn.End()
    post := model.PostFromJson(r.Body)
    .....
    .......
}

应用程序显示在新的遗留仪表板上,并显示CPU和内存等属性。但不显示响应时间和吞吐量属性。

根据新的文档文档(https://github.com/newrelic/go-agent),此代码必须添加到main / init块中,或者只是在我们需要监视性能的函数的开头添加。

但由于没有显示响应时间和吞吐量属性,我无法监控。 可能是我在错误的地方添加代码。 我也尝试在mattermost.go文件中的main()函数的开头添加代码。但没有成功。 请建议我在哪里添加代码。

其次,他们也提到:

  

如果您使用的是标准HTTP库包,则可以通过包装HTTP请求来创建事务,作为检测函数代码的替代方法。
  这是一个包装的HTTP处理程序的前后示例:

     

在:

     

http.HandleFunc("/users", usersHandler)

     

后:

     

http.HandleFunc(newrelic.WrapHandleFunc(app, "/users", usersHandler))

     

这会自动启动和结束与请求和响应编写器的事务。

根据这个,我应该在Mattermost中添加代码吗?

2 个答案:

答案 0 :(得分:0)

您可以尝试使用支持短期流程的最新版本(1.3),然后添加下面的代码部分

newrelic.NewConfig("mylocalstarfp", "####12337")
   app, err1 := newrelic.NewApplication(config)` 

mattermost.go,并将app变量传递到您想要监控事务的任何位置。

但是,这不是保证。只是一个没有任何测试支持的想法。

答案 1 :(得分:0)

得到了解决方案,因此张贴供其他人参考。 解决了在mattermost中通过此代码跟踪每个请求的问题:

BaseRoutes.NeedTeam.Handle(newrelic.WrapHandle(app, "/users", ApiAppHandler(usersHandler))).Methods("POST")