newrelic.ini構成ファイルを編集することで、Python エージェントの監視を拡張して、追加の関数やクラスのメソッドに費やされた時間をトレースできます。この形式のカスタム インストルメンテーションは、API 呼び出しよりも実装が簡単で、コードを変更する必要がありません。ただし、より複雑なニーズの場合は、代わりにAPI を介して計測する必要がある場合があります。
設定ファイルの機能一覧
インストルメンテーションを指定された関数とクラス メソッドに拡張するには、それらをエージェント構成ファイルの newrelic セクション内の transaction_tracer.function_trace 設定に追加します。関数の識別子の形式は module:function であり、クラス メソッドの識別子は module:class.functionである必要があります。
複数のアイテムをリストアップするには、以下のいずれかの方法を使用します。
一行で表示します。各項目をスペースで区切ります。
複数行: 後続の行をインデントするには、
ini
ファイルの規則に従います。
インストルメント化された関数のデータが報告されると、メトリクスには Function/module:function または Function/module:class.functionの形式の名前が付けられます。トランザクションのパフォーマンスの内訳では、カテゴリは Function として表示され、セグメントは module:function または module:class.functionとして表示されます。低速トランザクション追跡の場合は、セグメント名のみが表示されます。関数が実際にジェネレーターを返している場合、ジェネレーターを返すのに費やした時間だけが記録され、ジェネレーターからの値の消費は記録されないことに注意してください。
拡張APIのラッピングに関する制限
エージェント設定ファイルに関数をリストアップしてラッピングする際、メソッドがC拡張モジュールによってCコードで実装されたクラスのメンバーである場合は、この方法でクラスメソッドを指定することはできません。これは、Python C APIで実装された型のメソッドテーブルを変更することができないためです。
報告された関数名のオーバーライド
エージェント構成ファイルで transaction_tracer.function_trace 設定を使用する場合、関数の名前はメトリック名に使用され、 Functionとして分類されます。メトリック名で使用できる関数名をオーバーライドする必要がある場合、またはメトリック名を別の方法で分類する必要がある場合は、構成ファイルで関数トレースを定義する代替手段を使用できます。同等のもの:
transaction_tracer.function_trace = dumbdbm:open dumbdbm:_Database._commitこの場合、エージェント設定ファイルに2つの新しい設定セクションを作成し、トレースする機能ごとに1つずつ設定することになります。
[function-trace:dumbdbm-1]enabled = truefunction = dumbdbm:openname = dumbdbm:opengroup = Function
[function-trace:dumbdbm-2]enabled = truefunction = dumbdbm:_Database._commitname = dumbdbm:_Database._commitgroup = Function.iniファイルのセクション名はfunction-trace:で始まる必要があります。このプレフィックスに続く名前コンポーネントは何でもかまいませんが、構成ファイル内のすべての関数トレース セクションにわたって一意である必要があります。groupおよびname設定をオーバーライドして、目的のメトリクス名を取得できます。enabled設定のデフォルトはfalseであり、関数トレースを有効にするにはこれをtrueに変更する必要があります。
APIを使った機器
単純なカスタム インストルメンテーションの目的では、構成ファイルによる方法がうまく機能します。より正確にカスタマイズされたインストルメンテーションとエージェントの動作を調整するには、 Python エージェント APIを使用します。