• ログイン

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

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

問題を作成する

data_source_factory (PythonエージェントAPI)

構文

data_source_factory(name=None, **properties)

ファクトリーとして定義されたデータソースをラップします。

説明

データソースAPIは、 メトリックのタイムスライスデータ を、 record_custom_metric で実装されているプッシュ型のAPIではなく、 プル型のAPI を使って生成する方法を提供しています。カスタムメトリクスにデータソースを使用する理由と方法については、 カスタムメトリクスのデータソース を参照してください。

data_source_factory デコレーターは、ファクトリーとして定義されたデータソースをラップします。このデコレータは、クラスまたは関数に適用できます。クラスのコンストラクタまたは関数は、 設定 (データソースの構成設定)および エンバイロン (データソースが使用されるコンテキストに関する情報)の引数を受け入れる必要があります。

結果として得られるオブジェクトは、各サンプルのメトリクスを持つイテレート可能なジェネレータを直接返す呼び出し可能なものでなければなりません。

パラメータ

パラメーター

説明

name

文字列

オプションです。データソースの名前です。これはロギングの目的でのみ使用されます。提供されていない場合は、装飾された関数から派生した呼び出し可能な名前がデフォルトとなります。

プロパティ

辞書

オプションです。データソース・ファクトリに渡す追加のプロパティ。

辞書に登録できるフィールドは以下の通りです。

  • count
  • トータル
  • min
  • max
  • 二乗の和

戻り値

関数を返します。

data_source_factoryの例

例を挙げると

import os
import time
import multiprocessing
@newrelic.agent.data_source_factory(name='CPU Usage')
class CPUMetricsDataSource(object):
def __init__(self, settings, environ):
self.last_timestamp = None
self.times = None
def start(self):
self.last_timestamp = time.time()
self.times = os.times()
def stop(self):
self.last_timestamp = None
self.times = None
def __call__(self):
if self.times is None:
return
now = time.time()
new_times = os.times()
elapsed_time = now - self.last_timestamp
user_time = new_times[0] - self.times[0]
utilization = user_time / (elapsed_time*multiprocessing.cpu_count())
self.last_timestamp = now
self.times = new_times
yield ('Custom/CPU/User Time', user_time)
yield ('Custom/CPU/User/Utilization', utilization)
newrelic.agent.register_data_source(CPUMetricsDataSource)
Copyright © 2022 New Relic株式会社。

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