Este producto no es compatible con el sitio Datadog seleccionado. ().

Descripción general

GitLab es una plataforma DevOps que automatiza el ciclo de vida de desarrollo de software con funciones integradas de CI/CD, lo que permite el despliegue automatizado y continuo de aplicaciones con controles de seguridad integrados.

Configure CI Visibility para GitLab a fin de recopilar datos sobre las ejecuciones de sus pipelines, analizar cuellos de botella en el rendimiento, solucionar problemas operativos y optimizar sus flujos de trabajo de despliegue.

Compatibilidad

Pipeline VisibilityPlataformaDefinición
Pipelines en ejecuciónPipelines en ejecuciónConsulte las ejecuciones de pipelines que se están ejecutando. Los pipelines en cola o en espera se muestran con el estado “Running” en Datadog.
Trabajos en ejecuciónTrabajos en ejecuciónConsulte las ejecuciones de trabajos que se están ejecutando actualmente.
Análisis de fallos de trabajos de CIAnálisis de fallos de trabajos de CIUtiliza modelos LLM en los registros relevantes para analizar la causa raíz de los trabajos de CI fallidos.
Filtrar trabajos de CI en la ruta críticaFiltrar trabajos de CI en la ruta críticaFiltre por trabajos en la ruta crítica.
Reintentos parcialesPipelines parcialesConsulte las ejecuciones de pipelines reintentadas parcialmente.
Reintentos automáticos de trabajosReintentos automáticos de trabajosDatadog reintenta los trabajos fallidos clasificados como transitorios por su modelo de error de IA.
Pasos manualesPasos manualesConsulte los pipelines activados manualmente.
Tiempo de colaTiempo de colaConsulte la cantidad de tiempo que los trabajos de pipeline permanecen en la cola antes de procesarse.
Correlación de registrosCorrelación de registrosCorrelacione los tramos de pipeline con los registros y habilite la recopilación de registros de trabajos.
Correlación de métricas de infraestructuraCorrelación de métricas de infraestructuraCorrelacione los trabajos con las métricas de servidor de infraestructura para los ejecutores de GitLab autohospedados.
Etiquetas personalizadas predefinidasEtiquetas personalizadas predefinidasEstablezca etiquetas personalizadas para todos los tramos de pipeline, etapas y trabajos generados.
Etiquetas personalizadas y medidas en tiempo de ejecuciónEtiquetas y medidas personalizadas en tiempo de ejecuciónConfigure etiquetas y medidas personalizadas en tiempo de ejecución.
ParámetrosParámetrosConfigure parámetros personalizados env cuando se active un pipeline.service
Motivos de falla de la canalizaciónMotivos de falla de la canalizaciónIdentifique los motivos de falla del pipeline a partir de los mensajes de error.
Tiempo de espera de aprobaciónTiempo de espera de aprobaciónConsulte la cantidad de tiempo que los trabajos y los pipelines esperan para aprobaciones manuales.
Tiempo de ejecuciónTiempo de ejecuciónConsulte la cantidad de tiempo que los pipelines han estado ejecutando trabajos. Gitlab se refiere a esta métrica como duration. La duración en Gitlab y el tiempo de ejecución pueden mostrar valores diferentes. Gitlab no toma en consideración los trabajos que fallaron debido a ciertos tipos de fallas (como fallas del sistema del ejecutor).
Rangos personalizadosRangos personalizadosConfigure rangos personalizados para sus canalizaciones.

Se admiten las siguientes versiones de GitLab:

  • GitLab.com (SaaS)
  • GitLab >= 14.1 (autohospedado)
  • GitLab >= 13.7.0 (autohospedado) con la datadog_ci_integration marca de función habilitada

Terminología

Esta tabla muestra el mapeo de conceptos entre Datadog CI Visibility y GitLab:

DatadogGitLab
PipelinePipeline
EtapaEtapa
TrabajoTrabajo
No disponible en DatadogScript

Configurar la integración de Datadog

Configure la integración en un proyecto o grupo yendo a Settings > Integrations > Datadog para cada proyecto o grupo que desee instrumentar.

Complete los ajustes de configuración de la integración:

Active
Habilita la integración.
Datadog site
Especifique a qué sitio de Datadog enviar los datos.
Predeterminado: datadoghq.com
Sitio seleccionado:
API URL (opcional)
Permite anular la URL de la API utilizada para enviar datos directamente; solo se usa en escenarios avanzados.
Predeterminado: (vacío, sin anulación)
API key
Especifique qué clave de Datadog API usar al enviar datos.
Enable CI Visibility
Controle la habilitación de las funciones de CI Visibility, incluyendo el seguimiento de pipelines, el cálculo de rutas críticas y el monitoreo del rendimiento. Asegúrese de que esta casilla esté marcada para activar estas capacidades.
Service (opcional)
Especifique qué nombre de servicio adjuntar a cada tramo generado por la integración. Úselo para diferenciar entre instancias de GitLab.
Predeterminado: gitlab-ci
Env (opcional)
Especifique qué entorno (etiqueta env) adjuntar a cada tramo generado por la integración. Úselo para diferenciar entre grupos de instancias de GitLab (por ejemplo, staging o producción).
Predeterminado: none
Tags (opcional)
Especifique cualquier etiqueta personalizada para adjuntar a cada tramo generado por la integración. Proporcione una etiqueta por línea en el formato: key:value.
Predeterminado: (vacío, sin etiquetas adicionales)
Nota: Disponible solo en GitLab.com y GitLab >= 14.8 autogestionado.

Pruebe la integración con el botón Test settings (solo disponible al configurar la integración en un proyecto). Después de que sea exitoso, haga clic en Save changes para finalizar la configuración de la integración. Si el botón falla, haga clic en Save changes y verifique que los primeros webhooks enviados sean exitosos consultando el historial en la sección "Eventos recientes" a continuación.

Configure la integración en un proyecto o grupo yendo a Settings > Integrations > Datadog para cada proyecto o grupo que desee instrumentar. Active la integración a nivel de instancia de GitLab yendo a Admin > Settings > Integrations > Datadog.

Complete los ajustes de configuración de la integración:

Active
Habilita la integración.
Datadog site
Especifique a qué sitio de Datadog enviar los datos.
Predeterminado: datadoghq.com
Sitio seleccionado:
API URL (opcional)
Permite anular la URL de la API utilizada para enviar datos directamente; solo se usa en escenarios avanzados.
Predeterminado: (vacío, sin anulación)
API key
Especifique qué clave de Datadog API usar al enviar datos.
Enable CI Visibility
Controle la habilitación de las funciones de CI Visibility, incluyendo el seguimiento de pipelines, el cálculo de rutas críticas y el monitoreo del rendimiento. Asegúrese de que esta casilla esté marcada para activar estas capacidades. Solo está presente a partir de GitLab 17.7 y no es necesario en versiones anteriores.
Service (opcional)
Especifique qué nombre de servicio adjuntar a cada tramo generado por la integración. Úselo para diferenciar entre instancias de GitLab.
Predeterminado: gitlab-ci
Env (opcional)
Especifique qué entorno (etiqueta env) adjuntar a cada tramo generado por la integración. Úselo para diferenciar entre grupos de instancias de GitLab (por ejemplo, staging o producción).
Predeterminado: none
Tags (opcional)
Especifique cualquier etiqueta personalizada para adjuntar a cada tramo generado por la integración. Proporcione una etiqueta por línea en el formato: key:value.
Predeterminado: (vacío, sin etiquetas adicionales)
Nota: Disponible solo en GitLab.com y GitLab >= 14.8 autogestionado.

Pruebe la integración con el botón Test settings (solo disponible al configurar la integración en un proyecto). Después de que sea exitoso, haga clic en Save changes para finalizar la configuración de la integración. Si el botón falla, haga clic en Save changes y verifique que los primeros webhooks enviados sean exitosos consultando el historial en la sección "Eventos recientes" a continuación.

Habilite el datadog_ci_integration feature flag para activar la integración.

Ejecute uno de los siguientes comandos, que utilizan el Rails Runner de GitLab, dependiendo de su tipo de instalación:

Desde Instalaciones Omnibus:

sudo gitlab-rails runner "Feature.enable(:datadog_ci_integration)"

Desde Instalaciones desde código fuente:

sudo -u git -H bundle exec rails runner \
  -e production \
  "Feature.enable(:datadog_ci_integration)"

Desde Instalaciones de Kubernetes:

kubectl exec -it <task-runner-pod-name> -- \
  /srv/gitlab/bin/rails runner "Feature.enable(:datadog_ci_integration)"

Luego, configure la integración en un proyecto yendo a Settings > Integrations > Datadog para cada proyecto que quiera instrumentar.

Debido a un error en las primeras versiones de GitLab, la integración de Datadog no se puede habilitar a nivel de grupo o instancia en versiones de GitLab < 14.1, incluso si la opción está disponible en la interfaz de usuario de GitLab.

Complete los ajustes de configuración de la integración:

Active
Habilita la integración.
Datadog site
Especifique a qué sitio de Datadog enviar los datos.
Predeterminado: datadoghq.com
Sitio seleccionado:
API URL (opcional)
Permite anular la URL de la API utilizada para enviar datos directamente; solo se usa en escenarios avanzados.
Predeterminado: (vacío, sin anulación)
API key
Especifique qué clave de Datadog API usar al enviar datos.
Service (opcional)
Especifique qué nombre de servicio adjuntar a cada tramo generado por la integración. Úselo para diferenciar entre instancias de GitLab.
Predeterminado: gitlab-ci
Env (opcional)
Especifique qué entorno (etiqueta env) adjuntar a cada tramo generado por la integración. Úselo para diferenciar entre grupos de instancias de GitLab (por ejemplo, staging o producción).
Predeterminado: none
Tags (opcional)
Especifique cualquier etiqueta personalizada para adjuntar a cada tramo generado por la integración. Proporcione una etiqueta por línea en el formato: key:value.
Predeterminado: (vacío, sin etiquetas adicionales)
Nota: Disponible solo en GitLab.com y GitLab >= 14.8 autogestionado.

Pruebe la integración con el botón Test settings (solo disponible al configurar la integración en un proyecto). Después de que sea exitoso, haga clic en Save changes para finalizar la configuración de la integración. Si el botón falla, haga clic en Save changes y verifique que los primeros webhooks enviados sean exitosos consultando el historial en la sección "Eventos recientes" a continuación.

El soporte directo con webhooks no está en desarrollo. Podrían ocurrir problemas inesperados. Datadog recomienda que actualice GitLab en su lugar.

Para versiones anteriores de GitLab, puede usar webhooks para enviar datos de pipeline a Datadog.

Vaya a Settings > Webhooks en su repositorio (o configuración de instancia de GitLab) y agregue un nuevo webhook:

  • URL: https://webhook-intake./api/v2/webhook/?dd-api-key=<API_KEY> donde <API_KEY> es su clave de Datadog API.
  • Secret Token: Deje este campo vacío.
  • Trigger: Seleccione Job events y Pipeline events.

Para establecer parámetros personalizados de env o service, agregue más parámetros de consulta en la URL de los webhooks. Por ejemplo, &env=<YOUR_ENV>&service=<YOUR_SERVICE_NAME>.

Establezca etiquetas personalizadas

Para establecer etiquetas personalizadas en todos los tramos de pipeline y trabajo generados por la integración, agregue un parámetro de consulta codificado en URL tags con pares key:value separados por comas a la URL.

Si un par clave:valor contiene comas, rodéelo con comillas. Por ejemplo, para agregar key1:value1,"key2: value with , comma",key3:value3, se tendría que añadir la siguiente cadena a la Webhook URL: ?tags=key1%3Avalue1%2C%22key2%3A+value+with+%2C+comma%22%2Ckey3%3Avalue3.

Configuración avanzada

Establezca un nombre de pipeline

De forma predeterminada, Datadog utiliza la ruta de su proyecto de GitLab como nombre del pipeline. Como resultado, cada pipeline descendente (secundaria) activada con la palabra clave trigger desde el mismo proyecto aparece con el mismo nombre en Datadog.

Para darle a un pipeline un nombre más significativo, utilice la palabra clave workflow:name de GitLab en su .gitlab-ci.yml. Por ejemplo, para nombrar un pipeline descendente según el trabajo que lo activó:

trigger-job:
  trigger:
    include:
      - local: path/to/child-pipeline.yml
  variables:
    CHILD_PIPELINE_NAME: $CI_JOB_NAME

En el .gitlab-ci.yml del pipeline secundario (o un archivo que incluya), utilice la variable reenviada para establecer el nombre del pipeline:

workflow:
  name: '$CHILD_PIPELINE_NAME'

Nota: El ejemplo anterior utiliza la expansión de variables en el nombre del pipeline, lo cual requiere GitLab 16.3 o posterior. workflow:name en sí está disponible a partir de GitLab 15.11 para nombres de cadena simples. El nombre del pipeline solo es visible en Datadog a partir de GitLab 16.1, cuando se agregó a la carga útil del webhook del pipeline.

Establezca etiquetas personalizadas

Puede establecer etiquetas personalizadas para todos los tramos de pipeline y trabajo de sus proyectos de GitLab para mejorar la trazabilidad. Para obtener más información, consulte Custom Tags and Measures.

Integre con Datadog Teams

Para mostrar y filtrar los equipos asociados con sus canalizaciones, agregue team:<your-team> como una etiqueta personalizada. El nombre de la etiqueta personalizada debe coincidir exactamente con el identificador de equipo de Datadog Teams.

Correlacione métricas de infraestructura con trabajos

Si utiliza ejecutores de GitLab autohospedados, puede correlacionar los trabajos con la infraestructura que los ejecuta.

La correlación de infraestructura de Datadog es posible utilizando diferentes métodos:

El ejecutor de GitLab debe tener una etiqueta con el formato host:<hostname>. Las etiquetas se pueden agregar al registrar un nuevo ejecutor. Como resultado, este método solo está disponible cuando el ejecutor está ejecutando el trabajo directamente.

Esto excluye a los ejecutores que escalan automáticamente la infraestructura para ejecutar el trabajo (como los ejecutores de Kubernetes, Docker Autoscaler o Instancia), ya que no es posible agregar etiquetas dinámicamente para esos ejecutores.

Para ejecutores existentes:

  • GitLab >= 15.8: Agregue etiquetas a través de la interfaz de usuario yendo a Settings > CI/CD > Runners y editando el ejecutor correspondiente.

  • GitLab < 15.8: Agregue etiquetas actualizando el config.toml del ejecutor. O agregue etiquetas a través de la interfaz de usuario yendo a Settings > CI/CD > Runners y editando el ejecutor correspondiente.

Después de estos pasos, CI Visibility agrega el nombre de host a cada trabajo. Para ver las métricas, haga clic en un tramo de trabajo en la vista de traza. En el panel, aparece una nueva pestaña llamada Infrastructure que contiene las métricas del servidor.

CI Visibility admite métricas de infraestructura para ejecutores de “Docker Autoscaler” mediante correlación basada en registros. Para habilitar esto, asegúrese de que los registros de trabajo de GitLab estén indexados para que Datadog pueda vincular los trabajos a los hosts, y que los registros incluyan mensajes en el formato Instance <hostname> connected. Los registros de trabajo de GitLab incluyen las etiquetas datadog.product:cipipeline y source:gitlab, que puede usar en los filtros de Log Indexes. Los usuarios también necesitan acceso de lectura a registros para ver los datos de infraestructura en este escenario. Para obtener más información, consulte la guía de correlación de métricas de infraestructura con trabajos de GitLab.

CI Visibility admite métricas de infraestructura para ejecutores de “Instance” mediante correlación basada en registros. Para habilitar esto, asegúrese de que los registros de trabajo de GitLab estén indexados para que Datadog pueda vincular los trabajos a los hosts, y que los registros incluyan mensajes en el formato Instance <hostname> connected. Los registros de trabajo de GitLab incluyen las etiquetas datadog.product:cipipeline y source:gitlab, que puede usar en los filtros de Log Indexes. Los usuarios también necesitan acceso de lectura a registros para ver la información de infraestructura en este escenario. Para obtener más información, consulte la guía de correlación de métricas de infraestructura con trabajos de GitLab.

CI Visibility admite métricas de infraestructura para el ejecutor de Kubernetes. Para esto, es necesario que el Datadog Agent monitoree la infraestructura de GitLab en Kubernetes. Consulte Instalar el Datadog Agent en Kubernetes para instalar el Datadog Agent en un clúster de Kubernetes.

Debido a limitaciones en el Datadog Agent, es posible que los trabajos más cortos que el intervalo mínimo de recopilación del Agente de Datadog no siempre muestren métricas de correlación de infraestructura. Para ajustar este valor, establezca min_collection_interval en menos de 15 segundos en su archivo de configuración del Datadog Agent.

CI Visibility no admite métricas de infraestructura para otros ejecutores.

Visualizar mensajes de error para fallas de canalización

Para las ejecuciones fallidas de canalizaciones de GitLab, cada error en la pestaña Errors dentro de una ejecución de canalización específica muestra un mensaje asociado con el tipo de error de GitLab.

Motivo de falla de GitLab

Análisis de fallas de trabajos de CI

Si la recopilación de registros de trabajos está habilitada, CI Visibility utiliza modelos LLM para analizar los trabajos de CI fallidos basándose en los registros relevantes provenientes de GitLab.

También puede agregar un análisis de falla de trabajo a un comentario de PR. Consulte la guía sobre cómo usar comentarios de PR.

Para obtener una explicación completa, consulte la guía sobre cómo usar el análisis de fallas de trabajos de CI.

Errores proporcionados por GitLab

Los mensajes de error son compatibles con las versiones 15.2.0 y superiores de GitLab.

La información de error proporcionada por GitLab se almacena en las etiquetas error.provider_message y error.provider_domain.

La siguiente tabla describe el mensaje y el dominio correlacionado con cada tipo de error. Cualquier tipo de error no listado resulta en un mensaje de error Job failed y un dominio de error unknown.

| Tipo de error | Dominio de error | Mensaje de error |. |———————————|————–|————————————————————| | unknown_failure | desconocido | Falló debido a una razón desconocida. | | config_error | usuario | Falló debido a un error en el archivo de configuración de CI/CD. | | external_validation_failure | desconocido | Falló debido a la validación de canalización externa. | | user_not_verified | usuario | La canalización falló debido a que el usuario no está verificado. | | activity_limit_exceeded | proveedor | Se excedió el límite de actividad de la canalización. | | size_limit_exceeded | proveedor | Se excedió el límite de tamaño de la canalización. | | job_activity_limit_exceeded | proveedor | Se excedió el límite de actividad de trabajos de la canalización. | | deployments_limit_exceeded | proveedor | Se excedió el límite de implementaciones de la canalización. | | project_deleted | proveedor | El proyecto asociado con esta canalización fue eliminado. | | api_failure | proveedor | Falla de API. | | stuck_or_timeout_failure | desconocido | La canalización está bloqueada o agotó el tiempo de espera. | | runner_system_failure | provider | Falló debido a una falla del sistema del runner. | | missing_dependency_failure | desconocido | Falló debido a una dependencia faltante. | | runner_unsupported | provider | Falló debido a un runner no compatible. | | stale_schedule | provider | Falló debido a un horario obsoleto. | | job_execution_timeout | desconocido | Falló debido al tiempo de espera del trabajo. | | archived_failure | proveedor | Falla archivada. | | unmet_prerequisites | desconocido | Falló debido a un prerrequisito no cumplido. | | scheduler_failure | provider | Falló debido a un fallo en el horario. | | data_integrity_failure | provider | Falló debido a problemas de integridad de los datos. | | forward_deployment_failure | desconocido | Falla de implementación. | | user_blocked | usuario | Bloqueado por el usuario. | | ci_quota_exceeded | proveedor | Se excedió la cuota de CI. | | pipeline_loop_detected | usuario | Se detectó un bucle en la canalización. | | builds_disabled | usuario | Compilación deshabilitada. | | deployment_rejected | usuario | Implementación rechazada. | | protected_environment_failure | proveedor | Falla del entorno. | | secrets_provider_not_found | usuario | Proveedor de secretos no encontrado. | | reached_max_descendant_pipelines_depth | usuario | Se alcanzó el máximo de canalizaciones descendientes. | | ip_restriction_failure | proveedor | Falla por restricción de IP. |

Recopilar registros de trabajo

Las siguientes versiones de GitLab admiten la recopilación de registros de trabajo:

Los registros de trabajo se recopilan en Log Management y se correlacionan automáticamente con la canalización de GitLab en CI Visibility. Los archivos de registro mayores a un GiB se truncan.

Para habilitar la recopilación de registros de trabajo:

  1. Haga clic en la casilla de verificación Enable job logs collection en la integración de GitLab Settings > Integrations > Datadog.
  2. Haga clic en Save changes.
Datadog descarga archivos de registro directamente desde el almacenamiento de objetos de sus registros de GitLab con URL temporales prefirmadas. Esto significa que para que los servidores de Datadog accedan al almacenamiento, el almacenamiento no debe tener restricciones de red El punto de conexión, si está configurado, debe resolverse en una URL accesible públicamente.
  1. Haga clic en la casilla de verificación Enable job logs collection en la integración de GitLab en Settings > Integrations > Datadog.
  2. Haga clic en Save changes.
Datadog descarga archivos de registro directamente desde el almacenamiento de objetos de sus registros de GitLab con URL temporales prefirmadas. Esto significa que para que los servidores de Datadog accedan al almacenamiento, el almacenamiento no debe tener restricciones de red El punto de conexión, si está configurado, debe resolverse en una URL accesible públicamente.
  1. Habilite el datadog_integration_logs_collection feature flag en su GitLab. Esto le permite ver la casilla de verificación Enable job logs collection en la integración de GitLab en Settings > Integrations > Datadog.
  2. Haga clic en Enable job logs collection.
  3. Haga clic en Save changes.

Los registros se facturan por separado de CI Visibility. La retención, exclusión e índices de registros se configuran en Log Management. Los registros de los trabajos de GitLab se pueden identificar mediante las etiquetas datadog.product:cipipeline y source:gitlab.

Para obtener más información sobre el procesamiento de registros de trabajos recopilados de la integración de GitLab, consulte la documentación de procesadores.

Visualizar Pipelines parciales y descendentes

Puede utilizar los siguientes filtros para personalizar su consulta de búsqueda en el CI Visibility explorador.

La página de ejecuciones de Pipeline con Partial Pipeline:retry ingresado en la consulta de búsqueda
Nombre de facetaID de facetaValores posibles
Pipelines descendentes@ci.pipeline.downstreamtrue, false
Activado manualmente@ci.is_manualtrue, false
Pipelines parciales@ci.partial_pipelineretry, paused, resumed

También puede aplicar estos filtros usando el panel de faceta en el lado izquierdo de la página.

El panel de faceta con la faceta Pipelines parciales expandida y el valor Retry seleccionado, la faceta Partial Retry expandida y el valor true seleccionado

Visualice datos de Pipelines en Datadog

Una vez que la integración se configure correctamente, las páginas Lista de Pipelines de CI y Ejecuciones se completarán con datos después de que los Pipelines finalicen.

La página CI Pipeline List muestra datos solo para la rama predeterminada de cada repositorio. Para obtener más información, consulte Buscar y administrar Pipelines de CI.

Lecturas adicionales