Go はランタイムが不透明なコンパイル言語であるため、他の言語のような自動インストゥルメンテーションをサポートできません。 このため、New Relic Go エージェントは SDK として設計されています。 Go エージェントは SDK であるため、自動インストゥルメンテーションをサポートする言語のエージェントよりも多くの手動作業が必要です。
インストゥルメンテーションをより簡単にするために、Go エージェント チームは、現在プレビュー段階にある Go easy インストゥルメンテーション ツールを作成しました。 このツールはNew Relic Go エージェントを使用してアプリケーションを計測するソースコードへの変更を提案することで、ほとんどの作業を行います。
始めるには、この4 分間のビデオをご覧いただくか、下の「仕組み」までスキップしてください。
プレビュー通知
使い方
このツールはアプリケーションの動作に干渉せず、コードに直接変更を加えることもありません。 次のようなことが起こります:
- コードを分析し、Go エージェントがテレメトリーデータをキャプチャできるようにする変更を提案します。
.diff
ファイルの変更を確認し、ソースコードに追加する変更を決定します。
分析の一環として、このツールはgo get
または他の Go 言語ツールチェーン コマンドを呼び出すことがあります。これにより、 go.mod
ファイルが変更される可能性がありますが、実際のソースコードは変更されません。
重要
このツールは、既にNew Relicをインストールしているかどうかを検出できません。 このツールは、インストゥルメンテーションを行わずにアプリケーションでのみ使用してください。
インストゥルメントされたとは何ですか?
このツールがアプリケーションに計装できる範囲は、次のアクションに限定されます。
- トランザクションによってラップまたはトレースされた関数内のエラーをキャプチャする
- アプリケーションの
main()
メソッドでトランザクションを使用して呼び出されるローカル定義関数をトレースします - 非同期セグメントを使用した非同期関数と関数リテラルのトレース
- HTTP ハンドラのラッピング
- 外部トラフィックへのディストリビューティッド(分散)トレーシングの挿入
サポートされているライブラリ
- 標準ライブラリ
- ネット/http
インストール
以下のインストール手順を開始する前に、現在のGo プログラミング言語ライフサイクルのサポート期間内にあるバージョンの Go がインストールされていることを確認してください。
Go easy Instrumentation をインストールします。
$go install github.com/newrelic/go-easy-instrumentation@latest
インスツルメンテーションの提案を生成する
このツールは Git で最も効果的に機能します。 生成された変更をアプリケーションに適用する前に、アプリケーションがステージングされていない変更のないブランチ上にあることを確認することをお勧めします。 確認後、次の手順に従って、アプリケーションに New Relic Go エージェントをインストールする変更を生成して適用します。
- 次の CLI コマンドを実行して、作業ディレクトリに
new-relic-instrumentation.diff
という名前のファイルを作成します。bash$go-easy-instrumentation -path ../my-application/ .diff
ファイルを開き、内容を確認または修正してください。- インストゥルメンテーションの提案に満足したら、ファイルを保存し、変更を適用します。bash$mv new-relic-instrumentation.diff ../my-application/$cd ../my-application$git apply new-relic-instrumentation.diff
変更が適用されると、New Relic Go エージェントがインストールされた状態でアプリケーションが実行されるはずです。 エージェント インストレーションが期待どおりに機能しない場合は、一般的な Git コマンドを使用して簡単に回復できます。 たとえば、次のいずれかを試すことができます。
- 変更を保存する
git stash
- コードを以前のコミットに戻す
次は何ですか?
ご提案がある場合や問題が見つかった場合は、 Github の問題を作成してください。