Syntaxe
newrelic.agent.data_source_generator(name=None, **properties)
Encapsule une source de données génératrice de données métriques.
Description
L' API de source de données fournit un moyen de générer des métriques à 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_generator
est utilisé pour encapsuler une source de données génératrice de données métriques simple qui renvoie directement un itérable/générateur avec les métriques pour chaque échantillon. La fonction à laquelle le décorateur est appliqué ne doit prendre aucun argument. Cela serait utilisé lorsqu'il n'est pas nécessaire de conserver les informations d'état entre les appels pour générer des métriques, et lorsqu'une instance de la source de données peut être utilisée pour plusieurs applications.
Paramètres
paramètres | Description |
---|---|
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. |
dictionnaire | Facultatif. Toutes les propriétés supplémentaires à transmettre à la fabrique de sources de données. Les champs possibles pour un dictionnaire sont :
|
Valeurs de retour
Renvoie une fonction.
Exemples
Exemple de générateur de source de données
Un exemple d'utilisation de data_source_generator
pour encapsuler une fonction qui renvoie des valeurs métriques :
import newrelic.agentimport psutilimport os
@newrelic.agent.data_source_generator(name='Memory_Usage')def memory_metrics(): pid = os.getpid() p = psutil.Process(pid) 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()