Información general

Los productos y visualizaciones de Datadog se basan en métricas y etiquetas (tags) que se adhieren a patrones de nomenclatura específicos. Las métricas de los componentes de OpenTelemetry que se envían a Datadog se asignan a las métricas correspondientes de Datadog según proceda. La creación de estas métricas no afecta a la facturación de Datadog.

El siguiente diagrama muestra el proceso de asignación de métricas de OpenTelemetry a métricas que utiliza Datadog:

El proceso de decisión para asignar nombres de métricas de OpenTelemetry a nombres de métricas de Datadog. Si ningún producto de Datadog utiliza una métrica de OTel, o si la semántica es la misma que Datadog, se envía como está a Datadog. Sino, se crea una métrica del estilo de Datadog desde la métrica de OTel y se la envía a Datadog.

Utilización del prefijo otel

Para diferenciar las métricas capturadas por el receptor hostmetrics del Datadog Agent, añadimos un prefijo, otel, para las métricas recopiladas por el recopilador. Si un nombre de métrica empieza por system. o process., se añade otel. al nombre de métrica. No es recomendado monitorizar el mismo artefacto de infraestructura con el Agent y Collector al mismo tiempo.

Datadog está evaluando formas de mejorar la experiencia de métrica OTLP, incluyendo la posible eliminación de este prefijo otel. Si tienes alguna sugerencia al respecto, ponte en contacto con tu equipo de cuentas.

Métricas de host

Las métricas de host son recopiladas por el receptor de métricas de host. Para obtener información sobre cómo configurar el receptor, consulta OpenTelemetry Collector y Exportador de Datadog.

La métricas, asignadas a métricas de Datadog, se utilizan en las siguientes vistas:

Nota: Para correlacionar trazas y métricas de host, configura Atributos de Universal Service Monitoring para cada servicio y establece el atributo de recurso host.name en el host subyacente correspondiente para las instancias de servicio y recopilador.

La siguiente tabla muestra qué nombres de métrica de host de Datadog están asociados a los correspondientes nombres de métrica de host de OpenTelemetry y, si procede, qué matemática se aplica a la métrica de host de OTel para transformarla en unidades de Datadog durante la asignación.

Nombre de métrica de DatadogNombre de métrica de OTelDescripción de métricaTransformación realizada en la métrica de OTel
system.load.1system.cpu.load_average.1mLa carga media del sistema durante un minuto. (Solo Linux)
system.load.5system.cpu.load_average.5mLa carga media del sistema durante cinco minutos. (Solo Linux)
system.load.15system.cpu.load_average.15mLa carga media del sistema durante 15 minutos. (Solo Linux)
system.cpu.idlesystem.cpu.utilization
Estado del filtro de atributo: idle
Fracción de tiempo que la CPU pasó en estado inactivo. Se muestra como porcentaje.Multiplicado por 100
system.cpu.usersystem.cpu.utilization
Estado del filtro de atributo: user
Fracción de tiempo que la CPU pasó ejecutando los procesos del espacio de usuario. Se muestra como porcentaje.Multiplicado por 100
system.cpu.systemsystem.cpu.utilization
Estado del filtro de atributo: system
Fracción de tiempo que la CPU pasó ejecutando el kernel.Multiplicado por 100
system.cpu.iowaitsystem.cpu.utilization
Estado del filtro de atributo: wait
Porcentaje de tiempo que la CPU dedica a esperar a que se completen las operaciones de E/S.Multiplicado por 100
system.cpu.stolensystem.cpu.utilization
Estado del filtro de atributo: steal
El porcentaje de tiempo que la CPU virtual pasó esperando a que el hipervisor preste servicio a otra CPU virtual. Solo se aplica a máquinas virtuales. Se muestra como porcentaje.Multiplicado por 100
system.mem.totalsystem.memory.usageLa cantidad total de RAM física en bytes.Convertido a MB (dividido por 2^20)
system.mem.usablesystem.memory.usage
Estado del filtro de atributo: (free, cached, buffered)
Valor de MemAvailable a partir de /proc/meminfo si está presente. Si no está presente, se vuelve a añadir free + buffered + cached memory. En bytes.Convertido a MB (dividido por 2^20)
system.net.bytes_rcvdsystem.network.io
Dirección del filtro de atributo: receive
Número de bytes recibidos en un dispositivo por segundo.
system.net.bytes_sentsystem.network.io
Dirección del filtro de atributo: transmit
Número de bytes enviados desde un dispositivo por segundo.
system.swap.freesystem.paging.usage
Estado del filtro de atributo: free
La cantidad de espacio swap libre, en bytesConvertido a MB (dividido por 2^20)
system.swap.usedsystem.paging.usage
Estado del filtro de atributo: used
La cantidad de espacio swap en uso, en bytes.Convertido a MB (dividido por 2^20)
system.disk.in_usesystem.filesystem.utilizationLa cantidad de espacio en disco en uso como fracción del total.

Métricas de contenedor

El receptor de Docker Stats genera métricas de contenedor para OpenTelemetry Collector. El exportador de Datadog traduce las métricas de contenedor a sus homólogos de Datadog para usarlas en las siguientes vistas:

Nota: Para correlacionar trazas y métricas de contenedor, configura Atributos de Universal Service Monitoring para cada servicio y establece los siguientes atributos de recurso para cada servicio:

  • k8s.container.name
  • k8s.pod.name
  • container.name
  • container.id

Más información sobre la asignación entre las convenciones semánticas de OpenTelemetry y Datadog para los atributos de recursos.

La siguiente tabla muestra qué nombres de métrica de contenedor de Datadog están asociados a los correspondientes nombres de métrica de contenedor de OpenTelemetry

Nombre de métrica de DatadogNombre de métrica de OTel Docker StatsDescripción de métrica
container.cpu.usagecontainer.cpu.usage.totalEl uso total de la CPU del contenedor
container.cpu.usercontainer.cpu.usage.usermodeEl uso de CPU en el espacio de usuario del contenedor
container.cpu.systemcontainer.cpu.usage.systemEl uso de la CPU del sistema del contenedor
container.cpu.throttledcontainer.cpu. throttling_data.throttled_timeEl tiempo total de limitación de la CPU
container.cpu.throttled.periodscontainer.cpu. throttling_data.throttled_periodsEl número de periodos durante los cuales el contenedor estaba limitado
container.memory.usagecontainer.memory.usage.totalEl uso total de memoria del contenedor
container.memory.kernelcontainer.memory.active_anonEl uso de memoria del kernel del contenedor
container.memory.limitcontainer.memory. hierarchical_memory_limitEl límite de memoria del contenedor
container.memory.soft_limitcontainer.memory.usage.limitEl límite movible de memoria del contenedor
container.memory.cachecontainer.memory.total_cacheEl uso de la caché del contenedor
container.memory.swapcontainer.memory.total_swapEl uso de swap del contenedor
container.io.writecontainer.blockio. io_service_bytes_recursive
Operación del filtro de atributo=write
El número de bytes escritos en los discos por este contenedor
container.io.readcontainer.blockio. io_service_bytes_recursive
Operación del filtro de atributo=read
El número de bytes leídos de los discos por este contenedor
container.io.write.operationscontainer.blockio. io_serviced_recursive
Operación del filtro de atributo=write
El número de operaciones de escritura realizadas por este contenedor
container.io.read.operationscontainer.blockio. io_serviced_recursive
Operación del filtro de atributo=read
El número de operaciones de lectura realizadas por este contenedor
container.net.sentcontainer.network.io. usage.tx_bytesNúmero de bytes de red enviados (por interfaz)
container.net.sent.packetscontainer.network.io. usage.tx_packetsNúmero de paquetes de red enviados (por interfaz)
container.net.rcvdcontainer.network.io. usage.rx_bytesNúmero de bytes de red recibidos (por interfaz)
container.net.rcvd.packetscontainer.network.io. usage.rx_packetsNúmero de paquetes de red recibidos (por interfaz)

Métricas de Kafka

Métrica de OpenTelemetryMétrica de DatadogFuenteTransformación realizada en la métrica de Datadog
otel.kafka.producer.request-ratekafka.producer.request_rateReceptor JMX/Recopilador de métricas de JMX {target_system:kafka-producer}
otel.kafka.producer.response-ratekafka.producer.response_rateReceptor JMX/Recopilador de métricas de JMX {target_system:kafka-producer}
otel.kafka.producer.request-latency-avgkafka.producer.request_latency_avgReceptor JMX/Recopilador de métricas de JMX {target_system:kafka-producer}
kafka.producer.outgoing-byte-ratekafka.producer.outgoing-byte-rateReceptor JMX/Recopilador de métricas de JMX {target_system:kafka-producer}
kafka.producer.io-wait-time-ns-avgkafka.producer.io_waitReceptor JMX/Recopilador de métricas de JMX {target_system:kafka-producer}
kafka.producer.byte-ratekafka.producer.bytes_outReceptor JMX/Recopilador de métricas de JMX {target_system:kafka-producer}
kafka.consumer.total.bytes-consumed-ratekafka.consumer.bytes_inReceptor JMX/Recopilador de métricas de JMX {target_system:kafka-consumer}
kafka.consumer.total.records-consumed-ratekafka.consumer.messages_inReceptor JMX/Recopilador de métricas de JMX {target_system:kafka-consumer}
kafka.red.io{state:out}kafka.net.bytes_out.rateReceptor JMX/Recopilador de métricas de JMX {target_system:kafka}Calcula la tasa por segundo y la presenta como gauge
kafka.red.io{state:in}kafka.net.bytes_in.rateReceptor JMX/Recopilador de métricas de JMX {target_system:kafka}Calcula la tasa por segundo y la presenta como gauge
kafka.purgatory.size{type:produce}kafka.request.producer_request_purgatory.sizeReceptor JMX/Recopilador de métricas de JMX {target_system:kafka}
kafka.purgatory.size{type:fetch}kafka.request.fetch_request_purgatory.sizeReceptor JMX/Recopilador de métricas de JMX {target_system:kafka}
kafka.partition.under_replicatedkafka.replication.under_replicated_partitionsReceptor JMX/Recopilador de métricas de JMX {target_system:kafka}
kafka.isr.operation.count{operation:shrink}kafka.replication.isr_shrinks.rateReceptor JMX/Recopilador de métricas de JMX {target_system:kafka}Calcula la tasa por segundo y la presenta como gauge
kafka.isr.operation.count{operation:expand}kafka.replication.isr_expands.rateReceptor JMX/Recopilador de métricas de JMX {target_system:kafka}Calcula la tasa por segundo y la presenta como gauge
kafka.leader.election.ratekafka.replication.leader_elections.rateReceptor JMX/Recopilador de métricas de JMX {target_system:kafka}Calcula la tasa por segundo y la presenta como gauge
kafka.partition.offlinekafka.replication.offline_partitions_countReceptor JMX/Recopilador de métricas de JMX {target_system:kafka}
kafka.request.time.avg{type:produce}kafka.request.produce.time.avgReceptor JMX/Recopilador de métricas de JMX {target_system:kafka}
kafka.request.time.avg{type:fetchconsumer}kafka.request.fetch_consumer.time.avgReceptor JMX/Recopilador de métricas de JMX {target_system:kafka}
kafka.request.time.avg{type:fetchfollower}kafka.request.fetch_follower.time.avgReceptor JMX/Recopilador de métricas de JMX {target_system:kafka}
kafka.message.countkafka.messages_in.rateReceptor JMX/Recopilador de métricas de JMX {target_system:kafka}Calcula la tasa por segundo y la presenta como gauge
kafka.request.failed{type:produce}kafka.request.produce.failed.rateReceptor JMX/Recopilador de métricas de JMX {target_system:kafka}Calcula la tasa por segundo y la presenta como gauge
kafka.request.failed{type:fetch}kafka.request.fetch.failed.rateReceptor JMX/Recopilador de métricas de JMX {target_system:kafka}Calcula la tasa por segundo y la presenta como gauge
kafka.request.time.99p{type:produce}kafka.request.produce.time.99percentileReceptor JMX/Recopilador de métricas de JMX {target_system:kafka}
kafka.request.time.99p{type:fetchconsumer}kafka.request.fetch_consumer.time.99percentileReceptor JMX/Recopilador de métricas de JMX {target_system:kafka}
kafka.request.time.99p{type:fetchfollower}kafka.request.fetch_follower.time.99percentileReceptor JMX/Recopilador de métricas de JMX {target_system:kafka}
kafka.partition.countkafka.replication.partition_countReceptor JMX/Recopilador de métricas de JMX {target_system:kafka}
kafka.max.lagkafka.replication.max_lagReceptor JMX/Recopilador de métricas de JMX {target_system:kafka}
kafka.controller.active.countkafka.replication.active_controller_countReceptor JMX/Recopilador de métricas de JMX {target_system:kafka}
kafka.unclean.election.ratekafka.replication.unclean_leader_elections.rateReceptor JMX/Recopilador de métricas de JMX {target_system:kafka}Calcula la tasa por segundo y la presenta como gauge
kafka.request.queuekafka.request.channel.queue.sizeReceptor JMX/Recopilador de métricas de JMX {target_system:kafka}
kafka.logs.flush.time.countkafka.log.flush_rate.rateReceptor JMX/Recopilador de métricas de JMX {target_system:kafka}Calcula la tasa por segundo y la presenta como gauge
kafka.consumer.bytes-consumed-ratekafka.consumer.bytes_consumedReceptor JMX/Recopilador de métricas de JMX {target_system:kafka-consumer}
kafka.consumer.records-consumed-ratekafka.consumer.records_consumedReceptor JMX/Recopilador de métricas de JMX {target_system:kafka-consumer}
otel.kafka.consumer.fetch-size-avgkafka.consumer.fetch_size_avgReceptor JMX/Recopilador de métricas de JMX {target_system:kafka-consumer}
otel.kafka.producer.compression-ratekafka.producer.compression-rateReceptor JMX/Recopilador de métricas de JMX {target_system:kafka-producer}
otel.kafka.producer.record-error-ratekafka.producer.record_error_rateReceptor JMX/Recopilador de métricas de JMX {target_system:kafka-producer}
otel.kafka.producer.record-retry-ratekafka.producer.record_retry_rateReceptor JMX/Recopilador de métricas de JMX {target_system:kafka-producer}
otel.kafka.producer.record-send-ratekafka.producer.record_send_rateReceptor JMX/Recopilador de métricas de JMX {target_system:kafka-producer}
kafka.partition.current_offsetkafka.broker_offsetkafkametricsreceiver
kafka.consumer_group.lagkafka.consumer_lagkafkametricsreceiver
kafka.consumer_group.offsetkafka.consumer_offsetkafkametricsreceiver
jvm.gc.collections.count{name:Copy && name:PS Scavenge && name:ParNew && name:G1 Young Generation}jvm.gc.min&&_collection_countReceptor JMX/Recopilador de métricas de JMX {target_system:jvm}Calcula la tasa por segundo y la presenta como gauge
jvm.gc.maj&&_collection_count{name:MarkSweepCompact && name:PS MarkSweep &&name:ConcurrentMarkSweep &&name:G1 Mixed Generation && G1 Old Generation && Shenandoah Cycles && ZGC}jvm.gc.maj&&_collection_countReceptor JMX/Recopilador de métricas de JMX {target_system:jvm}Calcula la tasa por segundo y la presenta como gauge
jvm.gc.collections.elapsed{name:Copy && name:PS Scavenge && name:ParNew && name:G1 Young Generation}jvm.gc.min&&_collection_timeReceptor JMX/Recopilador de métricas de JMX {target_system:jvm}Calcula la tasa por segundo y la presenta como gauge
jvm.gc.collections.elapsed{name:MarkSweepCompact && name:PS MarkSweep &&name:ConcurrentMarkSweep &&name:G1 Mixed Generation && G1 Old Generation && Shenandoah Cycles && ZGC}jvm.gc.major_collection_timeReceptor JMX/Recopilador de métricas de JMX {target_system:jvm}Calcula la tasa por segundo y la presenta como gauge

Nota: En Datadog - se traduce como _. Para las métricas que incluyen el prefijo otel., esto significa que el nombre de métrica de OTel y el nombre de métrica de Datadog son el mismo (por ejemplo, kafka.producer.request-rate y kafka.producer.request_rate). Para evitar el recuento doble de estas métricas, la métrica de OTel tiene el prefijo otel..

Referencias adicionales