Universal Service Monitoring detecta servicios mediante etiquetas (tags) de contenedor populares (como app, short_image y kube_deployment) y genera entradas en el Catálogo de servicios para esos servicios.
Puedes acceder a las métricas de solicitud, error y duración en Datadog tanto para el tráfico entrante como saliente en todos los servicios detectados con Universal Service Monitoring. Estas métricas de estado del servicio son útiles para crear alertas, rastrear despliegues y comenzar con objetivos de nivel de servicio (SLOs) para que puedas obtener una amplia visibilidad de todos los servicios en ejecución en tu infraestructura.
Esta guía describe cómo buscar métricas de USM como universal.http.* y utilizarlas en tus monitores, SLOs y dashboards.
Métricas de USM frente a métricas de APM
Nombre de la métrica
Unidades
Tipo
Descripción
universal.http.client
Segundos
Distribución
Latencia de las solicitudes salientes, recuentos, errores y tasas.
universal.http.client.hits
Resultados
Recuento
Número total de solicitudes salientes y errores.
universal.http.client.apdex
Puntuación
Gauge
La puntuación de Apdex de las solicitudes salientes para este servicio.
universal.http.server
Segundos
Distribución
Latencia de las solicitudes entrantes, recuentos, errores y tasas.
universal.http.server.hits
Resultados
Recuento
Número total de solicitudes entrantes y errores.
universal.http.server.Apdex
Puntuación
Gauge
La puntuación de Apdex para este servicio web.
A diferencia de métricas de APM, los errores están disponibles en la etiqueta error:true en lugar de en una métrica aparte.
Nota: Las métricas .hits tienen todas tus etiquetas de infraestructura y son la forma recomendada de consultar solicitudes y recuentos de errores. También puedes añadir etiquetas primarias secundarias a todas las métricas de USM.
Sintaxis de métrica
La sintaxis de consulta de métrica de USM difiere de la sintaxis de consulta de métrica de APM, que utiliza trace.*. Las métricas de USM se agrupan bajo un mismo nombre de métrica de distribución.
Por ejemplo:
APM
USM
trace.universal.http.client.hits{*}
count:universal.http.client{*}
trace.universal.http.client.errors
count:universal.http.client{error:true}
trace.universal.http.client.hits.by_http_status
count:universal.http.client{*} by http_status_family
pXX:trace.universal.http.client{*}
pXX:universal.http.client{*}
trace.universal.http.client.apdex{*}
universal.http.client.apdex{*}
Las mismas traducciones se aplican a la operación universal.http.server que captura el tráfico entrante. Para más información sobre las métricas de distribución, consulta Métricas basadas en DDSketch en APM.
Uso
Navega hasta Infrastructure > Universal Service Monitoring (Infraestructura > Universal Service Monitoring), filtra por tipo de telemetría de Universal Service Monitoring y haz clic en un servicio. La pestaña Performance (Rendimiento) muestra gráficos a nivel de servicio sobre accesos, latencia, peticiones, errores y más. También puedes acceder a estas métricas al crear un Monitor o un SLO, o consultando un dashboard en el Catálogo de servicios.
Crear un monitor
Puedes crear un Monitor de APM para activar una alerta cuando una métrica de USM como universal.http.client cruce un umbral o se desvíe de un patrón esperado.
Selecciona APM Metrics (Métricas de APM) y define un env de servicio o recurso y cualquier otra etiqueta primaria. Selecciona un servicio o recurso para monitorizar y define el intervalo de tiempo para que el monitor evalúe la consulta.
Selecciona Threshold Alert (Umbral de alerta) y selecciona una métrica de USM como Requests per Second para que se active el monitor. A continuación, define si el valor debe estar por encima o por debajo de los umbrales de alerta y advertencia. Introduce un valor para el umbral de alerta y, opcionalmente, para el umbral de aviso.
La sección de notificación contiene un mensaje rellenado previamente para el monitor. Personaliza el nombre y el mensaje de la alerta y define los permisos para este monitor.
Puedes crear un SLO por servicio para asegurarte de que cumple los objetivos establecidos por las métricas de USM y mejorando la disponibilidad a lo largo del tiempo. Datadog recomienda crear un SLO programáticamente para cubrir una gran cantidad de servicios.
En la columna SLOs, posa el cursor sobre un servicio y haz clic en + Create Availability SLO (+ Crear SLO de disponibilidad) o + Create Latency SLO (+ Crear SLO de latencia).
Opcionalmente, para crear un SLO manualmente con métricas de USM:
Selecciona Metric Based (Basado en métrica) y crea dos consultas en la sección Good events (numerator) (Eventos correctos (numerador)):
Consulta A: introduce una métrica de USM como universal.http.server, filtra por un servicio específico añadiendo etiquetas service y env primarias en el campo from, y selecciona count en el campo as.
Consulta A: introduce una métrica de USM como universal.http.server, filtra por un servicio específico añadiendo etiquetas service y env primarias, además de una etiqueta error:true en el campo from, y selecciona count en el campo as.
Haz clic en + Add Formula (Añadir fórmula) e introduce a-b.
En la sección Total events (denominator) (Eventos totales (denominador)), introduce una métrica de USM como universal.http.server, filtra por un servicio específico añadiendo etiquetasservice y env primarias en el campo from, y selecciona count en el campo as.
Haz clic en + New Target (+ Nuevo objetivo) para crear un umbral objetivo con la siguiente configuración:
El intervalo de tiempo es 7 Days, el umbral objetivo es 95% y el umbral de alerta es 99.5%. Datadog recomienda establecer el mismo umbral objetivo en todos los intervalos de tiempo.
Introduce un nombre y una descripción para este SLO. Establece las etiquetas env y service primarias, además de la etiqueta team.
Haz clic en Save and Set Alert (Guardar y establecer alerta).
El Catálogo de servicios identifica los dashboards definidos en tu archivo de definición de servicio y los enumera en la pestaña Dashboards. Haz clic en Manage dashboards (Administrar dashboards) para acceder y editar la definición de servicio directamente en GitHub.