New Relic CodeStreamを使用すると、開発者は、IDEに可観測性をもたらし、それを日常業務の一部にすることで、担当するコードが本番環境でどのように実行されているかを確認できます。
CodeStreamとNew Relicの接続
IDE でオブザーバビリティにアクセスするには、 New Relic ユーザー API キーを介して CodeStream を New Relic に接続する必要があります (New Relic ユーザー API キーの詳細については、こちらをご覧ください)。
IDE にオブザーバビリティを導入するには、ユーザー キーを使用して CodeStream を New Relic に接続します。
ユーザー API キーを取得したら、CodeStream のObservabilityセクションでConnect to New Relic をクリックし、ユーザー API キーを貼り付けてConnect to New Relicをクリックします。New Relic ユーザー API キーを使用して CodeStream にサインアップした場合は、すでに接続されています。
CodeStream でオブザーバビリティ機能を使用するには、 コア ユーザーまたはフル プラットフォーム ユーザーの New Relic ユーザー タイプが必要であることに注意してください。
リポジトリをNewRelicエンティティに関連付ける
CodeStream で使用できるテレメトリ データはコンテキストに依存します。つまり、IDE で開いているコードにすべて関連しています。これを行うには、CodeStream は、開いているリポジトリによって New Relic のどのエンティティが構築されているかを知る必要があり、これらの関連付けを行う方法はいくつかあります。
関連付けが存在しない場合、CodeStream が関連付けを行うように求める場合があります。たとえば、CodeStream で New Relic からのエラーを表示しようとして、エラーが属するエンティティがリポジトリに関連付けられていない場合、CodeStream は適切なリポジトリを特定するように求めます。CodeStream ペインの可観測性セクションでも、IDE で現在選択されているリポジトリを関連付けるように求められます。
場合によっては、リポジトリを複数のエンティティに関連付ける必要があります。たとえば、さまざまな環境 (実稼働やステージングなど) を表すさまざまなエンティティがあり、それらがすべて同じリポジトリに関連付けられている場合があります。現在のリポジトリを追加のエンティティに関連付けるには、[別のサービスを追加] をクリックします。
プロンプトが表示されたときにその場でこれらの関連付けを行うことは、開始するのに最適な方法ですが、次のいずれかの方法をお勧めします。これは、継続的な手動作業が少なくて済み、リモート URL の設定ミスなどのエンド ユーザーのミスの可能性を排除できるためです。
これらの方法のいずれかを使用して、SSHまたはHTTPS形式のいずれかでリモートURLを指定できます。
git@github.com:newrelic/beta-docs-site.git
https://github.com/newrelic/beta-docs-site.git
注意
異なるプロトコルを使用している場合は、同じ GitHub リポジトリを複数回追加することができます。UI はこの点について警告を発しますが、追加を妨げることはありません。
たとえば、 https://github.com/tuna/repo
とgit@github.com:tuna/repo
は同じリポジトリであり、プロトコルが異なります。
IDEでの可観測性
CodeStream のオブザーバビリティ セクションでは、IDE で現在選択されているリポジトリに関連付けられている各サービスのゴールデン メトリックとエラーを確認できるようにすることで、開発者はコードの実行状況を確認できます。各サービスにはツリー内に独自のノードがあり、展開すると、サービスのゴールデン メトリック、サービス レベル目標、割り当てられたエラー、および最新の 5 つのエラーが表示されます。また、サービスによって呼び出された、またはサービスを呼び出したサービスを掘り下げて全体像を把握し、それぞれのゴールデン メトリックを確認することもできます。
現在選択されているリポジトリが New Relic のサービスに関連付けられていない場合は、関連付けを行うか、プロジェクトをインストルメント化するよう求められます。
ツリー内のサービス名の上にマウスを置くと、地球をクリックして New Relic でサービスの概要ページを開きます。エラーをクリックしてスタック トレースなどの詳細を表示し、解決に向けた 共同作業を開始します 。
ヒント
プロジェクトが New Relic によって監視されていない場合は、 Observability セクションの見出しにある歯車アイコンをクリックし、 Instrument my Appを選択して監視を設定できます。CodeStream には、Node.js JS、Java、および .NET プロジェクトで使用できるセットアップ ウィザードがあります。
コードレベルの指標
コードレベルのメトリクスにより、コードがメソッドレベルでどのように実行されているかについての詳細な洞察が得られます。メトリクスは、インストルメント化されたメソッドの上のエディターに直接表示されるため、パフォーマンス データが現在の作業に影響を与えることができます。CodeStream はコード内でパフォーマンスの悪いメソッドも特定し、パフォーマンスの問題が発生したときに積極的に対処できるようにします。
エディタ内のパフォーマンスデータ
パフォーマンス データは、探さなくてもエディターに状況に応じて表示されるため、作業中の作業に情報を提供できます。バグ修正に取り組んでいて、作業中のコード領域のエラー率が上昇していることに偶然気づいたとします。もしかしたら、より大きな問題に発展しないように、バグ修正の一環としてその問題に対処するかもしれません。
CodeStream は、New Relic APM エージェントによって計測された各メソッドの上の CodeLens に、過去 30 分間の平均継続時間とエラー率を表示します。メトリクスは、CodeStream の Observability セクションで現在選択されているサービスに対して計算されます。別のサービスを展開すると、それに応じてメトリクスが更新されます。
CodeLens をクリックすると、各メトリクスを視覚化したグラフが表示されます。リポジトリが複数の New Relic 監視対象サービスに関連付けられている場合、それらを簡単に切り替えることができます。これにより、チャートとエディターの両方に表示されるコードレベルのメトリクスのベースとなるサービスが変更され、 Observability [可観測性] セクションのサービスの選択も変更されます。
エラー率のグラフに加えて、同じ時間枠で発生した実際のエラーのリスト (それぞれの発生数を含む) も表示されます。エラー率が急上昇しており、特定のエラーが問題の原因であることがわかった場合は、そのエラーをクリックしてスタック トレースを表示し、解決に向けた 共同作業を開始できます 。
異常検知
CodeLenses は、パフォーマンス上の問題が発生しているコードのセクションで作業しているときに、パフォーマンス上の問題が重要すぎて偶然に遭遇することができない場合に最適です。CodeStream は、Observability > Code-Level Metrics セクションで、コード内のパフォーマンスの低いメソッドを自動的に呼び出します。
CodeStream は、エラー率または平均継続時間のいずれかの異常を探すことでこれらのメソッドを識別します。New Relic の 変更追跡を 使用してデプロイメント情報を送信している場合、異常は、最後のリリース以降のパフォーマンスを過去 3 週間と比較することによって計算されます。それ以外の場合は、過去 7 日間が使用されます。これらの時間枠と、特定のメソッドのパフォーマンスが低下しているかどうかを判断するためのしきい値を制御するには、 Code-Level Metrics [コードレベル メトリック] の見出しにカーソルを合わせて歯車アイコンをクリックします。
Code-Level Metrics [コードレベルのメトリクス] セクションに加えて、CodeStream は、VS Code または JetBrains IDE の デスクトップ通知 を通じて、パフォーマンスの悪いメソッドについても通知します。
要件
エディタ内 CodeLense は、New Relic のすべての APM 言語で利用できます。ただし、異常検出は現在 Java、.NET、Python、Ruby でのみ利用可能です。
メトリクスを表示するには、サービスが以下の要件を満たしている必要があり、サービスは過去 30 分間にデータを収集している必要があります。New Relic エージェントは、HTTP リクエストに関連付けられているクラスの関数のデータを自動的に収集しようとします。多くの場合、MVC フレームワークを使用する多くのフレームワークでは、これらは Controller クラスのメソッドであることがよくあります。
New Relic エージェントによるすべてのリクエストが常に収集されるわけではないため、トラフィックの少ないメソッドではデータが表示されない可能性があります。結果を確認したい特定のメソッドのデータが欠落している場合は、カスタム インストルメンテーションを使用してギャップを埋めることができます。Java 、.NET 、 PHP 、 Python 、 Ruby 、 Go 、および Node.jsのガイダンスを参照してください。Node.js の場合、次の点にも注意してください。コードレベルのメトリクスは、匿名関数ではキャプチャされません。
- 分散トレーシングを 有効にする必要があります。分散トレースは、すべてのエージェントの最近のバージョンでデフォルトでオンになっているため、これについて心配する必要があるのは、分散トレースを無効にしている場合のみです。
- Go: Go エージェント バージョン 3.24.0 以降が必要です。VS Code を使用している場合は、言語サーバーを有効にして Go for VS Code 拡張機能もインストールする必要があります。
- Java: Java エージェント バージョン 7.11.0 以降が必要です。コードレベルのメトリクスは、 サポートされている Java フレームワークで実装されたプロジェクトでのみ使用できます。VS Code を使用している場合は、 Red Hat 拡張機能による Java の言語サポートも インストールする必要があります。Kotlin サポートは IntelliJ でのみ利用できることに注意してください。
- .NET: .NET エージェント バージョン 10.2.0 以降が必要です。Visual Studio を使用している場合は、 Tools > Options > Text Editor > All Languages > CodeLens に移動し、"Enable CodeLens" [CodeLens を有効にする] と "Show CodeStream Code-Level Metrics" [CodeStream コードレベルのメトリックを表示する] の両方がオンになっていることを確認して、CodeLenses が有効になっていることを確認します。 。VS Code を使用している場合は、 C# 拡張機能がインストールされている必要があります。
- Node.js: Node.js エージェントのバージョン 10.5.0 以降が必要です。
- PHP: PHP エージェントのバージョン 10.6.0 以降が必要です。
- Python: Python エージェント バージョン 7.10.0.175 以降が必要です。 コードレベルのメトリクスは、 サポートされている Python フレームワーク で実装されたプロジェクトと、PHP バージョン 7.0 以降でのみ使用できます。 VS Code を使用している場合は、言語サーバーを有効にして Python 拡張機能もインストールする必要があります。
- Ruby: Ruby エージェント バージョン 8.10.0 以降が必要です。コードレベルのメトリクスは、手動トレースを使用する Rails アプリケーションと Ruby メソッドでのみ使用できます (Ruby メソッドと CodeStream について詳しくは、こちらをご覧ください)。VS Code を使用している場合は、言語サーバーを有効にして Ruby または Ruby Solargraph 拡張機能をインストールする必要もあります。
IDE の設定の CodeStream セクションに移動し、 CodeStream: Show Golden Signals In Editor設定のチェックを外すことで、CodeLenses をオフにすることができます。
エラーの調査
CodeStream は、IDE で開いているコードで発生した最近のエラーを表示しますが、より包括的なリストを表示できます。 New Relic の エラー インボックス を介してエラーを報告します。 スタック トレースを使用して特定のエラーの根本原因を掘り下げる準備ができたら、 [IDE で開く] をクリックして、IDE のコードに直接移動します。
解決に協力する
典型的なコラボレーションセッションには、IDEのコードにコメントする開発者、エラー受信ボックスにエラーを割り当てるDevOpsエンジニア、Slackをフォローする開発マネージャーが含まれます。 CodeStreamは、すでに使用しているツールで人々に会うことで、エラーの発見からエラーの解決までの時間を短縮します。
この短いYouTubeビデオ(約2:27分)を見て、実際の動作を確認してください。
可観測性セクションでエラーをクリックした場合でも、New Relicのエラー受信ボックスからIDEで開くをクリックした場合でも、CodeStreamはスタックトレースを含むエラーの詳細をすべて表示します。
スタックトレース内の任意のフレームをクリックして、IDEの対応するファイルと行番号に直接ジャンプします。リポジトリの一部ではないコード(外部ライブラリなど)を表すスタックトレースのフレームはクリックできないことに注意してください。
スタックトレースをナビゲートしているときに、問題の原因と思われるコードに遭遇した場合は、それを選択し、コメントアイコンをクリックしてディスカッションを開始します。 CodeStreamは、そのコードに触れた最新の人物を自動的に言及するため、適切な人物を簡単にディスカッションに参加させることができます。
エディターでコードを選択し、コメントを追加します。
問題を特定したら、エラーを割り当てるか、エラー ステータスを unresolved
から resolved
または ignored
に更新できます。
ビルドSHAやリリースタグとエラーの関連付け
CodeStream でエラーを表示すると、エラーに関連付けられたビルド SHA またはリリース タグのいずれかの git 参照がない場合、この警告が表示されることがあります。CodeStream は git 参照を使用して、特定のスタック トレース エラーを、エラーをトリガーした環境で実行されているコードのバージョンと照合します。
エラーを調査するために構成された git 参照は必要ありませんが、エラーの原因となったコードのバージョンを調べていない可能性があることに注意してください。
git reference notconfiguredの警告メッセージは次のとおりです。ビルドSHAまたはリリースタグをエラーに関連付けて、CodeStreamが正しいバージョンのコードを見ていることを確認できるようにします。
環境変数を使用して、New Relic を エージェントは、プロジェクトの各ビルドに関連付けられている コミット SHA を知っています。 ソフトウェアの実行中のバージョンに関連付けられた リリース タグを 使用することもできます。
New Relic APMの場合、commit shaおよび/またはreleaseタグ( tags.commit
およびtags.releaseTag
)がTransaction
およびTransactionError
イベントの属性として追加されます。 APM環境変数を使用して、これらの属性を設定できます。
これらの変数のいずれかまたは両方を、ビルドパイプラインの一部として設定することをお勧めします。
NEW_RELIC_METADATA_COMMIT
-コミット社。すべてを含めることも、最初の7文字のみを含めることもできます(例:734713b
)。NEW_RELIC_METADATA_RELEASE_TAG
-リリースタグ(v0.1.209
やrelease-209
など)。これには、人間が読める形式であるという利点があります。
これらの変数の設定方法については、各言語ごとに具体的な設定内容をご紹介します。
git参照が構成されている場合、CodeStreamは、ローカルで使用しているコードのバージョンにエラーに関連付けられた参照が含まれていないかどうかを通知します。この場合、エラーをより効果的に調査して解決できるように、その参照を含むコードのバージョンを確認することをお勧めします。
git reference not found という警告メッセージが表示されました。あなたのコードのバージョンは、エラーが発生した環境と一致していません。次のリファレンスを取得して、エラーの原因を調べてください。
CodeStreamは、エラーにスタックトレースが関連付けられていないかどうかも通知します。これは、スタックトレースがNewRelicで期限切れになった古いエラーで発生します。