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:
Configura Datadog APM para enviar trazas a Datadog.
Para crear una aplicación para observar en Datadog:
En tu host o VM de Linux, crea una nueva aplicación de Python llamada hello.py. Por ejemplo, nano hello.py.
Añade el siguiente código a hello.py:
hello.py
fromflaskimportFlaskimportrandomapp=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('/')defindex():quote=random.choice(quotes)+"\n"returnquoteif__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:
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).
Reinicia tus servicios en tu host o VM.
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:
Crea un entorno virtual de Python en el directorio actual:
Establece el nombre de servicio y ejecuta hello.py:
exportDD_SERVICE=hello
python3 hello.py
Probar la aplicación
Prueba la aplicación para enviar trazas a Datadog:
En un nuevo símbolo del sistema, ejecuta lo siguiente:
curl http://0.0.0.0:5050/
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
En Datadog, ve a APM > Services (APM > Servicios). Deberías ver un servicio de Python llamado hello:
Selecciona el servicio para ver tus métricas de rendimiento, como la latencia, el rendimiento y las tasas de error.
Ve a APM > Traces (APM >Trazas). Deberías ver una traza para el servicio hello:
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:
Instala la biblioteca de rastreo de Datadog:
pip install ddtrace
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:
fromflaskimportFlaskimportrandomfromddtraceimporttracerapp=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('/')defindex():withtracer.trace("get_quote")asspan:quote=random.choice(quotes)+"\n"span.set_tag("quote",quote)returnquoteif__name__=='__main__':app.run(host='0.0.0.0',port=5050)
Ejecuta hello.py en el entorno virtual anterior:
ddtrace-run python hello.py
Ejecuta algunos comandos de curl en una línea de comandos independiente: