2016-10-06 14 views
0

Я хочу использовать новую реликвию APM в самом деле. Чтобы контролировать производительность приложения, я добавил код (как упоминалось в новой реликвии) чуть выше обработчика запроса api createpost в файле api/post.go.Mattermost + New Relic APM

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) 
    ..... 
    ....... 
} 

Приложение отображается на новой реликтовой приборной панели и атрибуты, как центральный процессор и память не displayed.But нет времени отклика и отображаются атрибуты пропускной способности.

В соответствии с новой реликвийной документацией (https://github.com/newrelic/go-agent) этот код необходимо добавить в блок main/init или только при запуске функции, где нам необходимо контролировать производительность.

Но я не могу отслеживать, так как время отклика и атрибуты пропускной способности не отображаются. Может быть, я добавляю код в неправильном месте. Также я попытался добавить код в начало функции main() в файле mattermost.go. Но успеха нет. Пожалуйста, укажите, где я должен добавить код.

Во-вторых, они также отметили, что:

Если вы используете стандартный пакет библиотеки HTTP, вы можете создавать транзакции, обернув HTTP запросов, в качестве альтернативы инструментирование кодогенератора функции.
Вот до и после того, как пример обработчика HTTP обертывают:

Перед:

http.HandleFunc("/users", usersHandler)

После того, как:

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

Это автоматически начинается и заканчивается на транзакция с автором запроса и ответа.

Как это сделать, где я должен добавить код в Mattermost?

ответ

0

Получил решение, следовательно отправляя его другим лицам. Решили проблему для отслеживания каждого запроса с помощью этого кода в массовом порядке:

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

Вы могли бы попробовать использовать последнюю версию (1.3), которая имеет поддержку короткоживущих процессов, а затем добавить раздел кода ниже

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

к mattermost.go и передавая переменную app в любом месте вы хотите контролировать сделки.

Это не гарантия, однако. Просто мысль не подкреплена никаким тестированием.

 Смежные вопросы

  • Нет связанных вопросов^_^