• EnglishEspañol日本語한국어Português
  • Inicia sesiónComenzar ahora

Te ofrecemos esta traducción automática para facilitar la lectura.

In the event of any inconsistency between the English version and the translated version, the English versionwill take priority. Please visit this page for more information.

Crea una propuesta

data_source_factory (API del agente Python)

Sintaxis

data_source_factory(name=None, **properties)

Envuelve una fuente de datos definida como fábrica.

Descripción

Las API de fuente de datos proporcionan una manera de generar datos de intervalo de tiempo de métrica utilizando una APIde estilo pull en lugar de la API de estilo push implementada por record_custom_metric. Para obtener más información sobre por qué y cómo utilizar fuentes de datos para métrica personalizada, consulte fuentes de datos de métrica personalizada.

El decorador data_source_factory envuelve una fuente de datos definida como una fábrica. El decorador se puede aplicar a una clase o función. El constructor de clase o función debe aceptar argumentos de settings (ajustes de configuración para la fuente de datos) y environ (información sobre el contexto en el que se utiliza la fuente de datos).

El objeto resultante debe ser un invocable que devuelva directamente un iterable/generador con la métrica para cada muestra.

Parámetros

Parámetro

Descripción

name

cadena

Opcional. El nombre de la fuente de datos. Esto se utiliza únicamente con fines de registro. Si no se proporciona, el valor predeterminado es el nombre invocable derivado de la función decorada.

properties

diccionario

Opcional. Cualquier propiedad adicional para pasar a la fábrica de fuentes de datos.

Los campos posibles para un diccionario son:

  • count
  • total
  • min
  • max
  • sum_of_squares

Valores de retorno

Devuelve una función.

Ejemplos

ejemplo de data_source_factory

Un ejemplo:

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 © 2024 New Relic Inc.

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