Sintaxe
newrelic.agent.register_data_source(source, application=None, name=None, settings=None, **properties)
Cadastra uma fonte de dados para geração de dados métricos personalizados.
Descrição
Esta chamada registra uma fonte de dados a ser pesquisada na conclusão de cada ciclo de colheita para gerar dados personalizados de métrica de fração de tempo. Para mais informações sobre por que e como usar fontes de dados para métrica personalizada, consulte fontes de dados métrica personalizadas.
Dica
Na maioria dos casos, você não precisará usar nenhum argumento opcional, exceto name
.
As métricas retornadas por uma fonte de dados podem ser uma tupla (name, value)
simples onde o valor é numérico ou float, ou o valor pode ser um dicionário que corresponde a uma amostra de dados já agregada para uma métrica específica.
Ao retornar um dicionário como valor da métrica, os campos que podem ser fornecidos são:
count
total
min
max
sum_of_squares
Para mais informações sobre esses campos e algumas dicas gerais de uso, veja Pré-métrica agregada.
Dica
Você também pode obter o mesmo resultado usando a configuração do agente, que não exige alteração do código. Para adicionar a fonte de dados dessa forma, adicione uma seção no arquivo de configuração com o prefixo data-source:
, seguido por um valor exclusivo para distinguir a seção de outra fonte de dados se mais de uma for especificada. Aqui está um exemplo:
[data-source:memory-usage]enabled = truefunction = samplers:memory_metrics# application = ...# name = ...[data-source:cpu-usage]enabled = truefunction = samplers:CPUMetricsDataSource# application = ...# name = ...
Se a fonte de dados fosse especificada por uma função, o nome seria module:function
. Se fosse uma classe, seria: module:class
. O módulo deve poder ser encontrado usando o caminho de pesquisa do módulo Python.
Assim como acontece com register_data_source
, o aplicativo para o qual relatar dados e o nome são opcionais.
Parâmetro
Parâmetro | Descrição |
---|---|
função ou classe | Obrigatório. A fonte de dados, que é uma função ou classe que teve o decorador |
objeto de aplicativo | Opcional. O objeto de aplicativo correspondente à conta do monitor New Relic para a qual relatar dados. Se definido como o padrão Nos casos em que você precisa de uma fonte de dados para reter dados distintos para cada aplicativo de relatório, você pode usar um padrão de fábrica para criar uma instância separada da fonte de dados para cada aplicativo. |
corda | Opcional. O nome da fonte de dados. Isso é usado apenas para fins de registro e será padronizado com o nome fornecido pela própria fonte de dados. |
corda | Opcional. As configurações a serem passadas para uma fábrica de origem de dados. |
corda | Opcional. Quaisquer propriedades adicionais a serem passadas para a fábrica de fontes de dados. |
Valores de retorno
Nenhum.
Exemplos
Uso de memória da fonte de dados
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()