Go はランタイムが不透明なコンパイル言語であるため、他の言語のような自動インストゥルメンテーションをサポートできません。 このため、New Relic Go エージェントは SDK として設計されています。 Go エージェントは SDK であるため、自動インストゥルメンテーションをサポートする言語のエージェントよりも多くの手動作業が必要です。
計装を簡単にするために、Go エージェント チームは Go easy 計装ツールを作成しました。 このツールはNew Relic Go エージェントを使用してアプリケーションを計測するソースコードへの変更を提案することで、ほとんどの作業を行います。
使い方
このツールはアプリケーションの動作に干渉せず、コードに直接変更を加えることもありません。 次のようなことが起こります:
- コードを分析し、Go エージェントがテレメトリーデータをキャプチャできるようにする変更を提案します。
.diffファイルの変更を確認し、ソースコードに追加する変更を決定します。
分析の一環として、このツールはgo getまたは他の Go 言語ツールチェーン コマンドを呼び出すことがあります。これにより、 go.modファイルが変更される可能性がありますが、実際のソースコードは変更されません。
インストゥルメントされたとは何ですか?
このツールがアプリケーションに計装できる範囲は、次のアクションに限定されます。
- トランザクションによってラップまたはトレースされた関数内のエラーをキャプチャする
- 既存のNew Relic計装を検出し、既存のNew Relicコードに基づいてソースコードへの変更を提案します。
- アプリケーションの
main()メソッドでトランザクションを使用して呼び出されるローカル定義関数をトレースします - 非同期セグメントを使用した非同期関数と関数リテラルのトレース
- トレース用にサポートされているライブラリにミドルウェアを追加する
- 外部トラフィックへのディストリビューティッド(分散)トレーシングの挿入
サポートされているライブラリ
- 標準ライブラリ
- ネット/http
- gin
- gRPC
- gochi
- mysql
- slog
インストール
以下のインストール手順を開始する前に、現在のGo プログラミング言語ライフサイクルのサポート期間内にあるバージョンの Go がインストールされていることを確認してください。
Go easy Instrumentation をインストールします。
$go install github.com/newrelic/go-easy-instrumentation@latest提案生成
Go easy 計装ツールは、Go アプリケーションをインストゥルメントした場合の提案を提供します。 出力された diff ファイルを注意深く確認して、計装の正しさを検証します。
インスツルメンテーションの提案を生成する
このツールはGitと連携して最も効果的に動作します。提案された変更をアプリケーションに適用する前に、アプリケーションがステージングされていない変更のないブランチ上にあることを確認することをお勧めします。確認後、以下の手順に従って、アプリケーションに New Relic Go エージェントをインストールするための変更を生成、確認、適用してください。
- 次の CLI コマンドを実行して、作業ディレクトリに
new-relic-instrumentation.diffという名前のファイルを作成します。bash$go-easy-instrumentation instrument ../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 の問題を作成してください。