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

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

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

問題を作成する

profile_trace (PythonエージェントAPI)

構文

newrelic.agent.profile_trace(name=None, group=None, label=None, params=None, terminal=False)

デフォルトではインストゥルメントされない関数に対して、関数およびその内部の関数を特定の深さまで計装するために使用されます。

説明

profile_trace は、関数に追加するためのデコレータです。このデコレータを追加すると、追加のトランザクション情報(トランザクショントレース情報を含む)を収集できるようになります。

profile_traceデコレータは、エージェントバージョン2.102.0.85以上で関数に使用できます。これらのオブジェクトのタイミングは、消費が開始されたときに始まり、オブジェクトが使い果たされるか、スコープ外になったときに終了します。

デコレータは、静的メソッドやクラス メソッドのデコレータを含む既存のデコレータと組み合わせて使用できます。複数のデコレータをネストする場合は、 profile_trace デコレータを最も外側のデコレータとして使用します。

代替コールフォーム

デコレーターを使用できない設定の場合は、以下の代替コールフォームを利用できます。

ラッパー

トレースする特定の関数がどこにあるか事前にわかっている場合は、 profile_traceデコレータを使用できます。 ただし、トレースする必要があるすべての関数がわかっdon'tいる場合 (たとえば、ルーティング システムの一部として動的に検索されている場合)、登録時または呼び出し時にProfileTraceWrapperを使用して関数をラップする必要があります。

パスベースのラッピング

wrap_profile_trace は、関数が宣言されているコードの外で関数をラップするために使用されます。たとえば、これを使用して、変更したくないライブラリ コードをインスツルメントすることができます。

これらの通話フォーマットの違いについては、 Different call formats をご覧ください。

パラメーター

デコレーターのパラメータ

newrelic.agent.profile_trace(name=None, group=None, label=None, params=None, depth=3)

このコールには、以下のパラメータが含まれています。

パラメータ

説明

name

文字列 または 機能

オプション。関数名。ラップされる関数と同じパラメーターを受け取る関数にすることもできます。設定されていない場合、キャプチャされた関数名がデフォルトになります。

group

文字列 または 機能

オプション。groupは、 nameパラメータの命名構造を表します。これは、トランザクション タイプを分離するために UI で使用されます。

指定されていない場合、名前がmodule:class.functionまたはmodule:functionの形式であり、実行中の関数の名前を表しているという想定で、グループはデフォルトでFunctionになります。カスタムグループを作成する場合は、Python/をプレフィックスとして付けることをお勧めします。ラップされる関数と同じパラメーターを受け取る関数にすることができます。

label

文字列 または 機能

オプション。トランザクショントレース内のセグメントにコールアウトスタイルのフラグを追加します。デフォルトはNoneです。ラップされる関数と同じパラメーターを受け取る関数にすることもできます。

params

dict または 関数

オプション。トランザクショントレース内のセグメントに追加するカスタムパラメーター。ラップされる関数と同じパラメーターを受け取る関数にすることもできます。

depth

int

オプション。デフォルトは3です。関数内でセグメントを追加するスタックの深さです。

ラッパーのパラメーター

newrelic.agent.ProfileTraceWrapper(wrapped, name=None, group=None, label=None, params=None)

ラッパーのパラメーターには、 profile_traceのすべてのパラメーターwrappedパラメーターが含まれます。

パラメータ

説明

wrapped

機能

必要です。ラッピングされる機能

name

文字列 または 機能

オプション。関数名。ラップされる関数と同じパラメーターを受け取る関数にすることもできます。設定されていない場合、キャプチャされた関数名がデフォルトになります。

group

文字列 または 機能

オプション。groupは、 nameパラメータの命名構造を表します。これは、トランザクション タイプを分離するために UI で使用されます。

指定されていない場合、名前がmodule:class.functionまたはmodule:functionの形式であり、実行中の関数の名前を表しているという想定で、グループはデフォルトでFunctionになります。カスタムグループを作成する場合は、Python/をプレフィックスとして付けることをお勧めします。ラップされる関数と同じパラメーターを受け取る関数にすることができます。

label

文字列 または 機能

オプション。トランザクショントレース内のセグメントにコールアウトスタイルのフラグを追加します。デフォルトはNoneです。ラップされる関数と同じパラメーターを受け取る関数にすることもできます。

params

dict または 関数

オプション。トランザクショントレース内のセグメントに追加するカスタムパラメーター。ラップされる関数と同じパラメーターを受け取る関数にすることもできます。

depth

int

オプション。デフォルトは3です。関数内でセグメントを追加するスタックの深さです。

パスベースのラッピングパラメータ

newrelic.agent.wrap_profile_trace(module, object_path, name=None, group=None, label=None, params=None, depth=3)

パラメータには、 profile_traceのすべてのパラメータと次のパラメータが含まれます:

パラメータ

説明

module

物体

必要です。インストルメント化する機能を含むモジュール。

object_path

ストリング

関数の場所へのパスです。

profile_trace

profile_traceデコレーターの使用例:

import newrelic.agent
@newrelic.agent.profile_trace(depth=7)
def find_node(tree, value):
if tree.value == value:
return tree
for node in tree.children:
found_node = find_node(node, value)
if found_node:
return found_node

上記の例では、プロファイルトレースが再帰関数をラップしています。関数トレースは、関数内で最大7回の再帰的スタック呼び出しの深さまで追加されます。

ラッパーの例

ProfileTraceWrapperの使用例:

import newrelic.agent
def find_node(tree, value):
if tree.value == value:
return tree
for node in tree.children:
found_node = find_node(node, value)
if found_node:
return found_node
find_node = newrelic.agent.ProfileTraceWrapper(find_node, depth=7)

(呼び出される関数の識別子に基づいてメトリックに名前を付けるのではなく) エンドポイント名に基づいてメトリックに名前を付ける場合は、 ProfileTraceWrapper オブジェクトの作成時に、使用する名前と代替メトリック パス プレフィックスを指定できます。

import newrelic.agent
def find_node(tree, value):
if tree.value == value:
return tree
for node in tree.children:
found_node = find_node(node, value)
if found_node:
return found_node
find_node = newrelic.agent.ProfileTraceWrapper(find_node, name="find_node", group="Python/Profile", depth=7)

メトリクスを動的に命名したい場合(呼び出される関数の識別子に基づいてメトリクスを命名するのではなく)、ProfileTraceWrapperオブジェクトの作成時に名前を関数として指定できます。

import newrelic.agent
def find_node(tree, value):
if tree.value == value:
return tree
for node in tree.children:
found_node = find_node(node, value)
if found_node:
return found_node
find_node = newrelic.agent.ProfileTraceWrapper(find_node, name=lambda tree, value: f"find_node_{value}", depth=7)
Copyright © 2026 New Relic株式会社。

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