コードレベルのメトリクスにより、 New Relic CodeStream 拡張機能を使用する開発者は、コード内の個々のメソッドとともに、IDE 内でコンテキストに応じて表示されるデータを確認できます。 これにより、開発者はコードを作成およびレビューする際に、パフォーマンスの問題にもっと積極的に対処できるようになります。
コードレベルのメトリクスを有効にすると、Go エージェントは属性をトレース データに添付します。これらの属性は、これらのトレースによってインストルメント化されたアクションを担当するアプリケーション ソース コード内の場所を示します。表示できるデータは次のとおりです。
- ソースファイル名
- ソースファイルの行番号
- 関数名
- 名前空間
コードレベルのメトリクスの収集を制御するために、Go エージェントの構成設定を確認してください。構成を完了した後、データを見つけるのにサポートが必要な場合は、メトリックを表示するを参照してください。メトリクスの収集方法をさらに制御したい場合は、 Go エージェントのコードレベルのメトリクス インストルメンテーションを参照してください。
重要
コードレベルのメトリクスは、Go エージェントのバージョン 3.18.0 以降で使用でき、バージョン 3.24.0 以降ではデフォルトで有効になります。これを有効にするには、以下で説明するように、アプリケーションの構成に newrelic.ConfigCodeLevelMetricsEnabled(true)
を追加する必要があります。
設定方法
アプリケーションで Go エージェントを構成するためにnewrelic.NewApplication
を呼び出す場合、次のようにnewrelic.ConfigCodeLevelMetricsEnabled
オプションを含めることでコードレベルの指標を有効にできます。
app, err := newrelic.NewApplication(
newrelic.ConfigAppName("Your Application Name"),
newrelic.ConfigLicense(os.Getenv("NEW_RELIC_LICENSE_KEY")),
newrelic.ConfigCodeLevelMetricsEnabled(true),
この簡単な手順で、Go エージェントはトランザクションの次のエージェント属性にソース コード コンテキスト情報を追加します。
名前 | 説明 |
---|
code.function
| トランザクションを開始した関数の名前。これは、Go コンパイラによって自動的に生成される場合があることに注意してください。 |
code.namespace
| 関数が配置されているパッケージ/名前空間。ドット ( . ) などの区切り文字で結合されたcode.namespace とcode.function の組み合わせは、関数を一意に識別することが期待されます。 |
code.filepath
| 報告される関数を含むソース ファイルのパス名。通常、これは完全な絶対パス名です。これを相対パスに変更できる構成オプションについては、以下を参照してください。 |
code.lineno
| トランザクションが開始されたcode.filepath 内の行番号。これを制御する方法については、インストルメンテーション ガイドを参照してください。 |
アプリケーションのコード レベルのメトリックのコレクションをさらに絞り込むために使用できる追加の構成オプションがあります。
次のタグのいずれかを設定すると、エラーが発生しているソフトウェアのバージョンを特定するのに役立ちます。
NEW_RELIC_METADATA_SERVICE_VERSION
デプロイされているコードのバージョン (多くの場合、1.2.3 などのセマンティック バージョン) を含むイベント データにtags.service.version
を作成しますが、常にそうとは限りません。
NEW_RELIC_METADATA_RELEASE_TAG
リリース タグを含むイベント データにtags.releaseTag
を作成します (v0.1.209 など)またはリリース-209)。
NEW_RELIC_METADATA_COMMIT
コミット SHA を含むイベント データにtags.commit
を作成します。SHA 全体を使用することも、最初の 7 文字だけを使用することもできます (例: 734713b)。
エラー受信箱の今後のリリースでは、ソフトウェアのどのバージョンでエラーが発生しているかを自動的に追跡します。バージョン データもCodeStreamに表示されます。
デフォルトでは、コード レベルのメトリクスが有効になっている場合、エージェントはコール スタック内でエージェント自体の内部にあると思われる関数を無視し、報告された関数が意図したものであることを確認します。コードレベルのメトリクス インストルメンテーション コードに入るために呼び出されます。デフォルトでは、パッケージ名がgithub.com/newrelic/go-agent/
で始まる関数は無視されます。独自のIgnoredPrefixes
値を設定することで、これを任意の名前のリストに変更できます。
これを行うには、次のいずれかを実行します。
NewApplication
関数を使用して構成する場合は、 ConfigCodeLevelMetricsIgnoredPrefixes
オプションを追加して、任意の数のプレフィックス文字列を個別の文字列引数として渡します。
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/"),
環境変数を使用して構成する場合は、 NEW_RELIC_CODE_LEVEL_METRICS_IGNORED_PREFIXES
を目的のプレフィックス (またはコンマ区切りのプレフィックスのリスト) に設定します。
NEW_RELIC_CODE_LEVEL_METRICS_IGNORED_PREFIXES="github.com/some/other/name/"
アプリケーションを設定するときは、忘れずにnewrelic.ConfigFromEnvironment()
オプションも含めてください。
app, err := newrelic.NewApplication(
newrelic.ConfigAppName("Your Application Name"),
newrelic.ConfigLicense("YOUR_NEW_RELIC_LICENSE_KEY"),
newrelic.ConfigCodeLevelMetricsEnabled(true),
newrelic.ConfigFromEnvironment(),
Config
構造体のCodeLevelMetrics.IgnoredPrefixes
メンバー ( []string
値) を直接設定することもできますが、 Config
構造体を直接操作する代わりに、上記の方法のいずれかを使用することをお勧めします。
重要
3.20.0 より前のバージョンの Go エージェントでは、このオプションは、複数形ではなく単数形 (つまり、 ConfigCodeLevelMetricsIgnoredPrefix
) で名前が付けられました。これらの名前は非推奨であり、ここに記載されているものを使用する必要があります。古い名前も下位互換性のために引き続きサポートされています。
機密保持などの理由で、 ConfigCodeLevelMetricsIgnoredPrefixes
オプションを使用して一部のモジュールを無視することを選択した場合は、エージェントの報告された構成データからそのようなプレフィックスのリストを編集することもできます。
これは、 ConfigCodeLevelMetricsRedactIgnoredPrefixes
オプションを設定することによって実現されます。true
値を指定すると、無視されたプレフィックスのリストは、エージェントによって報告される構成データに表示されません。それ以外の場合は、報告されます。
次のうち1つを行います。
NewApplication
関数を介して構成する場合は、 ConfigCodeLevelMetricsRedactIgnoredPrefixes
オプションを追加します。
app, err := newrelic.NewApplication(
newrelic.ConfigAppName("Your Application Name"),
newrelic.ConfigLicense("YOUR_NEW_RELIC_LICENSE_KEY"),
newrelic.ConfigCodeLevelMetricsEnabled(true),
newrelic.ConfigCodeLevelMetricsRedactIgnoredPrefixes(true),
環境変数を介して構成する場合は、 NEW_RELIC_CODE_LEVEL_METRICS_REDACT_IGNORED_PREFIXES
を設定します。
NEW_RELIC_CODE_LEVEL_METRICS_REDACT_IGNORED_PREFIXES=true
アプリケーションを設定するときは、忘れずにnewrelic.ConfigFromEnvironment
オプションも含めてください。
app, err := newrelic.NewApplication(
newrelic.ConfigAppName("Your Application Name"),
newrelic.ConfigLicense("YOUR_NEW_RELIC_LICENSE_KEY"),
newrelic.ConfigCodeLevelMetricsEnabled(true),
newrelic.ConfigFromEnvironment(),
重要
このリダクション オプションは、Go エージェント バージョン 3.20.0 で使用できます。以降。
デフォルトでは、コード レベルのメトリックが有効になっているため、エージェントは各ソース ファイルのフル パス名を報告します。ただし、これは望ましくない場合があります。たとえば、プロジェクト ソース ツリーのルートに関連するアプリケーション パスのみをレポートし、ファイル システムのどこにインストールされているかに関係なく、インスタンス間でデータを関連付けることができます。
これを行うには、ローカル プロジェクト ソース パスの開始を示す文字列を指定します。そのプレフィックスがソース ファイルのパス名に含まれている場合、それより前にあるものはすべて削除されます。たとえば、パス プレフィックス文字列がmyproject/src
に設定されている場合、 /usr/local/projects/myproject/src/widget/main.go
はコードレベルのメトリックでmyproject/src/widget/main.go
としてレポートされます。
使用したいパスプレフィックスが複数ある場合は、それらの名前をすべて個別のパラメーターとしてリストするだけです。
PathPrefixes
が空の場合、またはソース ファイル パスにプレフィックス文字列がまったく含まれていない場合は、完全なパス名が報告されます。
次のうち1つを行います。
NewApplication
関数を介して構成する場合は、 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/"),
環境変数を介して構成する場合は、 NEW_RELIC_CODE_LEVEL_METRICS_PATH_PREFIXES
を目的のプレフィックスに設定します。
NEW_RELIC_CODE_LEVEL_METRICS_PATH_PREFIXES="myprojects/src/,otherproject/src/"
アプリケーションを設定するときは、忘れずにnewrelic.ConfigFromEnvironment
オプションも含めてください。
app, err := newrelic.NewApplication(
newrelic.ConfigAppName("Your Application Name"),
newrelic.ConfigLicense("YOUR_NEW_RELIC_LICENSE_KEY"),
newrelic.ConfigCodeLevelMetricsEnabled(true),
newrelic.ConfigFromEnvironment(),
重要
3.20.0 より前のバージョンの Go エージェントでは、このオプションは、複数形ではなく単数形 (つまり、 ConfigCodeLevelMetricsPathPrefix
) で名前が付けられました。これらの名前は非推奨であり、ここに記載されているものを使用する必要があります。古い名前も下位互換性のために引き続きサポートされています。
機密保持などの理由で、報告されたソース パス名をConfigCodeLevelMetricsPathPrefixes
オプションで短縮することを選択した場合、エージェントの報告された構成データからもパス プレフィックスのリストを編集したい場合があります。
これは、 ConfigCodeLevelMetricsRedactPathPrefixes
オプションを設定することによって実現されます。true
値を指定すると、パス接頭辞のリストは、エージェントによって報告される構成データに表示されません。それ以外の場合は、報告されます。
次のうち1つを行います。
NewApplication
関数を介して構成する場合は、 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),
環境変数を介して構成する場合は、 NEW_RELIC_CODE_LEVEL_METRICS_REDACT_PATH_PREFIXES
を設定します。
NEW_RELIC_CODE_LEVEL_METRICS_REDACT_PATH_PREFIXES=true
アプリケーションを設定するときは、忘れずにnewrelic.ConfigFromEnvironment
オプションも含めてください。
app, err := newrelic.NewApplication(
newrelic.ConfigAppName("Your Application Name"),
newrelic.ConfigLicense("YOUR_NEW_RELIC_LICENSE_KEY"),
newrelic.ConfigCodeLevelMetricsEnabled(true),
newrelic.ConfigFromEnvironment(),
重要
このリダクション オプションは、Go エージェント バージョン 3.20.0 で使用できます。以降。
指標を表示する
コードレベルのメトリクスを設定したら、New Relic UI でデータを確認できます。特定のサービスのトレースを表示する 1 つの方法を次に示します。
one.newrelic.com > All capabilities > APM & services
に移動します。
エンティティ(サービス)をクリックします。
左側のペインの
Monitor
セクションで、
Transactions
をクリックします。
Transaction traces
で、個々のトレースをクリックします。
Agent attributes
の下で、 code.
で始まる 4 つの属性を探します。