• /
  • EnglishEspañol日本語한국어Português
  • EntrarComeçar agora

Esta tradução de máquina é fornecida para sua comodidade.

Caso haja alguma divergência entre a versão em inglês e a traduzida, a versão em inglês prevalece. Acesse esta página para mais informações.

Criar um problema

data_source_factory (API do agente Python)

Sintaxe

data_source_factory(name=None, **properties)

Agrupa uma fonte de dados definida como uma fábrica.

Descrição

As APIs de fonte de dados fornecem uma maneira de gerar dados de métrica de fração de tempo usando uma API de estilo pull em vez da API de estilo push implementada por record_custom_metric. Para mais informações sobre por que e como usar fontes de dados para métrica personalizada, consulte fontes de dados métrica personalizadas.

O decorador data_source_factory encapsula uma fonte de dados definida como uma fábrica. O decorador pode ser aplicado a uma classe ou função. O construtor ou função da classe deve aceitar argumentos de settings (definições de configuração para a fonte de dados) e environ (informações sobre o contexto no qual a fonte de dados está sendo usada).

O objeto resultante deve ser um chamável que retorne diretamente um iterável/gerador com a métrica para cada amostra.

Parâmetro

Parâmetro

Descrição

name

corda

Opcional. O nome da fonte de dados. Isso é usado apenas para fins de registro. Se não for fornecido, o padrão é o nome que pode ser chamado derivado da função decorada.

properties

dicionário

Opcional. Quaisquer propriedades adicionais a serem passadas para a fábrica de fontes de dados.

Os campos possíveis para um dicionário são:

  • count
  • total
  • min
  • max
  • sum_of_squares

Valores de retorno

Retorna uma função.

Exemplos

exemplo data_source_factory

Um exemplo:

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.