• EnglishEspañol日本語한국어Português
  • ログイン今すぐ開始

この機械翻訳は、参考として提供されています。

英語版と翻訳版に矛盾がある場合は、英語版が優先されます。詳細については、このページを参照してください。

問題を作成する

GoエージェントAPI使用の手引き

New Relic Go エージェント は、お客様の Go 言語アプリケーションやマイクロサービスを監視し、パフォーマンスの問題を特定して解決するのに役立ちます。Go エージェント API は、いくつか用意されている New Relic API のひとつです。

重要

Go アプリケーションはコンパイルされたネイティブ バイナリ ファイルから実行されるため、New Relic メソッドをコードに追加して、Go アプリケーションのトランザクションを監視する コードを手動でインストルメント化する 必要があります。

トランザクションの監視

トランザクションを監視するためにコードを手動でインストルメントする前に、 互換性と要件 を満たしていること、そして 最新バージョンの Go エージェント を使用していることを確認してください。

あなたがしたい場合は...

この方法を使用してください...

トランザクションの開始タイミング

StartTransaction()

トランザクションのタイミングを停止します

txn.End()

トランザクションがNewRelicに報告されないようにする

Ignore()

標準のHTTPライブラリパッケージを使用して、トランザクションを監視する

HTTPリクエストラッピング

セグメントを使用した時間固有の方法

トランザクションはすでに New Relic で表示されているが、そのトランザクション中に呼び出された特定のメソッドに関する十分なデータがない場合、 セグメントを作成することができます 。例えば、複雑なロジックを持つメソッドの時間を計測したい場合、トランザクション内の各メソッドにセグメントを作成することができます。

既存のトランザクション内でメソッドを計測するには、次のようなセグメントを作成します。

トランザクションが開始された場所とは別のゴルーチンで作業が行われている場合は、 NewGoroutine() API を使用する必要があります。

トランザクションのメタデータを強化する

New Relic がトランザクションに対してレポートするメタデータを管理することができます。ここでは、トランザクションに対して異なるレベルの詳細情報を必要とする場合の例を紹介します。

あなたがしたい場合は...

これを使って...

トランザクションの名前を変更する

SetName()

トランザクションにメタデータ(顧客のアカウント名やサブスクリプションレベルなど)を追加することができます。

AddAttribute()

外部サービスへの機器呼び出し

これらのメソッドを使用して、アプリの他のアプリやデータベースへの接続に関するデータを収集します。

あなたがしたい場合は...

これを使って...

外部リソース(外部サービス、データベースサーバー、メッセージキューなど)への呼び出しの時間を計測します

StartExternalSegment()

New Relic エージェントでインストルメントされた別のアプリにアクティビティを接続する

クロスアプリケーショントレーシング

重要

クロスアプリケーション トレーシングはディストリビューティッド(分散)トレーシングに代わって非推奨となり、将来のエージェント バージョンでは削除される予定です。

リクエストが分散システムを通過する際の経路を見ることができます。

ディストリビューティッド(分散)トレーシング

エラーを収集または無視する

エージェントは自動的にエラーを検出します。Go エージェントが New Relic にエラーを報告する方法を変更したい場合は、 エラーコレクターの設定 を変更してください。

あなたがしたい場合は...

これを使って...

エージェントが自動的に報告しないエラーを報告する

NoticeError()

予想されるエラーを報告します。エージェントは自動的に報告せず、アラートをトリガーしません

NoticeExpectedError()

エージェントがエラーをまったく報告しないようにする

ErrorCollector.IgnoreStatusCodes()

エラー フィンガープリント: 検出された各エラーにエラー グループを動的に適用します。

コールバック関数をエージェントに提供して、通知された各エラーに目的の エラー グループを 動的に適用できます。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

Error

気づいたGoエラーオブジェクト。これは、HTTP エラーとパニックの場合は nil になります。

TimeOccured

エージェントがエラーに気付いた時刻。

Message

エラーメッセージ。

Class

New Relic エラー クラス。エラーが errorClasserを実装している場合、その値はそこから派生します。それ以外の場合は、エージェントによってエラーが収集された方法から導出されます。HTTP エラーの場合、これはエラー番号になります。パニックはパブリック定数値 newrelic.PanicErrorClassになります。それ以外の場合、エラー クラスは reflect.TypeOf()を呼び出してルート エラー オブジェクトから抽出されます。最も一般的なルート エラー クラスは *errors.errorStringです。

Expected

エラーが予期されたときの true である bool。

TransactionName

New Relic UI に表示されるトランザクションのフォーマットされた名前。

GetTransactionUserAttributes(attribute string)

属性名を入力として受け取り、検索してトランザクション ユーザー属性を interface{}として返すメソッドと、キーが属性マップで見つかった場合は true である bool を返します。

GetErrorAttribute(attribute string)

属性名を入力として受け取り、検索してエラー ユーザー属性を interface{}として返すメソッドと、キーがエラー属性マップで見つかった場合は true である bool を返すメソッド。

GetStackTraceFrames()

エラーに関連する最大 100 のスタック トレース行を含む StackTraceFrame オブジェクトのスライスを返すメソッド。スライスを割り当てて設定する必要があるため、このメソッドを呼び出すとコストがかかる可能性があることに注意してください。このメソッドは、パフォーマンスを最適化する必要がある場合にのみ呼び出すことをお勧めします。

GetRequestURI()

現在のエラーの親トランザクション中に作成された HTTP 要求の URI を返すメソッド。Web リクエストが発生しなかった場合は、空の文字列が返されます。

GetRequestMethod()

このエラーの親トランザクション中に発生した Web 要求の HTTP メソッドを返すメソッド。Web リクエストが発生しなかった場合は、空の文字列が返されます。

GetHttpResponseCode()

このエラーの親トランザクション中に発生した Web 要求中に返された HTTP 応答コードを返すメソッド。Web リクエストが発生しなかった場合は、空の文字列が返されます。

GetUserID()

このエラーとトランザクションに適用された UserID を返すメソッド。 UserID が定義されていない場合、空の文字列が返されます。

ユーザー追跡: ユーザー 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 で分析できるようにする。

RecordCustomEvent()

イベントにメタデータのタグを付けて、イベントをフィルタリングしてファセット化します

AddAttribute()

指定した期間のカスタムパフォーマンスデータを報告する

RecordCustomMetric()

関連ログを見る

アプリケーションのエラーとトレースのコンテキスト内でログを直接表示するには、次のAPI呼び出しを使用してログに注釈を付けます。

ログデータと他のテレメトリーデータとの相関関係については、 logs in context のドキュメントをご覧ください。

ブラウザモニタリングでブラウザのパフォーマンスを監視

browserと Go エージェント を使用してアプリのブラウザ を監視するには、次のいずれかの方法を使用できます。

あなたがしたい場合は...

これを使って...

ブラウザエージェントのインストール

ブラウザのコピー/ペースト方式を使用

ブラウザ監視用のJavaScriptコードをHTMLページに直接追加する

BrowserTimingHeader()

Goエージェントの設定変更

New Relic モニタリングのいくつかの側面を管理するために、 Go エージェントの設定を変更することができます。; 例えば。

  • 高セキュリティモードをオンにする
  • フィルタリングやソートのためのカスタムラベルの追加
  • 報告される情報の管理
Copyright © 2024 New Relic株式会社。

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.