Servicios inferidos

Resumen

Datadog descubre automáticamente las dependencias de un servicio instrumentado, como bases de datos, colas o APIs de terceros, incluso si esa dependencia no ha sido instrumentada directamente. Al analizar las solicitudes salientes de sus servicios instrumentados, Datadog infiere la presencia de estas dependencias y recopila métricas de rendimiento asociadas.

Mapa de dependencias de la página de servicio

Explore los servicios inferidos en el Catálogo filtrando entradas por tipo de entidad, como base de datos, cola o API de terceros. Cada página de servicio está adaptada al tipo de servicio que está investigando. Por ejemplo, las páginas de servicio de bases de datos muestran información específica de la base de datos e incluyen datos de DBM si está utilizando DBM.

Configure servicios inferidos

A partir de la versión 7.60.0 del Agente de Datadog, no se necesita configuración manual para ver los servicios inferidos. Las configuraciones requeridas—apm_config.compute_stats_by_span_kind y apm_config.peer_tags_aggregation—están habilitadas por defecto.

Para las versiones del Agente de Datadog 7.55.1 a 7.59.1, agrega lo siguiente a tu archivo de configuración datadog.yaml:

datadog.yaml

apm_config:
  compute_stats_by_span_kind: true
  peer_tags_aggregation: true

Alternativamente, establezca estas variables de entorno en la configuración de su Agente de Datadog:

DD_APM_COMPUTE_STATS_BY_SPAN_KIND=true 
DD_APM_PEER_TAGS_AGGREGATION=true

Si está utilizando Helm, incluya estas variables de entorno en su values.yaml archivo.

Para las versiones del Agente de Datadog 7.50.3 a 7.54.1, agregue lo siguiente a su archivo de configuración datadog.yaml:

datadog.yaml

apm_config:
  compute_stats_by_span_kind: true
  peer_tags_aggregation: true
  peer_tags: ["_dd.base_service","amqp.destination","amqp.exchange","amqp.queue","aws.queue.name","aws.s3.bucket","bucketname","cassandra.keyspace","db.cassandra.contact.points","db.couchbase.seed.nodes","db.hostname","db.instance","db.name","db.namespace","db.system","grpc.host","hostname","http.host","http.server_name","messaging.destination","messaging.destination.name","messaging.kafka.bootstrap.servers","messaging.rabbitmq.exchange","messaging.system","mongodb.db","msmq.queue.path","net.peer.name","network.destination.name","peer.hostname","peer.service","queuename","rpc.service","rpc.system","server.address","streamname","tablename","topicname"]

Alternativamente, establezca estas variables de entorno en la configuración de su Agente de Datadog:

DD_APM_COMPUTE_STATS_BY_SPAN_KIND=true 
DD_APM_PEER_TAGS_AGGREGATION=true
DD_APM_PEER_TAGS='["_dd.base_service","amqp.destination","amqp.exchange","amqp.queue","aws.queue.name","aws.s3.bucket","bucketname","cassandra.keyspace","db.cassandra.contact.points","db.couchbase.seed.nodes","db.hostname","db.instance","db.name","db.namespace","db.system","grpc.host","hostname","http.host","http.server_name","messaging.destination","messaging.destination.name","messaging.kafka.bootstrap.servers","messaging.rabbitmq.exchange","messaging.system","mongodb.db","msmq.queue.path","net.peer.name","network.destination.name","peer.hostname","peer.service","queuename","rpc.service","rpc.system","server.address","streamname","tablename","topicname"]'

Si está utilizando Helm, incluya estas variables de entorno en su values.yaml archivo.

Para el OpenTelemetry Collector, la versión mínima recomendada es opentelemetry-collector-contrib v0.95.0 o posterior. En ese caso, actualice esta configuración:

connectors:
  datadog/connector:
    traces:
      compute_stats_by_span_kind: true
      peer_tags_aggregation: true
      peer_tags: ["_dd.base_service","amqp.destination","amqp.exchange","amqp.queue","aws.queue.name","aws.s3.bucket","bucketname","db.cassandra.contact.points","db.couchbase.seed.nodes","db.hostname","db.instance","db.name","db.namespace","db.system","grpc.host","hostname","http.host","http.server_name","messaging.destination","messaging.destination.name","messaging.kafka.bootstrap.servers","messaging.rabbitmq.exchange","messaging.system","mongodb.db","msmq.queue.path","net.peer.name","network.destination.name","peer.hostname","peer.service","queuename","rpc.service","rpc.system","server.address","streamname","tablename","topicname"]

Si la versión de su Collector es inferior a v0.95.0, actualice la siguiente configuración del Collector:

exporters:
  datadog:
    traces:
      compute_stats_by_span_kind: true
      peer_tags_aggregation: true
      peer_tags: ["_dd.base_service","amqp.destination","amqp.exchange","amqp.queue","aws.queue.name","aws.s3.bucket","bucketname","db.cassandra.contact.points","db.couchbase.seed.nodes","db.hostname","db.instance","db.name","db.namespace","db.system","grpc.host","hostname","http.host","http.server_name","messaging.destination","messaging.destination.name","messaging.kafka.bootstrap.servers","messaging.rabbitmq.exchange","messaging.system","mongodb.db","msmq.queue.path","net.peer.name","network.destination.name","peer.hostname","peer.service","queuename","rpc.service","rpc.system","server.address","streamname","tablename","topicname"]   

Ejemplo: collector.yaml.

Nombramiento de entidades inferidas

Para determinar los nombres y tipos de los servicios dependientes inferidos, Datadog utiliza atributos estándar de tramo y los asocia a atributos peer.*. Por ejemplo, las APIs externas inferidas utilizan el esquema de nombres por defecto net.peer.name como api.stripe.com, api.twilio.com y us6.api.mailchimp.com. Las bases de datos inferidas utilizan el esquema de nombres por defecto db.instance. Puede renombrar entidades inferidas creando reglas de renombrado.

Etiquetas de pares

Etiqueta de parAtributos de fuente
peer.aws.dynamodb.tabletablename
peer.aws.kinesis.streamstreamname
peer.aws.s3.bucketbucketname, aws.s3.bucket
peer.aws.sqs.queuequeuename
peer.cassandra.contact.pointsdb.cassandra.contact.points
peer.couchbase.seed.nodesdb.couchbase.seed.nodes
peer.db.namedb.name, mongodb.db, db.instance, cassandra.keyspace, db.namespace
peer.db.systemdb.system
peer.hostnamepeer.hostname, hostname, net.peer.name, db.hostname, network.destination.name, grpc.host, http.host, server.address, http.server_name
peer.kafka.bootstrap.serversmessaging.kafka.bootstrap.servers
peer.messaging.destinationtopicname, messaging.destination, messaging.destination.name, messaging.rabbitmq.exchange, amqp.destination, amqp.queue, amqp.exchange, msmq.queue.path, aws.queue.name
peer.messaging.systemmessaging.system
peer.rpc.servicerpc.service
peer.rpc.systemrpc.system
peer.servicepeer.service

Nota: Los valores de atributos de pares que coinciden con formatos de direcciones IP son modificados y redactados con blocked-ip-address para evitar ruido innecesario y el etiquetado de métricas con dimensiones de alta cardinalidad. Como resultado, puede encontrar que algunos servicios blocked-ip-address aparecen como dependencias descendentes de sus servicios instrumentados.

Precedencia de etiquetas de pares

Para asignar el nombre a entidades inferidas, Datadog utiliza un orden específico de precedencia entre etiquetas de pares, cuando las entidades se definen por una combinación de varias etiquetas.

Tipo de entidadOrden de precedencia
Base de datospeer.db.name > peer.aws.s3.bucket (Para AWS S3) / peer.aws.dynamodb.table (Para AWS DynamoDB) / peer.cassandra.contact.points (Para Cassandra) / peer.couchbase.seed.nodes (Para Couchbase) > peer.hostname > peer.db.system
Colapeer.messaging.destination > peer.kafka.bootstrap.servers (para Kafka) / peer.aws.sqs.queue (para AWS SQS) / peer.aws.kinesis.stream (para AWS Kinesis) > peer.messaging.system
Servicio inferidopeer.service > peer.rpc.service > peer.hostname

Si la etiqueta de mayor prioridad, como peer.db.name, no se captura como parte de la instrumentación, Datadog utiliza la segunda etiqueta de mayor prioridad, como peer.hostname, y continúa en ese orden.

Nota: Datadog nunca establece el peer.service para bases de datos y colas inferidas. peer.service es el atributo de par de mayor prioridad. Si se establece, tiene prioridad sobre todos los demás atributos.

Migre a la nomenclatura global de servicios predeterminada

Con los servicios inferidos, las dependencias de servicios se detectan automáticamente a partir de los atributos de tramo existentes. Como resultado, no es necesario cambiar los nombres de los servicios (usando la etiqueta service) para identificar estas dependencias.

Habilite DD_TRACE_REMOVE_INTEGRATION_SERVICE_NAMES_ENABLED para asegurar que ninguna integración de Datadog establezca nombres de servicio que sean diferentes del nombre de servicio global predeterminado. Esto también mejora la forma en que se representan las conexiones de servicio a servicio y los servicios inferidos en las visualizaciones de Datadog, en todos los lenguajes compatibles con el SDK e integraciones compatibles.

Habilitar esta opción puede afectar las métricas de APM existentes, métricas de tramo personalizadas, análisis de trazas, filtros de retención, escaneos de datos sensibles, monitores, tableros o notebooks que hagan referencia a los antiguos nombres de servicio. Actualice estos activos para usar la etiqueta de servicio predeterminada global (service:<DD_SERVICE>).

Para instrucciones sobre cómo eliminar las sobreescrituras de servicio y migrar a servicios inferidos, consulte la guía de sobreescrituras de servicio.

La función de Servicios Inferidos no está disponible por defecto en su centro de datos. Complete este formulario para solicitar acceso.

Lectura adicional

Más enlaces, artículos y documentación útiles: