• ログイン無料アカウント

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

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

問題を作成する

設定ファイルによるPythonのカスタムインストルメント

設定ファイルを変更することで、Pythonエージェントのモニタリングを拡張して、クラスの追加の関数やメソッドに費やされた時間をトレースすることができます。この形式の カスタムインスツルメンテーション は、APIコールよりも実装が簡単で、コードを修正する必要がありません。しかし、より複雑なニーズのためには、 Python のインスツルメンテーションを 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 の設定を使用すると、関数名がメトリック名に使用され、 関数 として分類されます。メトリック名に使用される関数名を上書きしたり、別の分類をしたりする必要がある場合は、設定ファイルで関数トレースを定義する別の手段を使用できます。に相当します。

transaction_tracer.function_trace = dumbdbm:open
dumbdbm:_Database._commit

この場合、エージェント設定ファイルに2つの新しい設定セクションを作成し、トレースする機能ごとに1つずつ設定することになります。

[function-trace:dumbdbm-1]
enabled = true
function = dumbdbm:open
name = dumbdbm:open
group = Function
[function-trace:dumbdbm-2]
enabled = true
function = dumbdbm:_Database._commit
name = dumbdbm:_Database._commit
group = Function

ini ファイルのセクション名は、 function-trace: で始まる必要があります。このプレフィックスに続く名前コンポーネントは何でも構いませんが、設定ファイル内のすべてのファンクショントレースセクションで一意である必要があります。 groupname の設定は、必要に応じて上書きして、希望のメトリック名にすることができます。 enabled 設定のデフォルトは false で、ファンクショントレースを有効にするには true に設定する必要があります。

APIを使った機器

シンプルなカスタムインストルメンテーションの目的では、コンフィグファイルの方法がうまく機能します。より精密でカスタマイズされたインストゥルメンテーションやエージェントの動作調整には、 Python agent API を使用するとよいでしょう。

Copyright © 2022 New Relic株式会社。