Empezando con el rastreo de APM

Información general

Datadog Application Performance Monitoring (APM) proporciona una amplia visibilidad de tus aplicaciones, lo que te permite identificar cuellos de botella en el rendimiento, solucionar problemas y optimizar tus servicios.

Esta guía muestra cómo empezar a utilizar APM y enviar tu primer traza (trace) a Datadog:

  1. Configura Datadog APM para enviar trazas a Datadog.
  2. Ejecuta tu aplicación para generar datos.
  3. Explora los datos recopilados en Datadog.

Requisitos previos

Para completar esta guía, necesitas lo siguiente:

  1. Crea una cuenta de Datadog si aún no lo has hecho.
  2. Busca o crea una clave de Datadog API.
  3. Inicia un host o VM de Linux.

Crear una aplicación

Para crear una aplicación para observar en Datadog:

  1. En tu host o VM de Linux, crea una nueva aplicación de Python llamada hello.py. Por ejemplo, nano hello.py.

  2. Añade el siguiente código a hello.py:

    hello.py

      from flask import Flask
      import random
    
      app = Flask(__name__)
    
      quotes = [
          "Strive not to be a success, but rather to be of value. - Albert Einstein",
          "Believe you can and you're halfway there. - Theodore Roosevelt",
          "The future belongs to those who believe in the beauty of their dreams. - Eleanor Roosevelt"
      ]
    
      @app.route('/')
      def index():
          quote = random.choice(quotes)+"\n"
          return quote
    
      if __name__ == '__main__':
          app.run(host='0.0.0.0', port=5050)
      

Configurar Datadog APM

Para configurar Datadog APM sin necesidad de modificar el código de tu aplicación o el proceso de despliegue, utiliza instrumentación de APM en un solo paso:

Nota: La instrumentación de APM en un solo paso está en fase beta. Como alternativa, puedes configurar APM utilizando bibliotecas de rastreo de Datadog.
  1. Ejecuta el comando de instalación:

     DD_API_KEY=<YOUR_DD_API_KEY> DD_SITE="<YOUR_DD_SITE>" DD_APM_INSTRUMENTATION_ENABLED=host DD_APM_INSTRUMENTATION_LIBRARIES=python:2 DD_ENV=<AGENT_ENV> bash -c "$(curl -L https://install.datadoghq.com/scripts/install_script_agent7.sh)"
    

    Sustituye <YOUR_DD_API_KEY> por tu clave de API de Datadog, <YOUR_DD_SITE> por tu sitio de Datadog y <AGENT_ENV> por el entorno en el que está instalado tu Agent (por ejemplo, development).

  2. Reinicia tus servicios en tu host o VM.

  3. Comprueba que Agent esté en funcionamiento:

    sudo datadog-agent status
    

Este enfoque instala automáticamente el Datadog Agent, habilita Datadog APM e instrumenta tu aplicación en el tiempo de ejecución.

Ejecutar la aplicación

Cuando configures Datadog APM con la instrumentación de un solo paso, Datadog instrumentará automáticamente tu aplicación en el tiempo de ejecución.

Para ejecutar hello.py:

  1. Crea un entorno virtual de Python en el directorio actual:

    python3 -m venv ./venv
    
  2. Activa la página de entorno virtual venv:

    source ./venv/bin/activate
    
  3. Instala pip y flask:

    sudo apt-get install python3-pip
    pip install flask
    
  4. Establece el nombre de servicio y ejecuta hello.py:

    export DD_SERVICE=hello
    python3 hello.py
    

Probar la aplicación

Prueba la aplicación para enviar trazas a Datadog:

  1. En un nuevo símbolo del sistema, ejecuta lo siguiente:

    curl http://0.0.0.0:5050/
    
  2. Confirma que se devuelve una cita aleatoria.

    Believe you can and you're halfway there. - Theodore Roosevelt
    

Cada vez que se ejecuta el comando curl, se envía una nueva traza a Datadog.

Explorar trazas en Datadog

  1. En Datadog, ve a APM > Services (APM > Servicios). Deberías ver un servicio de Python llamado hello:

    El Catálogo de servicios muestra el nuevo servicio de Python.
  2. Selecciona el servicio para ver tus métricas de rendimiento, como la latencia, el rendimiento y las tasas de error.

  3. Ve a APM > Traces (APM >Trazas). Deberías ver una traza para el servicio hello:

    El Trace Explorer muestra la traza del servicio hello.
  4. Selecciona una traza para ver sus detalles, incluida la gráfica de llamas, que ayuda a identificar los cuellos de botella en el rendimiento.

Configuración avanzada de APM

Hasta este punto, Datadog ha instrumentado automáticamente la aplicación hello.py mediante la instrumentación de un solo paso. Este enfoque es recomendado si deseas capturar trazas esenciales a través de bibliotecas y lenguajes comunes sin tocar código o instalar manualmente bibliotecas.

Sin embargo, si necesitas recopilar trazas desde código personalizado o requieres un control más preciso, puedes añadir Instrumentación personalizada.

Para ilustrar esto, importarás la biblioteca de rastreo de Datadog Python en hello.py y crearás un tramo (span) y una etiqueta de tramo personalizados.

Para añadir instrumentación personalizada:

  1. Instala la biblioteca de rastreo de Datadog:

    pip install ddtrace
    
  2. Añade las líneas resaltadas al código en hello.py para crear una etiqueta de tramo personalizada get_quote y una etiqueta de tramo personalizada quote:

     from flask import Flask
     import random
     from ddtrace import tracer
    
     app = Flask(__name__)
    
     quotes = [
         "Strive not to be a success, but rather to be of value. - Albert Einstein",
         "Believe you can and you're halfway there. - Theodore Roosevelt",
         "The future belongs to those who believe in the beauty of their dreams. - Eleanor Roosevelt"
     ]
    
     @app.route('/')
     def index():
         with tracer.trace("get_quote") as span:
             quote = random.choice(quotes)+"\n"
             span.set_tag("quote", quote)
             return quote
    
     if __name__ == '__main__':
         app.run(host='0.0.0.0', port=5050)
  3. Ejecuta hello.py en el entorno virtual anterior:

    ddtrace-run python hello.py
    
  4. Ejecuta algunos comandos de curl en una línea de comandos independiente:

    curl http://0.0.0.0:5050/
    
  5. En Datadog, ve a APM > *Traces (APM > Trazas).

  6. Selecciona la traza hello.

  7. Busca el nuevo tramo get_quote personalizado en la gráfica de llamas y pasa el ratón sobre él:

    El tramo personalizado get_quote muestra la gráfica de llamas. Si pasas el ratón sobre él, se muestra la etiqueta de tramo quote.
  8. Observa que la etiqueta de tramo personalizada quote aparece en la pestaña Info (Información).

Referencias adicionales