OpenTelemetry define ciertas convenciones semánticas para atributos de recursos relacionados con nombres de host. Si una carga útil del Protocolo de OpenTelemetry (OTLP) para cualquier tipo de señal tiene atributos de recurso de nombre de host conocidos, Datadog respeta estas convenciones e intenta utilizar su valor como nombre de host. El algoritmo predeterminado de resolución de nombres de host se ha creado teniendo en cuenta la compatibilidad con el resto de productos de Datadog, pero puedes anularlo si es necesario.
Las convenciones se comprueban en los atributos de recursos en el siguiente orden y se utiliza el primer nombre de host válido. Si no hay convenciones válidas, se utiliza la lógica del nombre de host alternativa. Esta lógica varía según el producto.
Se comprueban las convenciones específicas de Datadog: host y datadog.host.name.
Se comprueban las convenciones específicas del proveedor de la nube para AWS, Azure y GCP.
Se comprueban las convenciones específicas de Kubernetes.
Si no se encuentran convenciones específicas, se recurre a host.id y host.name.
En las secciones siguientes se explica cada conjunto de convenciones con más detalle.
Las convenciones host y datadog.host.name son convenciones específicas de Datadog. Se consideran las primeras y se pueden utilizar para anular el nombre de host detectado con las convenciones semánticas habituales de OpenTelemetry. Es preferible utilizar la convención datadog.host.name, ya que está espaciada por nombres, y es menos probable que entre en conflicto con otros comportamientos específicos del proveedor.
En OpenTelemetry Collector, puedes utilizar el procesador transform para establecer la convención datadog.host.name en tus pipelines. Por ejemplo, para establecer el nombre de host como my-custom-hostname en todas las métricas, trazas (traces) y logs en un pipeline dado, utiliza la siguiente configuración:
transform:metric_statements:&statements- context:resourcestatements:- set(attributes["datadog.host.name"], "my-custom-hostname")trace_statements:*statements# Use the same statements as in metricslog_statements:*statements# Use the same statements as in metrics
No olvides añadir el procesador transform a tus pipelines.
El atributo de recurso cloud.provider se utiliza para determinar el proveedor de la nube. Otros atributos se utilizan para determinar el nombre de host de cada plataforma específica. Si falta cloud.provider o alguno de los atributos, se comprueba el siguiente conjunto de convenciones.
Si cloud.provider tiene el valor aws, se comprueban las siguientes convenciones:
Comprueba aws.ecs.launchtype para determinar si la carga útil procede de una tarea de ECS Fargate. Si es así, utiliza aws.ecs.task.arn como identificador con el nombre de etiqueta task_arn.
De lo contrario, utiliza host.id como nombre de host. Esto coincide con el Id. de instancia de EC2.
Si cloud.provider tiene el valor gcp, se comprueban las siguientes convenciones:
Comprueba que tanto host.name como cloud.account.id están disponibles y tienen el formato esperado, elimina el prefijo de host.name y fusiona ambos en un nombre de host.
Si k8s.node.name y el nombre de clúster están disponibles, el nombre de host se establece en <node name>-<cluster name>. Si solo k8s.node.name está disponible, el nombre de host se establece en el nombre del nodo.
Para obtener el nombre de clúster, se comprueban las siguientes convenciones:
Comprueba k8s.cluster.name y utilízalo si está presente.
Si cloud.provider está configurado como azure, extrae el nombre de clúster de azure.resourcegroup.name.
Si cloud.provider está configurado como aws, extrae el nombre de clúster del primer atributo que empiece por ec2.tag.kubernetes.io/cluster/.
Si ninguna de las convenciones anteriores está presente, los atributos de recurso host.id y host.name se utilizan tal cual para determinar el nombre de host.
Nota: La especificación de OpenTelemetry permite que host.id y host.name tengan valores que pueden no coincidir con los utilizados por otros productos de Datadog en un determinado entorno. Si utilizas varios productos de Datadog para monitorizar el mismo host, es posible que tengas que anular el nombre de host utilizando datadog.host.name para garantizar la coherencia.
Se utiliza la lógica de nombre de host alternativa. Esta lógica genera un nombre de host para la máquina donde
se está ejecutando el exportador de Datadog, que es compatible con el resto de productos de Datadog, al comprobar las siguientes fuentes:
El campo hostname de la configuración del Exportador de Datadog.
API del proveedor de la nube.
Nombre de host de Kubernetes.
Nombre de dominio completo.
Nombre de host del sistema operativo.
Esto puede dar lugar a nombres de host incorrectos en despliegues de gateway. Para evitarlo, utiliza el procesador resource detection en tus pipelines para asegurar una resolución de nombres de host precisa.