構文
newrelic.agent.datastore_trace(product, target, operation)データストアへの呼び出しを計測するために使用されます。
説明
datastore_trace は、追加セグメントの形で、さらに詳細を戦場トレースに追加するために使用されます。 datastore_traceで報告されたすべての呼び出しは、 APM データベース ページに表示されます。 datastore_traceデータストアへの呼び出し時間を計測する関数のデコレータとして使用できるDatastoreTraceWrapperの一部を返します。
datastore_traceデコレーターは、エージェント バージョン 2.102.0.85 以降のジェネレーターとコルーチンで使用できます。これらのオブジェクトのタイミングは、消費が開始されたときに始まり、オブジェクトが使い果たされるか範囲外になると終了します。これは、メトリックがジェネレータまたはコルーチン オブジェクト自体の作成にかかった時間を表す以前のバージョンからの変更です。
アプリケーションでデコレーターを使用できない場合は、これらの他の呼び出しフォーマットのいずれかを使用することができます。
- The context manager: コンテキスト マネージャー フォームは
DatastoreTraceです。 - The wrapper: ラッパーフォームは
DatastoreTraceWrapperです。 デコレータを使用せずにラップされた関数を返すために使用できます。 - The path-based wrapper: パスベースのラッパー形式は
wrap_datastore_traceです。 これは、モンキーパッチングを通じて、指定されたオブジェクトにDatastoreTraceWrapperを適用します。 これは、デコレータと同じ引数に加えて、追加のmoduleとobject_path引数を受け取ります。
これらの異なるコールフォーマットの用途についての説明は、 Different call formats を参照してください。通話例については、 例 をご覧ください。
パラメーター
デコレーターのパラメータ
newrelic.agent.datastore_trace(product, target, operation)このコールには、以下のパラメータが含まれています。
パラメータ | 説明 |
|---|---|
ストリング | 必須。ベンダーの名前。例: |
ストリング | 必須。コレクションまたはテーブルの名前。ターゲットがない場合は、 |
ストリング | 必須。データストア操作の名前。例: |
コンテキストマネージャのパラメータ
newrelic.agent.DatastoreTrace(product, target, operation, host=None, port_path_or_id=None, database_name=None)コンテキスト マネージャーのパラメーターには、 datastore_traceからのすべてのパラメーターに加えて、追加のhost 、 port_path_or_id 、およびdatabase_nameパラメーターが含まれます。
パラメータ | 説明 |
|---|---|
ストリング | オプションです。データストア・サーバーのホスト名またはIP。 |
ストリング | オプションです。データストア・サーバーへの接続に使用するポートです。unix ソケットで接続する場合は、ソケットへのパスを指定します。 |
ストリング | オプションです。データベースの名前です。 |
ラッパーのパラメーター
newrelic.agent.DatastoreTraceWrapper(wrapped, product, target, operation)ラッパーのパラメーターには、 datastore_traceのすべてのパラメーターとwrappedパラメーターが含まれます。
パラメータ | 説明 |
|---|---|
機能 | 必要です。ラッピングされる機能 |
パスベースのラッピングパラメータ
newrelic.agent.wrap_datastore_trace(module, object_path, product, target, operation)パラメータには、 datastore_traceのすべてのパラメータと次のパラメータが含まれます:
パラメータ | 説明 |
|---|---|
物体 | 必要です。インストルメント化する機能を含むモジュール。 |
ストリング | 必要です。関数の場所へのパスです。 |
戻り値
datastore_trace DatastoreTraceWrapper()パーシャルを返します。
例
datastore_trace
datastore_traceデコレーターの使用例:
import newrelic.agent
class _Database(UserDict.DictMixin):
...
@newrelic.agent.datastore_trace('Redis', None, 'get') def _get(self, key): ...ネイティブ コルーチンでdatastore_traceデコレータを使用する例:
import newrelic.agent
class _Database(UserDict.DictMixin):
...
@newrelic.agent.datastore_trace('Redis', None, 'get') async def _get(self, key): ...コンテクストマネージャーの例
DatastoreTraceコンテキスト マネージャーの使用例: これにより、`custom_action` の実行にかかる時間のタイミングが得られます。
import newrelic.agent
def complex_query(a, b, c): with Connection(host, port, db) as conn: with newrelic.agent.DatastoreTrace( product="Custom Product", target=None, operation="custom", host=host, port_path_or_id=port, database_name=db, ):
conn.custom_action()ラッパーの例
DatastoreTraceWrapperの使用例:
import newrelic.agent
class _Database(UserDict.DictMixin):
...
def _get(self, key): ...
_Database._get = newrelic.agent.DatastoreTraceWrapper( _Database._get, "Redis", None, "get")