• 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

Activar aviso de aplicación (Python)

Problema

Importante

Tenga en cuenta que esto sólo es un problema si no se informan datos.

Estás utilizando el último agente de Python y ves una entrada log con un mensaje de advertencia como:

Attempt to activate application in a process different to where the agent harvest thread was started.

O:

Attempt to reactivate application or record transactions in a process different to where the agent was already registered.

La aplicación se muestra como informes en la UI de New Relic, pero no se informa ningún dato a New Relic.

Solución

Para resolver este problema con su aplicación:

  1. Mueva todas las llamadas a newrelic.agent.register_application o newrelic.agent.application dentro de funciones dentro de una marca __name__ == __main__ .

  2. Si no está seguro de dónde se producen las llamadas a newrelic.agent.register_application o newrelic.agent.application , utilice el registro de depuración del agente para buscar una entrada que contenga:

    newrelic.core.agent DEBUG - Application was activated from:
  3. Utilice el rastreo de la entrada de la llamada que activó al agente. Consulte los siguientes cuadros, que se consideran normales:

    File "newrelic/api/transaction.py", line x, in __init__
    application.activate()
    File "newrelic/hooks/application_celery.py", line x, in process_initializer
    application_instance().activate()
  4. Si la activación se produce desde una ubicación diferente, corrija este problema siguiendo este ejemplo:

    Before:

    import newrelic.agent
    # This will cause the agent to activate whenever custom_event is imported
    app = newrelic.agent.application()
    def custom_event():
    newrelic.agent.record_custom_event('CustomEvent', {}, application=app)

    After:

    import newrelic.agent
    def custom_event():
    app = newrelic.agent.application()
    newrelic.agent.record_custom_event('CustomEvent', {}, application=app)

Para obtener otros consejos cuando no aparecen datos, consulte la documentación de resolución de problemas de Python.

Causa

Hay dos causas principales de este problema. El primero es crear una instancia de aplicación varias veces o crear una instancia de aplicación antes de la bifurcación.

  1. Esto suele deberse a una llamada a newrelic.agent.register_application o newrelic.agent.application que se produce en el momento de la importación.

    Example:

    import newrelic.agent
    # This will cause the agent to activate whenever custom_event is imported
    app = newrelic.agent.application()
    def custom_event():
    newrelic.agent.record_custom_event('CustomEvent', {}, application=app)
  2. Este problema también puede ocurrir cuando se monitorean servicios como el celery donde se procesa un proceso principal de trabajo de lanzamiento. Ocurre cuando se crea una instancia de aplicación de agente en el proceso principal antes de bifurcar los procesos de trabajo. Dado que el agente se lanza en el proceso principal, no se recopilan datos en el proceso secundario.

Copyright © 2024 New Relic Inc.

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