• /
  • EnglishEspañolFrançais日本語한국어Português
  • Se connecterDémarrer

Cette traduction automatique est fournie pour votre commodité.

En cas d'incohérence entre la version anglaise et la version traduite, la version anglaise prévaudra. Veuillez visiter cette page pour plus d'informations.

Créer un problème

data_source_factory (Python API d'agent)

Syntaxe

data_source_factory(name=None, **properties)

Encapsule une source de données définie comme une usine.

Description

L' API de source de données fournit un moyen de générer des données d'intervalle de temps métrique à l'aide d'une API de type pull plutôt que de l' API de type push implémentée par record_custom_metric. Pour en savoir plus sur pourquoi et comment utiliser des sources de données pour les métriques personnalisées, consultez sources de données métriques personnalisées.

Le décorateur data_source_factory encapsule une source de données définie comme une usine. Le décorateur peut être appliqué à une classe ou à une fonction. Le constructeur ou la fonction de classe doit accepter les arguments settings (paramètres de configuration pour la source de données) et environ (informations sur le contexte dans lequel la source de données est utilisée).

L'objet résultant doit être un appelable qui renvoie directement un itérable/générateur avec les métriques pour chaque échantillon.

Paramètres

paramètres

Description

name

chaîne

Facultatif. Le nom de la source de données. Ceci est utilisé uniquement à des fins de logging. S'il n'est pas fourni, la valeur par défaut est le nom appelable dérivé de la fonction décorée.

properties

dictionnaire

Facultatif. Toutes les propriétés supplémentaires à transmettre à la fabrique de sources de données.

Les champs possibles pour un dictionnaire sont :

  • count
  • total
  • min
  • max
  • sum_of_squares

Valeurs de retour

Renvoie une fonction.

Exemples

Exemple de data_source_factory

Un exemple :

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)
Droits d'auteur © 2025 New Relic Inc.

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