Syntaxe
newrelic.agent.register_data_source(source, application=None, name=None, settings=None, **properties)
Enregistre une source de données pour générer des données métriques personnalisées.
Description
Cet appel enregistre une source de données à interroger à la fin de chaque cycle de collecte pour générer des données d'intervalle de temps métrique personnalisées. 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.
Conseil
Dans la plupart des cas, vous n'aurez pas besoin d'utiliser d'arguments facultatifs à l'exception de name
.
Les métriques renvoyées par une source de données peuvent être un simple uplet (name, value)
où la valeur est un nombre ou une virgule flottante, ou la valeur peut être un dictionnaire qui correspond à un échantillon de données déjà agrégé pour une métrique spécifique.
Lors du renvoi d'un dictionnaire comme valeur métrique, les champs qui peuvent être fournis sont :
count
total
min
max
sum_of_squares
Pour en savoir plus sur ces champs et quelques conseils d'utilisation générale, consultez Pré-métrique agrégée.
Conseil
Vous pouvez également obtenir le même résultat en utilisant la configuration de l'agent, qui ne nécessite pas de modifier votre code. Pour ajouter la source de données de cette manière, ajoutez une section dans le fichier de configuration avec le préfixe data-source:
, suivi d'une valeur unique pour distinguer la section de celle d'une autre source de données si plusieurs sont spécifiées. Voici un exemple :
[data-source:memory-usage]enabled = truefunction = samplers:memory_metrics# application = ...# name = ...[data-source:cpu-usage]enabled = truefunction = samplers:CPUMetricsDataSource# application = ...# name = ...
Si la source de données était spécifiée par une fonction, le nom serait module:function
. S'il s'agit d'une classe, alors ce serait : module:class
. Le module doit pouvoir être trouvé à l'aide du chemin de recherche du module Python.
Comme pour register_data_source
, l'application à laquelle les données doivent être signalées et le nom sont facultatifs.
Paramètres
paramètres | Description |
---|---|
fonction ou classe | Requis. La source de données, qui est une fonction ou une classe à laquelle le décorateur |
objet d'application | Facultatif. L'objet application correspondant au compte de monitoring par New Relic auquel les données sont envoyées. Si la valeur par défaut est Dans les cas où vous avez besoin d'une source de données pour conserver des données distinctes pour chaque application de création de rapports, vous pouvez utiliser un modèle d'usine pour créer une instance distincte de la source de données pour chaque application. |
chaîne | Facultatif. Le nom de la source de données. Ceci est utilisé uniquement à des fins de logging et sera par défaut le nom fourni par la source de données elle-même. |
chaîne | Facultatif. Les paramètres à transmettre à une fabrique de sources de données. |
chaîne | Facultatif. Toutes les propriétés supplémentaires à transmettre à la fabrique de sources de données. |
Valeurs de retour
Aucun.
Exemples
Utilisation de la mémoire à partir de la source de données
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()