• ログイン今すぐ開始

本書は、お客様のご参考のために原文の英語版を機械翻訳したものです。

英語版と齟齬がある場合、英語版の定めが優先するものとします。より詳しい情報については、本リンクをご参照ください。

問題を作成する

インストルメント Go トランザクション

New Relic for Go アプリケーションやマイクロサービスを監視するには、HTTP レスポンスやバックグラウンドタスクなど、特定のアプリサーバーのアクティビティに関連する トランザクション を作成する必要があります。その後、New Relic でアプリのパフォーマンスを確認することができます。 APM Transactions ページ を含みます。

Webトランザクションと非Webトランザクションの識別

他の多くの言語とは異なり、Goアプリケーションはコンパイルされたネイティブのバイナリファイルから実行されます。このため、GolangアプリケーションにNew Relicを設定するには、ソースコードにNew Relicのメソッドを手動で追加する必要があります。

APMでは、トランザクションは、 ウェブトランザクション または 非ウェブトランザクション として識別されます。

  • HTTP リクエストとレスポンスのライターを持つトランザクションをインストゥルメントまたはラップすると、New Relic はそのトランザクションを Web トランザクションとして扱います。
  • HTTP データを持たないトランザクションをインストゥルメントまたはラップすると、New Relic はそのトランザクションを非ウェブトランザクションとして扱います。

セグメントとは、トランザクションを構成する関数やコールのことです。New Relic for Go を使用して、 トランザクションにセグメントレベルの詳細を追加することもできます

トランザクションの監視

重要

トランザクション名の末尾に角かっこ[suffix]を使用しないでください。 New Relicは、名前から角かっこを自動的に削除します。代わりに、必要に応じて括弧(suffix)またはその他の記号を使用してください。

トランザクションをモニターするには監視したい機能の開始直後に以下のコードを配置します。たとえば、次のようになります。

txn := app.StartTransaction("transaction_name")
defer txn.End()

このコード例では

Webトランザクションを監視するには、 Transaction.SetWebRequestおよびオプションでTransaction.SetWebResponse APIを呼び出します。

txn := app.StartTransaction("transaction_name")
defer txn.End()
// req is a *http.Request, this marks the transaction as a web transaction
txn.SetWebRequestHTTP(req)
// writer is a http.ResponseWriter, use the returned writer in place of the original
writer = txn.SetWebResponse(writer)
writer.WriteHeader(500)

複数のゴルーチンを持つトランザクションの監視

複数のゴルーチンにわたるトランザクションを監視するには、 Transaction.NewGoroutine()を使用します。 NewGoroutineメソッドは、トランザクションへの新しい参照を返します。これは、セグメントを作成する各ゴルーチンに必要です。他のゴルーチンが開始する前または後にNewGoroutineを呼び出すかどうかは関係ありません。

すべてのTransactionメソッドは、任意のTransaction参照で使用できます。 Transactionは、任意のゴルーチンでEnd()が呼び出されたときに終了します。

HTTPハンドラをラップしてトランザクションを監視

標準のHTTPライブラリパッケージを使用している場合、 関数のコードをインストルメントする代わりに、HTTPリクエストをラップしてトランザクションを作成することができます

ここでは、HTTPハンドラをラップする前と後の例を示します。

前です。

http.HandleFunc("/users", usersHandler)

後です。

これにより、リクエストライターとレスポンスライターとの間で、自動的にトランザクションが開始・終了します。

http.HandleFunc(newrelic.WrapHandleFunc(app, "/users", usersHandler))

ハンドラーでトランザクションにアクセスするには、 newrelic.FromContext APIを使用します。これは、Goバージョン1.7以降でのみ機能することに注意してください。例えば:

func myHandler(w http.ResponseWriter, r *http.Request) {
txn := newrelic.FromContext(r.Context())
txn.NoticeError(errors.New("my error message"))
}

モニターエラー

New Relic for Goでは、3つの異なる方法でエラーを把握しています。

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

これを使用

エラーを追跡し、メッセージ、クラス、属性のあらゆる組み合わせを報告する

Transaction.NoticeError()

予想されるエラーを追跡し、アラートをトリガーしたり、エラー メトリックに影響を与えたりすることなく、メッセージ、クラス、および属性の任意の組み合わせをレポートします

Transaction.NoticeExpectedError()

パニックを報告する

deferで終了したトランザクションは、パニックを自動的に記録します。詳細については、New Relic forGoGitHubのドキュメントを参照してください。バージョン3.0.0以降、この機能は、 Config.ErrorCollector.RecordPanics構成をtrueに設定して特に有効にする必要があります。

エラーレスポンスコードの報告

トランザクションは、400を超えるエラーと100を下回るエラーを自動的に記録します。 詳細はNew Relic for Go GitHubのドキュメントを参照してください。.

APMおよびインフラストラクチャデータのログを表示

また、ログとアプリケーションのデータを統合して、トラブルシューティングをより簡単かつ迅速にできます。コンテキストのログでは、エラーとトレースに関連するログメッセージをアプリケーションのUIで直接表示できます。

  1. Errors ページから、トレースをクリックして Error details ページ に移動します。
  2. エラー詳細ページで、See logsをクリックします。
  3. 個々のログメッセージに関連する詳細を表示するには、メッセージを直接クリックします。

また、Kubernetesクラスターなどのインフラストラクチャデータのコンテキストでログを表示することもできます。別のUIに切り替える必要はありません。

取引方法の追加

Transactionオブジェクトには、 NoticeErrorAddAttributeIgnoreなど、トランザクションの動作を制御するために使用できるいくつかのオプションのメソッドがあります。トランザクションメソッドのリストについては、GodocのNew RelicforGoトランザクションメソッドを参照してください。

Copyright © 2023 New Relic Inc.

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