構文
newrelic.agent.register_data_source(source, application=None, name=None, settings=None, **properties)
カスタムメトリックデータを生成するためのデータソースを登録します。
説明
この呼び出しは、カスタム メトリック・タイムスライス・データ を生成するために、 収穫サイクルごとにポーリングされるデータ・ソースを登録します。カスタム・メトリックにデータ・ソースを使用する理由と方法については、 カスタム・メトリック・データ・ソース を参照してください。
ヒント
ほとんどの場合、 name
以外のオプションの引数を使用する必要はありません。
データ ソースによって返される指標は、値が数値または浮動小数点である単純な (name, value)
タプルである場合も、特定の指標についてすでに集計されているデータ サンプルに対応する辞書である場合もあります。
メトリクス値としてディクショナリーを返す場合、提供可能なフィールドは以下のとおりです。
count
total
min
max
sum_of_squares
これらのフィールドの詳細と一般的な使用方法については、 Pre-aggregated metrics を参照してください。
ヒント
エージェント構成を使用して同じ結果を達成することもできます。この場合、コードを変更する必要はありません。この方法でデータ ソースを追加するには、構成ファイルにプレフィックス data-source:
を付けたセクションを追加し、その後に複数のデータ ソースが指定されている場合にそのセクションを別のデータ ソースのセクションと区別するための一意の値を続けます。以下に例を示します。
[data-source:memory-usage]enabled = truefunction = samplers:memory_metrics# application = ...# name = ...[data-source:cpu-usage]enabled = truefunction = samplers:CPUMetricsDataSource# application = ...# name = ...
データ ソースが関数で指定されている場合、名前は module:function
になります。クラスの場合は、 module:class
になります。モジュールは、Python モジュール検索パスを使用して見つけられる必要があります。
register_data_source
と同様、データをレポートするアプリケーションと名前はオプションです。
パラメーター
パラメータ | 説明 |
---|---|
機能 または クラス | 必要。データ ソース。これは、 |
アプリケーションオブジェクト | オプション。データのレポート先となる New Relic が監視するアカウントに対応するアプリケーション オブジェクト。デフォルトの レポートアプリケーションごとに異なるデータを保持するデータソースが必要な場合は、ファクトリーパターンを使用して、アプリケーションごとにデータソースのインスタンスを作成することができます。 |
ストリング | オプションです。データソースの名前です。これはロギング目的でのみ使用され、デフォルトではデータソース自体が提供する名前になります。 |
ストリング | オプションです。データソース・ファクトリーに渡す設定です。 |
ストリング | オプションです。データソース・ファクトリに渡す追加のプロパティ。 |
戻り値
なし。
例
データソースのメモリ使用量
import newrelic.agentimport psutilimport os
@newrelic.agent.data_source_generator(name='Memory_Usage')def memory_metrics(): pid = os.getpid() p = psutil.Process(os.getpid()) m = p.memory_info() yield ('Custom/Memory/Physical', float(m.rss) / (1024 * 1024)) yield ('Custom/Memory/Virtual', float(m.vms) / (1024 * 1024))
@newrelic.agent.background_task()def main(): # Example code, business as usual print("Hello, world!")
if __name__ == "__main__": newrelic.agent.initialize(config_file="newrelic.ini") app = newrelic.agent.register_application() newrelic.agent.register_data_source(memory_metrics, app) main()