Monitorez votre New Relic for Go application ou vos microservices en créant des transactions associées à des activités spécifiques du serveur d'applications, telles que des réponses HTTP ou des tâches en arrière-plan. Vous pouvez ensuite visualiser les performances de votre application dans New Relic, y compris la page APM Transactions .
Identifier les transactions Web et non Web
Contrairement à de nombreux autres langages, les applications Go s'exécutent à partir d'un fichier binaire natif compilé. Cela signifie que la configuration de New Relic pour votre application Golang nécessite que vous ajoutiez manuellement des méthodes New Relic à votre code source.
Dans APM, les transactions sont identifiées comme des transactions Web ou des transactions non Web.
- Lorsque vous instrumentez ou encapsulez une transaction qui dispose d'un rédacteur de requête et de réponse HTTP, New Relic la traite comme un réseau de transactions.
- Lorsque vous instrumentez ou encapsulez une transaction qui ne contient pas de données HTTP, New Relic la traite comme une transaction non Web.
Les segments sont les fonctions et les appels qui composent une transaction. Vous pouvez également utiliser New Relic for Go pour ajouter des détails au niveau du segment à vos transactions.
Monitorer une transaction
Important
N'utilisez pas de crochets [suffix]
à la fin du nom de votre transaction. New Relic supprime automatiquement les crochets du nom. Utilisez plutôt des parenthèses (suffix)
ou d’autres symboles si nécessaire.
Pour monitorer une transaction : placez le code suivant immédiatement après le début de la fonction que vous souhaitez monitorer. Par exemple:
txn := app.StartTransaction("transaction_name")defer txn.End()
Dans cet exemple de code :
app
fait référence à la variable attribuée lors du processus de configuration de New Relic. Pour plus d'informations, consultez les procédures installation de l'agent Go.- L'instruction
defer
diffère la fin du segment jusqu'à la fermeture de la fonction.
Pour monitorer une transaction Web, appelez l'API Transaction.SetWebRequest
et éventuellement l'API Transaction.SetWebResponse
:
txn := app.StartTransaction("transaction_name")defer txn.End()
// req is a *http.Request, this marks the transaction as a web transactiontxn.SetWebRequestHTTP(req)
// writer is a http.ResponseWriter, use the returned writer in place of the originalwriter = txn.SetWebResponse(writer)writer.WriteHeader(500)
Monitorer une transaction avec plusieurs goroutines
Pour monitorer une transaction sur plusieurs goroutines, utilisez Transaction.NewGoroutine()
. La méthode NewGoroutine
renvoie une nouvelle référence à la transaction, qui est requise par chaque goroutine de création de segment. Peu importe que vous appeliez NewGoroutine
avant ou après le démarrage de l'autre goroutine.
Toutes les méthodes Transaction
peuvent être utilisées dans n'importe quelle référence Transaction
. Le Transaction
se terminera lorsque End()
sera appelé dans n'importe quelle goroutine.
Monitorer une transaction en enveloppant un gestionnaire HTTP
Si vous utilisez le package de bibliothèque HTTP standard, vous pouvez créer des transactions en encapsulant requests HTTP, comme alternative à l'instrumentation du code d'une fonction.
Voici un exemple avant/après d'un gestionnaire HTTP en cours d'encapsulation :
Avant:
http.HandleFunc("/users", usersHandler)
Après:
Cela démarre et termine automatiquement une transaction avec le rédacteur de la demande et de la réponse.
http.HandleFunc(newrelic.WrapHandleFunc(app, "/users", usersHandler))
Pour accéder à la transaction dans votre gestionnaire, utilisez l'API newrelic.FromContext
. Notez que cela ne fonctionnera que pour les versions Go 1.7 et plus récentes. Par exemple:
func myHandler(w http.ResponseWriter, r *http.Request) { txn := newrelic.FromContext(r.Context()) txn.NoticeError(errors.New("my error message"))}
Erreurs de monitoring
New Relic for Go capture les erreurs de trois manières différentes :
Si vous voulez... | Utilisez ceci |
---|---|
Suivez les erreurs et signalez toute combinaison de message, de classe et d'attribut | |
Suivez les erreurs attendues et signalez toute combinaison de message, de classe et d'attribut sans déclencher d'alertes ni affecter les mesures d'erreur. | |
Le rapport panique | Les transactions terminées avec |
Signaler les codes de réponse d'erreur | Les transactions enregistrent automatiquement les erreurs supérieures à 400 et inférieures à 100. Consultez la documentation GitHub de New Relic for Go pour plus d'informations. |
Afficher les logs de vos données APM et infrastructure
Vous pouvez également rassembler vos données de log et d'application pour rendre le dépannage plus facile et plus rapide. Avec les logs en contexte, vous pouvez voir les messages de log liés à vos erreurs et les tracer directement dans UI de votre application.
- Depuis la page Errors, cliquez sur une trace pour accéder à la pageError details .
- Dans la page des détails de l’erreur, cliquez sur See logs.
- Pour afficher les détails relatifs à un message individuel du log, cliquez directement sur le message.
Vous pouvez également voir les journaux en contexte de vos données infrastructure , telles que le cluster Kubernetes. Pas besoin de passer à une autre UI.
Méthodes de transaction supplémentaires
L'objet Transaction
dispose de plusieurs méthodes facultatives qui peuvent être utilisées pour contrôler le comportement des transactions, telles que NoticeError
, AddAttribute
et Ignore
. Pour obtenir une liste des méthodes de transaction, consultez les méthodes de transaction New Relic for Go sur Godoc.