0

一番重要なアプリケーションで new relic 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)
    .....
    .......
}

アプリケーションは new relic ダッシュボードに表示され、CPU やメモリなどの属性が表示されます。ただし、応答時間とスループットの属性は表示されません。

new relic のドキュメント ( https://github.com/newrelic/go-agent ) に従って、このコードをメインの /init ブロックに追加するか、パフォーマンスを監視する必要がある関数の開始時に追加する必要があります。

しかし、応答時間とスループットの属性が表示されないため、監視できません。間違った場所にコードを追加している可能性があります。また、mattermost.go ファイルの main() 関数の先頭にコードを追加しようとしました。しかし、成功しません。コードを追加する必要がある場所について提案してください。

第二に、彼らは次のことにも言及しています。

標準の HTTP ライブラリ パッケージを使用している場合は、関数のコードをインストルメント化する代わりに、HTTP 要求をラップしてトランザクションを作成できます。
HTTP ハンドラーがラップされる前後の例を次に示します。

前:

http.HandleFunc("/users", usersHandler)

後:

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

これにより、リクエストとレスポンスのライターとのトランザクションが自動的に開始および終了します。

このように、Mattermost のどこにコードを追加すればよいですか?

4

2 に答える 2

0

解決策を得たので、他の人が参照できるように投稿します。このコードで各リクエストを追跡する問題を解決しました。

BaseRoutes.NeedTeam.Handle(newrelic.WrapHandle(app, "/users", ApiAppHandler(usersHandler))).Methods("POST")
于 2016-10-15T05:25:59.473 に答える