New Relic Go エージェント は、お客様の Go 言語アプリケーションやマイクロサービスを監視し、パフォーマンスの問題を特定して解決するのに役立ちます。Go エージェント API は、いくつか用意されている New Relic API のひとつです。
重要
Go アプリケーションはコンパイルされたネイティブ バイナリ ファイルから実行されるため、New Relic メソッドをコードに追加して、Go アプリケーションのトランザクションを監視する コードを手動でインストルメント化する 必要があります。
トランザクションの監視
トランザクションを監視するためにコードを手動でインストルメントする前に、 互換性と要件 を満たしていること、そして 最新バージョンの Go エージェント を使用していることを確認してください。
あなたがしたい場合は... | この方法を使用してください... |
---|---|
トランザクションの開始タイミング | |
トランザクションのタイミングを停止します | |
トランザクションがNewRelicに報告されないようにする | |
標準のHTTPライブラリパッケージを使用して、トランザクションを監視する |
セグメントを使用した時間固有の方法
トランザクションはすでに New Relic で表示されているが、そのトランザクション中に呼び出された特定のメソッドに関する十分なデータがない場合、 セグメントを作成することができます 。例えば、複雑なロジックを持つメソッドの時間を計測したい場合、トランザクション内の各メソッドにセグメントを作成することができます。
既存のトランザクション内でメソッドを計測するには、次のようなセグメントを作成します。
トランザクションが開始された場所とは別のゴルーチンで作業が行われている場合は、 NewGoroutine()
API を使用する必要があります。
トランザクションのメタデータを強化する
New Relic がトランザクションに対してレポートするメタデータを管理することができます。ここでは、トランザクションに対して異なるレベルの詳細情報を必要とする場合の例を紹介します。
- メトリックのグループ化の問題が発生している場合 、トランザクションのデフォルトの名前を変更して、より識別しやすくしてください。
- トランザクションのダッシュボードを作成したい場合は、 カスタムアトリビュート を追加してください。
あなたがしたい場合は... | これを使って... | |
---|---|---|
トランザクションの名前を変更する | ||
トランザクションにメタデータ(顧客のアカウント名やサブスクリプションレベルなど)を追加することができます。 |
外部サービスへの機器呼び出し
これらのメソッドを使用して、アプリの他のアプリやデータベースへの接続に関するデータを収集します。
あなたがしたい場合は... | これを使って... |
---|---|
外部リソース(外部サービス、データベースサーバー、メッセージキューなど)への呼び出しの時間を計測します | |
New Relic エージェントでインストルメントされた別のアプリにアクティビティを接続する | 重要クロスアプリケーション トレーシングはディストリビューティッド(分散)トレーシングに代わって非推奨となり、将来のエージェント バージョンでは削除される予定です。 |
リクエストが分散システムを通過する際の経路を見ることができます。 |
エラーを収集または無視する
エージェントは自動的にエラーを検出します。Go エージェントが New Relic にエラーを報告する方法を変更したい場合は、 エラーコレクターの設定 を変更してください。
あなたがしたい場合は... | これを使って... |
---|---|
エージェントが自動的に報告しないエラーを報告する | |
予想されるエラーを報告します。エージェントは自動的に報告せず、アラートをトリガーしません | |
エージェントがエラーをまったく報告しないようにする |
エラー フィンガープリント: 検出された各エラーにエラー グループを動的に適用します。
コールバック関数をエージェントに提供して、通知された各エラーに目的の エラー グループを 動的に適用できます。Go エージェント構成オプション newrelic.ConfigSetErrorGroupCallbackFunction
を使用して、エージェントにコールバックを提供します。
この API 呼び出しは、唯一の引数としてコールバック メソッド (タイプ newrelic.ErrorGroupCallback
である必要があります) を取ります。次に例を示します。
myCallbackFunc := CallbackFunc(errorInfo newrelic.ErrorInfo) string { if errorInfo.Message == "example error message" { return "example group 1" } if errorInfo.GetHttpResponseCode() == "403" && errorInfo.GetUserID() == "user 2" { return "user 2 payment issue" }
// use default error grouping behavior return ""}
app, err := newrelic.NewApplication( newrelic.ConfigSetErrorGroupCallbackFunction(myCallbackFunc))
示されている例では、タイプ newrelic.ErrorInfo
のオブジェクトを受け取り、エラー グループを表す文字列を返すコールバック プロシージャが作成されます。 ErrorGroupCallback
関数が空でない文字列を返す場合、通知されたエラーのデフォルトのグループ化動作をオーバーライドし、サーバー側のグループ化ロジックを適用することに注意してください。
コールバック関数は、入力引数 newrelic.ErrorInfo
オブジェクトを 1 つだけ受け取る必要があります。オブジェクトには以下が含まれます。
Key | Value |
---|---|
| 気づいたGoエラーオブジェクト。これは、HTTP エラーとパニックの場合は nil になります。 |
| エージェントがエラーに気付いた時刻。 |
| エラーメッセージ。 |
| New Relic エラー クラス。エラーが |
| エラーが予期されたときの |
| New Relic UI に表示されるトランザクションのフォーマットされた名前。 |
| 属性名を入力として受け取り、検索してトランザクション ユーザー属性を |
| 属性名を入力として受け取り、検索してエラー ユーザー属性を |
| エラーに関連する最大 100 のスタック トレース行を含む |
| 現在のエラーの親トランザクション中に作成された HTTP 要求の URI を返すメソッド。Web リクエストが発生しなかった場合は、空の文字列が返されます。 |
| このエラーの親トランザクション中に発生した Web 要求の HTTP メソッドを返すメソッド。Web リクエストが発生しなかった場合は、空の文字列が返されます。 |
| このエラーの親トランザクション中に発生した Web 要求中に返された HTTP 応答コードを返すメソッド。Web リクエストが発生しなかった場合は、空の文字列が返されます。 |
| このエラーとトランザクションに適用された |
ユーザー追跡: ユーザー ID を各トランザクションおよびエラーに関連付ける
New Relic Go エージェントがユーザー ID を認識している場合、トランザクションとエラーをユーザー ID に関連付けることができます。Go エージェント API txn.SetUserID("example user ID")
を使用して、エージェントにユーザー ID を提供します。
この API 呼び出しには、エンド ユーザーの一意の識別子を表す文字列の 1 つの引数が必要です。この文字列は、UUID、データベース ID などです。トランザクションを関連付けるユーザー ID を New Relic Go エージェントに通知するために、トランザクションごとに少なくとも 1 回は API 呼び出しを行う必要があります。次に、トランザクションの存続期間中にエージェントがエラーに気付くと、エラーには、ユーザー ID 値を保持する enduser.id
エージェント属性が含まれます。
API は、新しいユーザー ID がスコープに入るたびに呼び出されることを意図しているため、理想的には、ユーザー セッションの作成を認識しているミドルウェアを介して呼び出されます。New Relic Go エージェントがユーザー ID を認識すると、現在のトランザクションおよび現在のトランザクションの存続期間中に検出されたエラーに enduser.id
エージェント属性を提供します。
アプリからカスタムデータを送信する
カスタムデータ を Go エージェントで記録するには、以下のいずれかの方法を使用します。
あなたがしたい場合は... | これを使って... |
---|---|
イベントに関するデータを送信し、 New Relic で分析できるようにする。 | |
イベントにメタデータのタグを付けて、イベントをフィルタリングしてファセット化します | |
指定した期間のカスタムパフォーマンスデータを報告する |
関連ログを見る
アプリケーションのエラーとトレースのコンテキスト内でログを直接表示するには、次のAPI呼び出しを使用してログに注釈を付けます。
ログデータと他のテレメトリーデータとの相関関係については、 logs in context のドキュメントをご覧ください。
ブラウザモニタリングでブラウザのパフォーマンスを監視
browserと Go エージェント を使用してアプリのブラウザ を監視するには、次のいずれかの方法を使用できます。
あなたがしたい場合は... | これを使って... |
---|---|
ブラウザエージェントのインストール | |
ブラウザ監視用のJavaScriptコードをHTMLページに直接追加する |
Goエージェントの設定変更
New Relic モニタリングのいくつかの側面を管理するために、 Go エージェントの設定を変更することができます。; 例えば。
- 高セキュリティモードをオンにする
- フィルタリングやソートのためのカスタムラベルの追加
- 報告される情報の管理