Les mĂ©triques au niveau du code permettent aux dĂ©veloppeurs utilisant l'extension New Relic CodeStream de voir les donnĂ©es affichĂ©es contextuellement dans leur IDE, aux cĂŽtĂ©s des mĂ©thodes individuelles du code. Cela permet aux dĂ©veloppeurs dâĂȘtre plus proactifs dans la rĂ©solution des problĂšmes de performances lorsquâils Ă©crivent et rĂ©visent le code.
Lorsque vous activez le niveau du code métriques, l'agent Go attachera un attribut aux données trace . Ces attributs montrent l'emplacement dans le code source de votre application responsable des actions instrumentées par ces traces. Les données que vous pouvez voir incluent :
- Nom du fichier source
- Numéro de ligne du fichier source
- Nom de la fonction
- espace de nommage
Jetez un Ćil aux paramĂštres configuration de l'agent Go pour vous aider Ă contrĂŽler la collecte des mĂ©triques du niveau du code. Une fois la configuration terminĂ©e, si vous avez besoin d'aide pour trouver les donnĂ©es, consultez Afficher vos mĂ©triques. Si vous souhaitez plus de contrĂŽle sur la façon dont les mĂ©triques sont collectĂ©es, consultez agent Go niveau du code mĂ©triques instrumentation.
Important
Les métriques du niveau de code sont disponibles pour la version 3.18.0 ou supérieure de l'agent Go, et activées par défaut pour la version 3.24.0 et supérieure. Pour l'activer, vous devez ajouter newrelic.ConfigCodeLevelMetricsEnabled(true) à la configuration de votre application comme expliqué ci-dessous.
Méthodes de configuration
Lors de l'appel de newrelic.NewApplication pour configurer l'agent Go dans votre application, vous pouvez activer les métriques au niveau du code en incluant l'option newrelic.ConfigCodeLevelMetricsEnabled, comme suit :
app, err := newrelic.NewApplication(
newrelic.ConfigAppName("Your Application Name"),
newrelic.ConfigLicense(os.Getenv("NEW_RELIC_LICENSE_KEY")),
newrelic.ConfigCodeLevelMetricsEnabled(true),
Avec cette simple étape, l'agent Go ajoutera les informations de contexte de la source du code dans l'attribut agent suivant sur les transactions :
Nom | Description |
|---|
code.function
| Le nom de la fonction qui a dĂ©marrĂ© la transaction. Notez que cela peut ĂȘtre gĂ©nĂ©rĂ© automatiquement par le compilateur Go dans certains cas. |
code.namespace
| Le package/espace de nommage oĂč se trouve la fonction. La combinaison de code.namespace et code.function, jointe Ă un dĂ©limiteur tel qu'un point (.), est censĂ©e identifier de maniĂšre unique la fonction. |
code.filepath
| Le chemin d'accÚs du fichier source contenant la fonction signalée. Normalement, il s'agit du chemin d'accÚs complet et absolu ; voir ci-dessous une option de configuration qui vous permet de le modifier en un chemin relatif. |
code.lineno
| Le numĂ©ro de ligne dans code.filepath oĂč la transaction a Ă©tĂ© dĂ©marrĂ©e. Consultez le guide d'instrumentation pour connaĂźtre les moyens de contrĂŽler cela. |
Il existe des options configuration supplĂ©mentaires que vous souhaiterez peut-ĂȘtre utiliser pour affiner davantage la collecte des mĂ©triques de niveau de code dans votre application.
La dĂ©finition de lâune des balises suivantes vous aidera Ă identifier les versions de votre logiciel qui gĂ©nĂšrent les erreurs.
NEW_RELIC_METADATA_SERVICE_VERSION crée tags.service.version sur les données d'événement contenant la version de votre code qui est déployée, dans de nombreux cas une version sémantique telle que 1.2.3, mais pas toujours.
NEW_RELIC_METADATA_RELEASE_TAG crée tags.releaseTag sur les données d'événement contenant la tag de sortie (comme v0.1.209 ou sortie-209).
NEW_RELIC_METADATA_COMMIT crĂ©e tags.commit sur les donnĂ©es d'Ă©vĂ©nement contenant le SHA de validation. L'intĂ©gralitĂ© du SHA peut ĂȘtre utilisĂ©e ou seulement les sept premiers caractĂšres (par exemple, 734713b).
Une prochaine version de la boßte de réception des erreurs suivra automatiquement les versions de votre logiciel qui génÚrent des erreurs. Toutes les données de version seront également affichées dans CodeStream.
Par dĂ©faut, avec le niveau du code mĂ©triques activĂ©, l'agent ignorera les fonctions de la stack d'appels qu'il considĂšre comme internes Ă l'agent lui-mĂȘme, pour garantir que la fonction signalĂ©e est celle prĂ©vue, mĂȘme si des fonctions Ă l'intĂ©rieur de l'agent auront Ă©tĂ© appelĂ©es pour entrer dans le code instrumentation du niveau du code mĂ©triques. Par dĂ©faut, cela se fait en ignorant toutes les fonctions dont le nom du package commence par github.com/newrelic/go-agent/. Vous pouvez modifier cela en n'importe quelle liste arbitraire de noms en dĂ©finissant votre propre valeur IgnoredPrefixes .
Pour ce faire, effectuez lâune des opĂ©rations suivantes :
Si vous effectuez la configuration via la fonction NewApplication, ajoutez une option ConfigCodeLevelMetricsIgnoredPrefixes en transmettant n'importe quel nombre de chaßnes de préfixe en tant qu'arguments de chaßne distincts :
app, err := newrelic.NewApplication(
newrelic.ConfigAppName("Your Application Name"),
newrelic.ConfigLicense("YOUR_NEW_RELIC_LICENSE_KEY"),
newrelic.ConfigCodeLevelMetricsEnabled(true),
newrelic.ConfigCodeLevelMetricsIgnoredPrefixes("github.com/some/other/name/"),
Si vous configurez via des variables d'environnement, définissez NEW_RELIC_CODE_LEVEL_METRICS_IGNORED_PREFIXES sur le préfixe souhaité (ou une liste de préfixes séparés par des virgules) :
NEW_RELIC_CODE_LEVEL_METRICS_IGNORED_PREFIXES="github.com/some/other/name/"
N'oubliez pas d'inclure également l'option newrelic.ConfigFromEnvironment() lors de la configuration de l'application :
app, err := newrelic.NewApplication(
newrelic.ConfigAppName("Your Application Name"),
newrelic.ConfigLicense("YOUR_NEW_RELIC_LICENSE_KEY"),
newrelic.ConfigCodeLevelMetricsEnabled(true),
newrelic.ConfigFromEnvironment(),
Il est également possible de définir directement le membre CodeLevelMetrics.IgnoredPrefixes de la structure Config (qui est une valeur []string ), mais nous recommandons d'utiliser l'une des méthodes mentionnées ci-dessus au lieu de manipuler directement la structure Config .
Important
Dans les versions d'agent Go antĂ©rieures Ă 3.20.0, cette option a Ă©tĂ© nommĂ©e au singulier plutĂŽt qu'au pluriel (c'est-Ă -dire ConfigCodeLevelMetricsIgnoredPrefix). Ces noms sont obsolĂštes et ceux documentĂ©s ici doivent ĂȘtre utilisĂ©s. Les anciens noms sont Ă©galement toujours pris en charge pour des raisons de compatibilitĂ© descendante.
Si, pour des raisons telles que la confidentialitĂ©, vous choisissez d'ignorer certains modules via l'option ConfigCodeLevelMetricsIgnoredPrefixes, vous souhaiterez peut-ĂȘtre Ă©galement supprimer la liste de ces prĂ©fixes des donnĂ©es de configuration signalĂ©es par l'agent.
Ceci est réalisé en définissant l'option ConfigCodeLevelMetricsRedactIgnoredPrefixes . Si une valeur true est donnée, votre liste de préfixes ignorés ne sera pas affichée dans les données de configuration signalées par l'agent. Dans le cas contraire, ils seront dénoncés.
Effectuez lâune des opĂ©rations suivantes :
Si vous configurez via la fonction NewApplication, ajoutez une option ConfigCodeLevelMetricsRedactIgnoredPrefixes :
app, err := newrelic.NewApplication(
newrelic.ConfigAppName("Your Application Name"),
newrelic.ConfigLicense("YOUR_NEW_RELIC_LICENSE_KEY"),
newrelic.ConfigCodeLevelMetricsEnabled(true),
newrelic.ConfigCodeLevelMetricsRedactIgnoredPrefixes(true),
En cas de configuration via des variables d'environnement, définissez NEW_RELIC_CODE_LEVEL_METRICS_REDACT_IGNORED_PREFIXES:
NEW_RELIC_CODE_LEVEL_METRICS_REDACT_IGNORED_PREFIXES=true
N'oubliez pas d'inclure également l'option newrelic.ConfigFromEnvironment lors de la configuration de l'application :
app, err := newrelic.NewApplication(
newrelic.ConfigAppName("Your Application Name"),
newrelic.ConfigLicense("YOUR_NEW_RELIC_LICENSE_KEY"),
newrelic.ConfigCodeLevelMetricsEnabled(true),
newrelic.ConfigFromEnvironment(),
Important
Cette option de rédaction est disponible dans les versions 3.20.0 de l'agent Go et plus tard.
Par dĂ©faut, avec le niveau de code mĂ©trique activĂ©, l'agent signalera le chemin d'accĂšs complet de chaque fichier source. Cependant, cela nâest peut-ĂȘtre pas souhaitĂ©. Par exemple, vous souhaiterez peut-ĂȘtre signaler uniquement les chemins application relatifs Ă la racine de l'arborescence source du projet, ce qui permet de corrĂ©ler les donnĂ©es entre les instances, quel que soit l'endroit oĂč elles sont installĂ©es dans le systĂšme de fichiers.
Pour ce faire, spécifiez une chaßne qui indique le début du chemin source de votre projet local. Si ce préfixe est trouvé dans un chemin d'accÚs de fichier source, tout ce qui apparaßt avant lui sera supprimé. Par exemple, si la chaßne de préfixe du chemin est définie sur myproject/src alors /usr/local/projects/myproject/src/widget/main.go sera signalé dans les métriques du niveau de code comme myproject/src/widget/main.go.
Si vous avez plusieurs préfixes de chemin que vous souhaitez utiliser, répertoriez simplement tous leurs noms sous forme de paramÚtres distincts.
Si PathPrefixes est vide ou si un chemin de fichier source ne contient aucune de vos chaßnes de préfixe, le chemin d'accÚs complet sera signalé.
Effectuez lâune des opĂ©rations suivantes :
Si vous configurez via la fonction NewApplication, ajoutez une option ConfigCodeLevelMetricsPathPrefixes :
app, err := newrelic.NewApplication(
newrelic.ConfigAppName("Your Application Name"),
newrelic.ConfigLicense("YOUR_NEW_RELIC_LICENSE_KEY"),
newrelic.ConfigCodeLevelMetricsEnabled(true),
newrelic.ConfigCodeLevelMetricsPathPrefixes("myprojects/src/", "otherproject/src/"),
Si vous configurez via des variables d'environnement, définissez NEW_RELIC_CODE_LEVEL_METRICS_PATH_PREFIXES sur le(s) préfixe(s) souhaité(s) :
NEW_RELIC_CODE_LEVEL_METRICS_PATH_PREFIXES="myprojects/src/,otherproject/src/"
N'oubliez pas d'inclure également l'option newrelic.ConfigFromEnvironment lors de la configuration de l'application :
app, err := newrelic.NewApplication(
newrelic.ConfigAppName("Your Application Name"),
newrelic.ConfigLicense("YOUR_NEW_RELIC_LICENSE_KEY"),
newrelic.ConfigCodeLevelMetricsEnabled(true),
newrelic.ConfigFromEnvironment(),
Important
Dans les versions d'agent Go antĂ©rieures Ă 3.20.0, cette option a Ă©tĂ© nommĂ©e au singulier plutĂŽt qu'au pluriel (c'est-Ă -dire ConfigCodeLevelMetricsPathPrefix). Ces noms sont obsolĂštes et ceux documentĂ©s ici doivent ĂȘtre utilisĂ©s. Les anciens noms sont Ă©galement toujours pris en charge pour des raisons de compatibilitĂ© descendante.
Si, pour des raisons telles que la confidentialitĂ©, vous choisissez de raccourcir les noms de chemin source signalĂ©s via l'option ConfigCodeLevelMetricsPathPrefixes, vous souhaiterez peut-ĂȘtre Ă©galement supprimer la liste des prĂ©fixes de chemin des donnĂ©es de configuration signalĂ©es de l'agent.
Ceci est réalisé en définissant l'option ConfigCodeLevelMetricsRedactPathPrefixes . Si une valeur true est donnée, votre liste de préfixes de chemin ne sera pas affichée dans les données de configuration signalées par l'agent. Dans le cas contraire, ils seront dénoncés.
Effectuez lâune des opĂ©rations suivantes :
Si vous configurez via la fonction NewApplication, ajoutez une option ConfigCodeLevelMetricsRedactPathPrefixes :
app, err := newrelic.NewApplication(
newrelic.ConfigAppName("Your Application Name"),
newrelic.ConfigLicense("YOUR_NEW_RELIC_LICENSE_KEY"),
newrelic.ConfigCodeLevelMetricsEnabled(true),
newrelic.ConfigCodeLevelMetricsPathPrefixes("myprojects/src/", "otherproject/src/"),
newrelic.ConfigCodeLevelMetricsRedactPathPrefixes(true),
En cas de configuration via des variables d'environnement, définissez NEW_RELIC_CODE_LEVEL_METRICS_REDACT_PATH_PREFIXES:
NEW_RELIC_CODE_LEVEL_METRICS_REDACT_PATH_PREFIXES=true
N'oubliez pas d'inclure également l'option newrelic.ConfigFromEnvironment lors de la configuration de l'application :
app, err := newrelic.NewApplication(
newrelic.ConfigAppName("Your Application Name"),
newrelic.ConfigLicense("YOUR_NEW_RELIC_LICENSE_KEY"),
newrelic.ConfigCodeLevelMetricsEnabled(true),
newrelic.ConfigFromEnvironment(),
Important
Cette option de rédaction est disponible dans les versions 3.20.0 de l'agent Go et plus tard.
Consultez vos métriques
Une fois que vous avez configurĂ© le niveau du code mĂ©trique, vous pouvez voir vos donnĂ©es dans l'UI de New Relic. Voici une façon de voir la trace dâun service particulier :
- Allez Ă one.newrelic.com > All capabilities > APM & services.
- Cliquez sur votre entité (service).
- Dans la section Monitor du volet de gauche, cliquez sur Transactions.
- Sous Transaction traces, cliquez sur une trace individuelle.
- Recherchez sous Agent attributes les quatre attributs commençant par
code..