paint-brush
Cómo utilizar Datadog para la aplicación de métricas APMpor@socialdiscoverygroup
11,054 lecturas
11,054 lecturas

Cómo utilizar Datadog para la aplicación de métricas APM

por Social Discovery Group5m2023/11/07
Read on Terminal Reader

Demasiado Largo; Para Leer

El equipo de SDG comparte algunos trucos sobre cómo lograron construir un sistema de métricas y monitoreo de aplicaciones estable y redujeron el tiempo de detección de errores en sus productos con la ayuda de Datadog.
featured image - Cómo utilizar Datadog para la aplicación de métricas APM
Social Discovery Group HackerNoon profile picture

Las métricas y el monitoreo efectivos desempeñan un papel clave en el desarrollo de alta calidad, la corrección de errores y el manejo de solicitudes e incidentes de los usuarios. En Social Discovery Group, empleamos una amplia gama de herramientas para evaluar el rendimiento de nuestros productos.


En este artículo, compartiremos algunos trucos sobre cómo logramos construir un sistema de métricas y monitoreo de aplicaciones estable y reducir el tiempo de detección de errores en nuestros productos con la ayuda de Datadog.


Los productos ODS están ayudando a más de 250 millones de personas a conectarse y construir relaciones en todo el mundo, y nuestra base de usuarios crece constantemente. El factor principal de este éxito es nuestra capacidad para responder rápidamente a las necesidades de los usuarios. Tenemos mucha experiencia trabajando con varios sistemas de monitoreo, incluido Datadog. Este es el por qué:


  1. Actualmente, Datadog ofrece una variedad de opciones de integración con sistemas de diferentes niveles. Puede explorar estas capacidades aquí .


  2. Datadog proporciona documentación completa para configurar integraciones con varios servicios.


  3. Logramos construir sólidas relaciones de asociación.


Aquí, compartimos nuestra experiencia en la instalación y configuración de métricas de APM para aplicaciones dentro de nuestro clúster de Kubernetes para Datadog. El artículo no cubrirá la implementación de proyectos en AKS, el proceso de CI/CD y otros detalles de DevOps.


En cambio, nos centraremos en los puntos más finos de la configuración del monitoreo de Datadog para métricas de APM.


La pila de tecnología utilizada: Azure Services, Azure Kubernetes Service (AKS), ASP .Net Core 7, Datadog.


Para monitorear aplicaciones y servicios, utilizamos el agente Datadog implementado dentro del clúster a través de un gráfico Helm con parámetros adicionales del archivo value.yaml. En el archivo de configuración del agente principal, deberá habilitar el módulo DogStatsD y especificar el puerto (el valor predeterminado es 8125).


Para los datos enviados desde un host externo, el agente Datadog requiere la siguiente configuración: dogstatsd_non_local_traffic: true y apm_non_local_traffic: true. Aquí está el archivo value.yaml para uno de los clústeres, con algunas variables que se pasan en la etapa de implementación. La implementación se produce con Azure Devops.


 " datadog: apiKey: #{apiKey}# appKey: #{appKey}# clusterName: #{ClusterName}# kubeStateMetricsEnabled: true clusterChecks: enabled: true dogstatsd: useSocketVolume: false nonLocalTraffic: true collectEvents: false apm: portEnabled: true #тут обязательно включить env: - name: "DD_KUBELET_TLS_VERIFY" value: "false" systemProbe: collectDNSStats: false orchestratorExplorer: enabled: false clusterAgent: image: repository: public.ecr.aws/datadog/cluster-agent tag: #{tag}# admissionController: enabled: false agents: image: repository: public.ecr.aws/datadog/agent tag: #{tag}# doNotCheckTag: true clusterChecksRunner: image: repository: public.ecr.aws/datadog/agent tag: #{tag}# "


Luego, debe especificar la dirección del agente para transmitir métricas a Datadog en la configuración de la aplicación. Los paneles para el monitoreo de aplicaciones se basan en las métricas utilizadas internamente; tuvieron que ser creados de forma independiente.


Para configurar el monitoreo de los servicios ASP.Net, utilizamos la documentación oficial que se puede encontrar en el enlace .


Como el agente ya estaba configurado, uno de los métodos era agregar las líneas necesarias a la creación de la imagen y pasar variables en el sistema CI/CD: DD_ENV, DD_SERVICE, DD_AGENT_HOST, para especificar el entorno, el nombre del servicio y la dirección del agente, respectivamente. . También necesitamos agregar lo siguiente a los archivos acoplables de los servicios:


 " RUN TRACER_VERSION=$(curl -s \https://api.github.com/repos/DataDog/dd-trace-dotnet/releases/latest | grep tag_name | cut -d '"' -f 4 | cut -c2-) \ && curl -Lo /tmp/datadog-dotnet-apm.deb https://github.com/DataDog/dd-trace-dotnet/releases/download/v${TRACER_VERSION}/datadog-dotnet-apm_${TRACER_VERSION}_amd64.deb # Copy the tracer from build target COPY --from=build /tmp/datadog-dotnet-apm.deb /tmp/datadog-dotnet-apm.deb # Install the tracer RUN mkdir -p /opt/datadog \ && mkdir -p /var/log/datadog \ && dpkg -i /tmp/datadog-dotnet-apm.deb \ && rm /tmp/datadog-dotnet-apm.deb # Enable the tracer ENV CORECLR_ENABLE_PROFILING=1 ENV CORECLR_PROFILER={846F5F1C-F9AE-4B07-969E-05C26BC060D8} ENV CORECLR_PROFILER_PATH=/opt/datadog/Datadog.Trace.ClrProfiler.Native.so ENV DD_DOTNET_TRACER_HOME=/opt/datadog ENV DD_INTEGRATIONS=/opt/datadog/integrations.json "


Este método funciona, pero no parecía la solución más óptima. Decidimos ir un paso más allá y agregamos lo siguiente a las implementaciones de nuestros servicios:

 " metadata.labels: tags.datadoghq.com/env: feature tags.datadoghq.com/service: service_name tags.datadoghq.com/version: '1488' spec.template.metadata.labels: admission.datadoghq.com/config.mode: service admission.datadoghq.com/enabled: 'true' tags.datadoghq.com/env: feature tags.datadoghq.com/service: service_name tags.datadoghq.com/version: '1111' spec.template.metadata.annotations: admission.datadoghq.com/dotnet-lib.version: v2.38.0 spec.template.spec.containers.name.env: - name: DD_TRACE_AGENT_URL value: datadog-agent.monitoring - name: DD_TRACE_STARTUP_LOGS value: 'true' - name: DD_LOGS_INJECTION value: 'true' - name: DD_RUNTIME_METRICS_ENABLED value: 'true' - name: DD_PROFILING_ENABLED value: 'true' - name: DD_APPSEC_ENABLED value: 'true' "


Eso es lo que cambió en los agentes:


 " datadog: apm: socketEnabled: true portEnabled: true enabled: true clusterAgent: admissionController: enabled: true mutateUnlabelled: false providers: aks: enabled: true "


Después de todos estos pasos, los datos con métricas muy detalladas para todos los servicios comenzaron a fluir en Datadog en la sección APM -> Servicios, y los gráficos se mostraron automáticamente.


Panel de control de datos


Tuvimos que modificar la configuración de las anotaciones para el segundo método; No todo empezó a funcionar sin problemas de inmediato.


En cuanto al sistema de notificaciones, cabe mencionar que es fácil de usar e intuitivo en Datadog. Las notificaciones se crean en la sección "Monitores -> Administrar monitores".


Notificaciones en Datadog


Las mejoras que describimos anteriormente produjeron varios resultados valiosos. Ahora tenemos una comprensión más profunda de cómo opera nuestro sistema y se adapta a diversos cambios.


Además, hemos establecido un sistema estable de métricas y monitoreo de aplicaciones que opera independientemente de las compilaciones del servicio, lo que ayuda a reducir los tiempos de detección de errores.


Esto, a su vez, nos ha permitido optimizar nuestros servicios y mejorar la velocidad de desarrollo y la calidad general del sistema.