Descripción general

Catalog utiliza esquemas de definición para almacenar y mostrar metadatos relevantes sobre sus entidades. Los esquemas tienen reglas de validación integradas para garantizar que solo se acepten valores válidos. Puede visualizar advertencias en la pestaña Definición en el panel lateral de Catalog para cualquier servicio seleccionado.

Un diagrama de flujo que muestra cómo los componentes de Catalog se conectan entre sí y con su entorno en la nube

Versiones admitidas

El esquema del modelo de entidad v3.0 no es compatible con su sitio de Datadog seleccionado ().

Datadog admite cuatro versiones del esquema de definición:

  • v3.0: Versión más reciente con modelo de datos ampliado, compatibilidad con propiedad múltiple, declaración manual de dependencias y funciones mejoradas para infraestructura compleja.
  • v2.2: Admite anotaciones de usuario para metadatos personalizados y asociaciones de canalizaciones de CI para vincular servicios con sus procesos de compilación.
  • v2.1: Admite agrupaciones de servicios para una mejor organización e introduce campos adicionales para descripciones de servicio más completas.
  • v2: Versión admitida más antigua, que proporciona campos esenciales para metadatos y documentación básica de servicios.

Cada versión se basa en la anterior, añadiendo nuevas funcionalidades mientras mantiene la compatibilidad con versiones anteriores. Elija la versión que mejor se adapte a sus necesidades y a la complejidad de su infraestructura.

Comparación de versiones

Las siguientes características son compatibles en cada versión:

Característicav3.0v2.2v2.1v2.0
Metadatos básicos
Agrupaciones de servicios
Anotaciones de usuario
Asociaciones de canalización de CI
Modelo de datos expandido
Propiedad múltiple
Declaración manual de dependencias

Para obtener información detallada sobre cada versión, incluidos esquemas completos y archivos YAML de ejemplo, consulte las páginas de versiones individuales en Supported versions.

Detalles de la versión

Opte por la vista previa para obtener la versión más reciente de Catalog.

Request Access

El esquema del modelo de entidad v3.0 no es compatible con su sitio de Datadog seleccionado ().

Características clave

  • Modelo de datos expandido: la v3.0 admite múltiples tipos de entidades. Puede organizar sus sistemas utilizando varios componentes como sistemas, servicios, colas y Datastore.
  • Propiedad múltiple: puede asignar varios propietarios a cualquier objeto definido a través del esquema de la v3.0 para especificar múltiples puntos de contacto.
  • Mapeo de relaciones mejorado: con los datos de APM y USM, puede detectar automáticamente las dependencias entre los componentes. La v3.0 admite la declaración manual para aumentar la topología del sistema detectada automáticamente y garantizar una visión completa de cómo interactúan los componentes dentro de sus sistemas.
  • Herencia de metadatos del sistema: los componentes dentro de un sistema heredan automáticamente los metadatos del sistema. Ya no es necesario declarar los metadatos para todos los componentes relacionados uno por uno como en la v2.1 y la v2.2.
  • Ubicación precisa del código: agregue el mapeo de la ubicación de su código para su servicio. La sección codeLocations en la v3.0 especifica las ubicaciones del código con el repositorio que contiene el código y su paths asociado. El atributo paths es una lista de globs que deben coincidir con las rutas en el repositorio.
  • Registros y eventos filtrados: declare consultas guardadas de registros y eventos para un system a través de las secciones logs y events y visualice los resultados en la página del Sistema.
  • Entidades personalizadas: defina tipos de entidades personalizados más allá de Servicio, Sistema, Datastore, Cola y API. Defina el contexto de las tarjetas de puntuación y las acciones para tipos específicos de entidades.
  • (Próximamente) Integrations: intégrese con herramientas de terceros para obtener información de forma dinámica relacionada con sus componentes (por ejemplo, solicitudes de extracción de GitHub, incidentes de PagerDuty y canalizaciones de GitLab). Genere informes y escriba reglas de tarjetas de puntuación para cualquier fuente de terceros.
  • (Próximamente) Agrupar por producto o dominio: organice los componentes por producto, lo que permite múltiples capas de agrupación jerárquica.

Estructura del esquema

Puede ver las definiciones completas del esquema en Github.

La v3.0 contiene los siguientes cambios respecto a la v2.2:

  • schema_version ahora es apiVersion El campo - kind es nuevo y define el tipo de componente: servicio, cola, Datastore, sistema o API.
  • dd-service ahora es metadata.name
  • team ahora es owner y additionalOwners si hay varios equipos
  • lifecycle, tier, languages y type ahora están bajo spec
  • links, contacts, description y tags ahora están bajo metadatos
  • application se ha mejorado para convertirse en su propio tipo: system. Ya no existe como un campo discreto en un servicio.

Archivos YAML de ejemplo

entity.datadog.yaml

apiVersion: v3
kind: system
metadata:
  name: myapp
  displayName: My App
  tags:
    - tag:value
  links:
    - name: shopping-cart runbook
      type: runbook
      url: https://runbook/shopping-cart
    - name: shopping-cart architecture
      provider: gdoc
      url: https://google.drive/shopping-cart-architecture
      type: doc
    - name: shopping-cart Wiki
      provider: wiki
      url: https://wiki/shopping-cart
      type: doc
    - name: shopping-cart source code
      provider: github
      url: http://github/shopping-cart
      type: repo
  contacts:
    - name: Support Email
      type: email
      contact: team@shopping.com
    - name: Support Slack
      type: slack
      contact: https://www.slack.com/archives/shopping-cart
  owner: myteam
  additionalOwners:
    - name: opsTeam
      type: operator
integrations:
  pagerduty:
    serviceURL: https://www.pagerduty.com/service-directory/Pshopping-cart
  opsgenie:
    serviceURL: https://www.opsgenie.com/service/shopping-cart
    region: US
spec:
  components:
    - service:myservice
    - service:otherservice
extensions:
  datadoghq.com/shopping-cart:
    customField: customValue
datadog:
  codeLocations:
    - repositoryURL: https://github.com/myorganization/myrepo.git
      paths:
        - path/to/service/code/**
  events:
    - name: "deployment events"
      query: "app:myapp AND type:github"
    - name: "event type B"
      query: "app:myapp AND type:github"
  logs:
    - name: "critical logs"
      query: "app:myapp AND type:github"
    - name: "ops logs"
      query: "app:myapp AND type:github"
  pipelines:
    fingerprints:
      - fp1
      - fp2

entity.datadog.yaml

apiVersion: v3
kind: library
metadata:
  name: my-library
  displayName: My Library
  tags:
    - tag:value
  links:
    - name: shopping-cart runbook
      type: runbook
      url: https://runbook/shopping-cart
    - name: shopping-cart architecture
      provider: gdoc
      url: https://google.drive/shopping-cart-architecture
      type: doc
    - name: shopping-cart Wiki
      provider: wiki
      url: https://wiki/shopping-cart
      type: doc
    - name: shopping-cart source code
      provider: github
      url: http://github/shopping-cart
      type: repo
  contacts:
    - name: Support Email
      type: email
      contact: team@shopping.com
    - name: Support Slack
      type: slack
      contact: https://www.slack.com/archives/shopping-cart
  owner: myteam
  additionalOwners:
    - name: opsTeam
      type: operator

Si un solo componente forma parte de múltiples sistemas, debe especificar ese componente en el YAML para cada sistema. Por ejemplo, si el Datastore orders-postgres es un componente tanto de un conjunto de postgres como de una aplicación web, especifique dos YAML:

Para el conjunto de postgres (managed-postgres), especifique una definición para kind:system:

entity.datadog.yaml

apiVersion: v3
kind: system
spec:
  components:
    - datastore:orders-postgres
    - datastore:foo-postgres
    - datastore:bar-postgres
metadata:
  name: managed-postgres
  owner: db-team

Para la aplicación web (shopping-cart), declare una definición separada para kind:system:

entity.datadog.yaml

apiVersion: v3
kind: system
spec:
  lifecycle: production
  tier: critical
  components:
    - service:shopping-cart-api
    - service:shopping-cart-processor
    - queue:orders-queue
    - datastore:orders-postgres
metadata:
  name: shopping-cart
  owner: shopping-team
  additionalOwners:
    - name: sre-team
      type: operator
---
apiVersion: v3
kind: datastore
metadata:
  name: orders-postgres
  additionalOwners:
    - name: db-team
      type: operator
---
apiVersion: v3
kind: service
metadata:
  name: shopping-cart-api
---
apiVersion: v3
kind: service
metadata:
  name: shopping-cart-processor
---

Herencia de metadatos explícita e implícita

Herencia explícita

El campo inheritFrom indica a la canalización de ingesta que herede los metadatos de los metadatos de la entidad referenciados por <entity_kind>:<name>.

entity.datadog.yaml

inheritFrom:<entity_kind>:<name>

Herencia implícita

Los componentes (kind:service, kind:datastore, kind:queue, kind:ui) heredan todos los metadatos del sistema al que pertenecen bajo las siguientes condiciones:

  • Solo hay un sistema definido en el archivo YAML.
  • La cláusula inheritFrom:<entity_kind>:<name> no está presente en el archivo YAML.

Migración a la v3.0

La v3.0 admite los mismos métodos de creación de metadatos que las versiones anteriores, incluidos Github, API, Terraform, Backstage, ServiceNow y la interfaz de usuario. Sin embargo, existen nuevos puntos finales de API y un nuevo recurso de Terraform para la v3.0.

Para migrar archivos YAML de servicio existentes de la v1, v2, v2.1 o v2.2 a la v3, consulte Migrar sus definiciones de servicio a la v3.

Documentación de referencia de la API

Para crear, obtener y eliminar definiciones para todos los tipos de entidades como puntos finales, sistemas, Datastore y colas, consulte la referencia de la API de catálogo.

Características clave

  • Anotaciones de usuario
  • Sobrescribir el tipo de servicio y los lenguajes detectados automáticamente usando type y languages
  • Asociar la canalización de CI con un servicio usando ci-pipeline-fingerprints
  • Lógica de validación menos restrictiva para contact.type y link.type

Estructura del esquema

El esquema completo está disponible en GitHub.

Ejemplo de YAML:

schema-version: v2.2
dd-service: shopping-cart
team: e-commerce
application: shopping-app
tier: "1"
type: web
languages:
  - go
  - python
contacts:
  - type: slack
    contact: https://yourorg.slack.com/archives/e-commerce
  - type: email
    contact: ecommerce@example.com
  - type: microsoft-teams
    contact: https://teams.microsoft.com/example
links:
  - name: Runbook
    type: runbook
    url: http://runbook/shopping-cart
  - name: Source
    type: repo
    provider: github
    url: https://github.com/shopping-cart
  - name: Deployment
    type: repo
    provider: github
    url: https://github.com/shopping-cart
  - name: Config
    type: repo
    provider: github
    url: https://github.com/consul-config/shopping-cart
  - name: E-Commerce Team
    type: doc
    provider: wiki
    url: https://wiki/ecommerce
  - name: Shopping Cart Architecture
    type: doc
    provider: wiki
    url: https://wiki/ecommerce/shopping-cart
  - name: Shopping Cart RFC
    type: doc
    provider: google doc
    url: https://doc.google.com/shopping-cart
tags:
  - business-unit:retail
  - cost-center:engineering
integrations:
  pagerduty:
    service-url: https://www.pagerduty.com/service-directory/PSHOPPINGCART
  opsgenie:
    service-url: "https://www.opsgenie.com/service/uuid"
    region: "US"
ci-pipeline-fingerprints:
  - id1
  - id2
extensions:
  additionalProperties:
    customField1: customValue1
    customField2: customValue2

Documentación de referencia de la API

Características clave

  • Nuevos elementos de la interfaz de usuario, tales como agrupaciones de servicios y campos para application, tier y lifecycle
  • Application y Teams se pueden usar como variables de agrupación en el Catálogo
  • LifecycleEl campo indica la etapa de desarrollo para diferenciar entre servicios production, experimental o deprecated
  • TierEl campo indica la criticidad del servicio para establecer prioridades durante la clasificación de incidentes

Estructura del esquema

El esquema completo está disponible en GitHub.

Ejemplo de YAML:

schema-version: v2.1
dd-service: delivery-state-machine
team: serverless
application: delivery-state-machine
tier: tier0
lifecycle: production
contacts:
  - type: slack
    contact: https://datadogincidents.slack.com/archives/C01EWN6319S
links:
  - name: Demo Dashboard
    type: dashboard
    url: https://app.datadoghq.com/dashboard/krp-bq6-362
  - name: Source
    provider: github
    url: https://github.com/DataDog/shopist-serverless/tree/main/delivery-state-machine
    type: repo
  - name: Deployment
    provider: github
    url: https://github.com/DataDog/shopist-serverless/blob/main/delivery-state-machine/serverless.yml
    type: repo
  - name: Datadog Doc
    provider: link
    url: https://docs.datadoghq.com/
    type: doc
tags:
  - "app:serverless-delivery"
  - "tier:3"
  - "business-unit:operations"

Documentación de referencia de la API

Características clave

  • Metadatos básicos del servicio
  • Asociaciones de equipo
  • Información de contacto
  • Enlaces externos

Estructura del esquema

El esquema completo está disponible en GitHub.

Ejemplo de YAML:

schema-version: v2
dd-service: delivery-api
team: distribution-management
contacts:
  - type: slack
    contact: https://datadogincidents.slack.com/archives/C01EWN6319S
links:
  - name: Demo Dashboard
    type: dashboard
    url: https://app.datadoghq.com/dashboard/krp-bq6-362
repos:
  - name: Source
    provider: github
    url: https://github.com/DataDog/shopist/tree/prod/rails-storefront
docs:
  - name: Datadog Doc
    provider: link
    url: https://docs.datadoghq.com/
tags: []
integrations:
  pagerduty: https://datadog.pagerduty.com/service-directory/PXZNFXP

Documentación de referencia de la API

Crear extensiones personalizadas

Las extensiones personalizadas están en Disponibilidad Limitada para todas las versiones de esquema.

Las extensiones personalizadas le permiten adjuntar metadatos específicos de la organización a las entidades, lo que permite el soporte para herramientas y flujos de trabajo personalizados. Por ejemplo, utilice extensions el campo para incluir notas de la versión, etiquetas de cumplimiento o modelos de propiedad en las definiciones de sus entidades.

Datadog también admite claves de extensión específicas para ciertas funciones. Estas incluyen:

  • datadoghq.com/dora-metrics: Defina patrones de ruta de código fuente para filtrar confirmaciones de Git al calcular métricas DORA.
  • datadoghq.com/cd-visibility: Controle qué confirmaciones se consideran parte de una implementación en CD Visibility.

El siguiente ejemplo define una extensión personalizada utilizada para gestionar la programación de versiones en todos los entornos:

service.datadog.yaml

apiVersion: v3
kind: system
metadata:
  name: payment-platform
  displayName: "Payment Platform"
  links:
    - name: Runbook
      type: runbook
      url: https://runbook/payment-platform
  contacts:
    - name: Payment Team
      type: team
      contact: https://www.slack.com/archives/payments
  owner: payments-team
  additionalOwners:
    - name: finance-team
      type: stakeholder
spec:
  components:
    - service:payment-api
    - queue:payment-requests
    - datastore:payment-db
extensions:
  shopist.com/release-scheduler:
    release-manager:
      slack: "release-train-shopist"
      schedule: "* * * * *"
      env:
        - name: "staging"
          ci_pipeline: "ci-tool://shopist/k8s/staging-deploy"
          branch: "main"
          schedule: "0 9 * * 1"

Validación de esquema a través del complemento de IDE

Datadog proporciona un JSON Schema para las definiciones, de modo que cuando edita una definición en un IDE compatible, se proporcionan funciones como autocompletado y validación.

VSCode reconoce el problema a solucionar

El JSON schema para definiciones de Datadog está registrado en el Schema Store de código abierto.

Lecturas adicionales