• ログイン今すぐ開始

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

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

問題を作成する

Instrument Go セグメント

New Relic for Go を使用すると、Go アプリケーションの トランザクション の特定のセグメントを監視して、特定の機能やコードブロックについてより詳細な情報を得ることができます。

機能やコードブロックの計測時間

セグメント は、アプリケーションにおける トランザクション の特定の部分を指します。セグメントを計測することで、外部呼び出し、データストア呼び出し、キューへのメッセージ追加、バックグラウンドタスクなどの関数やコードブロックにかかる時間を計測することができます。

例: 出荷情報とクレジットカード情報の両方を処理する、チェックアウトプロセスに関連するトランザクションがあります。このトランザクションを、配送用のセグメントと支払い用のセグメントの2つに分割するようにアプリケーションを作成することができます。

ブロック・オブ・コード・セグメント

トランザクション をインストルメントすると、そのトランザクション内の1つまたは複数のセグメントをインストルメントする準備が整います。

コードの任意のブロックをセグメントとして計測するには、次のパターンを使用し、トランザクションに設定された変数名としてtxnを含めます。

segment := newrelic.Segment{}
segment.Name = "mySegmentName"
segment.StartTime = txn.StartSegmentNow()
// ... code you want to time here ...
segment.End()

StartSegment 便利なヘルパーです。セグメントを作成して開始します。

segment := txn.StartSegment("mySegmentName")
// ... code you want to time here ...
segment.End()

機能セグメント

関数をセグメントとしてインスツルメントすることは、任意のコードブロックをセグメントとしてインスツルメントすることと基本的に同じです。主な違いは、関数には個別の終わりがあるので、Go の defer ステートメント を使用できることです。

関数をセグメントとして計測するには、関数の先頭に次のコードを追加し、トランザクションに設定された変数名としてtxnを含めます。

defer txn.StartSegment("mySegmentName").End()

ネストセグメント

セグメントはネストすることができます。終了するセグメントは、最後に開始されたセグメントでなければなりません。

以下は、あるセグメントが別のセグメントの中で始まり、終わる例です。

s1 := txn.StartSegment("outerSegment")
s2 := txn.StartSegment("innerSegment")
// s2 must end before s1
s2.End()
s1.End()

ゼロ値のセグメントは安全に終了することができます。したがって、次のコードは、条件付きで失敗しても安全です。

var s newrelic.Segment
if recordSegment {
s.StartTime = txn.StartSegmentNow()
}
// ... code you wish to time here ...
s.End()

データストアのセグメント

Go アプリケーションのデータストア呼び出しを計測することができます。データストアセグメントは、New Relic の APM Transactions breakdown テーブルと Databases タブの Transactions ページ に表示されます。

MySQL、PostgreSQL、または SQLite データベース ドライバを使用している場合、Datastore セグメントを追加する最も簡単な方法は、あらかじめ組み込まれている統合パッケージを使用することです。それ以外の場合は、データベースを呼び出すたびに手動で Datastore セグメントを作成することができます。

外部セグメント

Web サービスやクラウド上のリソースなど、外部サービスへの Go アプリケーションの呼び出しや、その他のネットワーク呼び出しを計測することができます。外部セグメントは、New Relic の APM Transactions breakdown テーブルと External services ページ に表示されます。

外部セグメントのインストルメントには2つの方法があります。

メッセージ・プロデューサー・セグメント

RabbitMQやKafkaなどのキューイングシステムにメッセージを追加するGoアプリケーションコールを計測することができます。メッセージプロデューサーのセグメントは、New Relic の APM Transactions breakdown に表示されます。

メッセージ・プロデューサー・セグメントを計測する方法は一つしかありません。

Copyright © 2023 New Relic Inc.

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