es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo habilitar StatsD en Spring Boot?

Tengo Spring Boot 2.5.2 y estoy tratando de enviar métricas de StatsD a Datadog. Sin embargo, eso no funcionó para mí. Así que escribí un solo script de Python para verificar si mi aplicación está enviando datos o no.

application.properties

management.metrics.export.statsd.enabled=true
management.metrics.export.statsd.host=localhost
management.metrics.export.statsd.port=8125

Script de Python

from socket import *
serverName = 'localhost'
serverPort = 12000
serverSocket = socket(AF_INET, SOCK_DGRAM)
serverSocket.bind((serverName, serverPort))
print("Server is ready.")

while True:
    msg, clientAddr = serverSocket.recvfrom(2048)
    word = msg.decode()
    print(word)
    msg = ''
    serverSocket.sendto(msg.encode(), clientAddr)

Probé este script con el siguiente comando:

$ echo "foo:1|c" | nc -u -w0 127.0.0.1 12000

y fue registrado por el script.

Cambié management.metrics.export.statsd.port a 12000, pero no se estaba enviando nada. ¿Hay alguna forma de diagnosticar esto?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Sí, hay algunas formas de diagnosticar este problema. Una forma es habilitar el registro de depuración para Micrometer agregando la siguiente línea a tu archivo application.properties:

    logging.level.io.micrometer.core=DEBUG
    

    Esto habilitará el registro de depuración para Micrometer, lo cual debería proporcionar más información sobre por qué no se están enviando las métricas. También puedes intentar usar la herramienta de diagnóstico de Datadog, la cual puedes encontrar aquí: https://docs.datadoghq.com/tracing/setup_overview/diagnostic_tool/. Esta herramienta puede ayudarte a diagnosticar problemas al enviar métricas a Datadog.

    Otra cosa que debes verificar es si existe un firewall que esté bloqueando el tráfico en el puerto 8125. Puedes usar el comando telnet para verificar si el puerto está abierto:

    telnet localhost 8125
    

    Si la conexión es exitosa, el puerto está abierto. Si no lo es, puede que haya un firewall bloqueando el tráfico.

    Finalmente, puedes intentar usar un analizador de redes, como Wireshark, para ver si los paquetes se están enviando desde tu aplicación a Datadog. Esto puede ayudarte a determinar si el problema está en tu aplicación o en la red.

Comments are closed.