Configurar datos de incidentes para métricas de DORA

Las métricas de DORA no están disponibles en el sitio seleccionado () en este momento.

Las métricas de DORA están en vista previa.

Información general

Los eventos de despliegues fallidos, actualmente interpretados mediante eventos de incidentes, se utilizan para calcular el porcentaje de despliegues fallidos y el tiempo medio de recuperación (MTTR).

Selección y configuración de una fuente de datos de incidentes

PagerDuty es una plataforma de gestión de incidentes que dota a los equipos de TI de una visibilidad inmediata de los incidentes, permitiendo respuestas proactivas y eficaces para mantener la estabilidad operativa y la resiliencia.

Para integrar tu cuenta de PagerDuty con métricas de DORA:

  1. Ve a Integrations > Developer Tools (Integraciones > Herramientas de desarrollo) en PagerDuty y haz clic en Generic Webhooks (v3) (Webhooks genéricos (v3)).

  2. Haz clic en + New Webhook (+ Nuevo webhook) e introduce los siguientes datos:

    VariableDescription
    Webhook URLAdd https://webhook-intake./api/v2/webhook/.
    Scope TypeSelect Account to send incidents for all PagerDuty services in your account. Alternatively, you can send incidents for specific services or teams by selecting a different scope type.
    DescriptionA description helps distinguish the webhook. Add something like Datadog DORA Metrics integration.
    Event SubscriptionSelect the following events:
    -incident.acknowledged
    -incident.annotated
    -incident.custom_field_values.updated
    -incident.delegated
    -incident.escalated
    -incident.priority_updated
    -incident.reassigned
    -incident.reopened
    -incident.resolved
    -incident.triggered
    -incident.unacknowledged
    Custom HeadersClick Add custom header, enter DD-API-KEY as the name, and input your Datadog API key as the value.

    Optionally, you can add an environment to all of the PagerDuty incidents sent from the webhook by creating an additional custom header with the name dd_env and the desired environment as the value.
  3. Para guardar el webhook, haz clic en Add Webhook (Añadir webhook).

La gravedad del incidente en el producto métricas de DORA se basa en la prioridad del incidente en PagerDuty.

Nota: Al crear el webhook, se crea un nuevo secreto que se utiliza para firmar todas las cargas útiles del webhook. Este secreto no es necesario para que funcione la integración, ya que la autenticación se realiza mediante la clave de la API.

Asignación de servicios PagerDuty a servicios Datadog

Cuando se recibe un evento de incidente de un servicio PagerDuty específico, Datadog intenta recuperar el servicio Datadog y el equipo relacionado desde cualquier monitor de Datadog que lo active y desde el Catálogo de software.

El algoritmo de concordancia funciona en los siguientes pasos:

  1. Si el evento de incidente de PagerDuty se activó desde un monitor de Datadog:

    • Si el monitor está en modo de alerta múltiple, las métricas y los eventos de incidentes se emiten con los env, service y team del grupo alertado.
    • Si el monitor tiene etiquetas (tags) de env, service o team:
      • env: Si el monitor tiene una etiqueta única env, las métricas y los eventos de incidentes se emiten con el entorno.
      • service: Si el monitor tiene una o más etiquetas service, las métricas y los eventos de incidentes se emiten con los servicios proporcionados.
      • team: Si el monitor tiene una etiqueta única team, las métricas y los eventos de incidentes se emiten con el equipo.
  2. Si la URL de servicio del incidente coincide con la URL de servicio de PagerDuty para cualquier servicio del Catálogo de software:

    • Si un único servicio Datadog coincide, las métricas y los eventos de incidentes se emiten con el servicio y el equipo.
    • Si varios servicios Datadog coinciden, las métricas y los eventos de incidentes se emiten con el equipo.

    Para obtener más información sobre la configuración de la URL de servicio de PagerDuty para un servicio Datadog, consulta Uso de integraciones con el Catálogo de software.

  3. Si el nombre de servicio de PagerDuty del incidente coincide con un nombre de servicio del Catálogo de software, las métricas y los eventos de incidentes se emiten con el servicio y el equipo.

  4. Si el nombre de equipo de PagerDuty del incidente coincide con un nombre de equipo del Catálogo de software, las métricas y los eventos de incidentes se emiten con el equipo.

  5. Si el nombre de servicio de PagerDuty del incidente coincide con un nombre de equipo del Catálogo de software, las métricas y los eventos de incidentes se emiten con el equipo.

  6. Si no hubo coincidencias hasta este momento, las métricas y los eventos de incidentes se emiten con el servicio de PagerDuty y el equipo de PagerDuty proporcionados en el incidente.

Para enviar tus propios eventos de incidentes, utiliza la API de métricas de DORA. Los eventos de incidentes se utilizan para calcular el porcentaje de despliegues fallidos y el tiempo medio de recuperación.

Incluye el atributo finished_at en un evento de incidente para marcar que el incidente está resuelto. Puedes enviar eventos al inicio del incidente y después de la resolución del incidente. Los eventos incidentes coinciden con los atributos env, service y started_at.

Se requieren los siguientes atributos:

  • services o team (al menos uno debe estar presente)
  • started_at

Puedes añadir opcionalmente los siguientes atributos a los eventos de incidentes:

  • finished_at para incidentes resueltos. Este atributo es necesario para calcular el tiempo de recuperación del servicio.
  • id para identificar incidentes cuando se crean y resuelven. Este atributo es generado por el usuario; si no se proporciona, el endpoint devuelve un UUID generado por Datadog.
  • name para describir el incidente.
  • severity
  • env para filtrar tus métricas de DORA por entorno en la página de métricas de DORA.
  • repository_url
  • commit_sha

Para ver la especificación completa y ejemplos de código adicionales, consulta la documentación de referencia de la API de métricas de DORA.

Ejemplo (cURL) de API

Para la siguiente configuración, sustituye <DD_SITE> por :

curl -X POST "https://api.<DD_SITE>/api/v2/dora/incident" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -H "DD-API-KEY: ${DD_API_KEY}" \
  -d @- << EOF
  {
    "data": {
      "attributes": {
        "services": ["shopist"],
        "team": "shopist-devs",
        "started_at": 1693491974000000000,
        "finished_at": 1693491984000000000,
        "git": {
          "commit_sha": "66adc9350f2cc9b250b69abddab733dd55e1a588",
          "repository_url": "https://github.com/organization/example-repository"
        },
        "env": "prod",
        "name": "Web server is down failing all requests",
        "severity": "High"
      }
    }
  }
EOF

Cálculo del porcentaje de despliegues fallidos

El porcentaje de despliegues fallidos requiere tanto datos de despliegue como datos de incidentes.

El porcentaje de despliegues fallidos se calcula como el porcentaje de eventos de incidentes sobre el número total de despliegues. Datadog divide dora.incidents.count sobre dora.deployments.count para los mismos servicios o equipos asociados tanto a un fallo como a un evento de despliegue.

Cálculo del tiempo de recuperación

El tiempo de recuperación se calcula como la distribución de la duración de eventos de incidentes resueltos.

Las métricas de DORA generan la métrica dora.time_to_restore registrando las horas de inicio y fin de cada evento de incidente. Calcula el tiempo medio de recuperación (MTTR) como la media de estos puntos de datos dora.time_to_restore en un periodo de tiempo seleccionado.

Referencias adicionales