Componentes clave para Kubernetes

El OpenTelemetry Collector admite numerosos receptores y procesadores diferentes para facilitar la supervisión de Kubernetes. Esta sección describe los componentes más importantes para recopilar datos de Kubernetes y mejorarlos.

Componentes incluidos en esta página:

Para los logs, las métricas o los rastros de aplicaciones, recomendamos el receptor OTLP, pero cualquier receptor que se ajuste a sus datos es adecuado.

Procesador de atributos de Kubernetes

Patrón de implementaciónUtilizable
DaemonSet (agente)
Deployment (gateway)
SidecarNo

El procesador de atributos de Kubernetes descubre automáticamente los pods de Kubernetes, extrae sus metadatos y agrega los metadatos extraídos a intervalos, métricas y logs como atributos de recursos.

El procesador de atributos de Kubernetes es uno de los componentes más importantes para un recopilador que se ejecuta en Kubernetes. Cualquier recopilador que reciba datos de la aplicación debe usarlo. Debido a que agrega contexto de Kubernetes a su telemetría, el procesador de atributos de Kubernetes le permite correlacionar los rastros, las métricas y los logs de de su aplicación con su telemetría de Kubernetes, como las métricas de pod y los rastros.

El procesador de atributos de Kubernetes utiliza la API de Kubernetes para descubrir todos los pods que se ejecutan en un clúster y mantiene un registro de sus direcciones IP, UID de pod y metadatos interesantes. De manera predeterminada, los datos que pasan por el procesador se asocian a un pod a través de la dirección IP de la solicitud entrante, pero se pueden configurar diferentes reglas. Dado que el procesador utiliza la API de Kubernetes, requiere permisos especiales (consulta el ejemplo a continuación). Si está utilizando el gráfico Helm de OpenTelemetry Collector, puede usar el ajuste preestablecido kubernetesAttributes para comenzar.

Los siguientes atributos se agregan de forma predeterminada:

  • k8s.namespace.name
  • k8s.pod.name
  • k8s.pod.uid
  • k8s.pod.start_time
  • k8s.deployment.name
  • k8s.node.name

El procesador de atributos de Kubernetes también puede establecer atributos de recursos personalizados para rastreos, métricas y logs mediante las etiquetas y anotaciones de Kubernetes que haya agregado a sus pods y espacios de nombres.

k8sattributes:
  auth_type: 'serviceAccount'
  extract:
    metadata: # extraído del pod
      - k8s.namespace.name
      - k8s.pod.name
      - k8s.pod.start_time
      - k8s.pod.uid
      - k8s.deployment.name
      - k8s.node.name
    annotations:
      # Extrae el valor de una anotación del pod con la clave `annotation-one` y lo inserta como un atributo de recurso con la clave `a1`
      - tag_name: a1
        key: annotation-one
        from: pod
      # Extrae el valor de una anotación del namespace con la clave `annotation-two` utilizando una expresión regular y lo inserta como un recurso con la clave `a2`
      - tag_name: a2
        key: annotation-two
        regex: field=(?P<value>.+)
        from: namespace
    labels:
      # Extrae el valor de una etiqueta del namespace con la clave `label1` y lo inserta como un atributo de recurso con la clave `l1`
      - tag_name: l1
        key: label1
        from: namespace
      # Extrae el valor de una etiqueta del pod con la clave `label2` utilizando una expresión regular y lo inserta como un atributo de recurso con la clave `l2`
      - tag_name: l2
        key: label2
        regex: field=(?P<value>.+)
        from: pod
  pod_association: # Cómo asociar los datos a un pod (el orden importa)
    - sources: # Primero intenta usar el valor del atributo de recurso k8s.pod.ip
        - from: resource_attribute
          name: k8s.pod.ip
    - sources: # Luego intenta usar el valor del atributo de recurso k8s.pod.uid
        - from: resource_attribute
          name: k8s.pod.uid
    - sources: # Si ninguno de esos funciona, usa la conexión de la solicitud para obtener la IP del pod.
        - from: connection

También hay opciones de configuración especiales para cuando el recopilador se implementa como un DaemonSet de Kubernetes (agente) o como una implementación de Kubernetes (gateway). Para obtener más detalles, consulta Escenarios de implementación

Para conocer los detalles de configuración del procesador de atributos de Kubernetes, consulta Procesador de atributos de Kubernetes.

Dado que el procesador usa la API de Kubernetes, necesita el permiso correcto para funcionar correctamente. Para la mayoría de los casos de uso, debe otorgar a la cuenta de servicio que ejecuta el recopilador los siguientes permisos a través de un ClusterRole.

apiVersion: v1
kind: ServiceAccount
metadata:
  name: collector
  namespace: <OTEL_COL_NAMESPACE>
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: otel-collector
rules:
  - apiGroups:
      - ''
    resources:
      - 'pods'
      - 'namespaces'
    verbs:
      - 'get'
      - 'watch'
      - 'list'
  - apiGroups:
      - 'apps'
    resources:
      - 'replicasets'
    verbs:
      - 'get'
      - 'list'
      - 'watch'
  - apiGroups:
      - 'extensions'
    resources:
      - 'replicasets'
    verbs:
      - 'get'
      - 'list'
      - 'watch'
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: otel-collector
subjects:
  - kind: ServiceAccount
    name: collector
    namespace: <OTEL_COL_NAMESPACE>
roleRef:
  kind: ClusterRole
  name: otel-collector
  apiGroup: rbac.authorization.k8s.io

Receptor de Kubeletstats

Patrón de implementaciónUtilizable
DaemonSet (agente)Preferido
Deployment (gateway)Sí, pero solo recopilará métricas del nodo en el que está implementado
SidecarNo

Cada nodo de Kubernetes ejecuta un kubelet que incluye un servidor API. Los Kubernetes El receptor se conecta a ese kubelet a través del servidor API para recopilar métricas sobre el nodo y las cargas de trabajo que se ejecutan en el nodo.

Existen diferentes métodos de autenticación, pero normalmente una cuenta de servicio se utiliza. La cuenta de servicio también necesitará los permisos adecuados para extraer datos de el Kubelet (ver más abajo). Si estás usando el Gráfico de timón de OpenTelemetry Collector puede utilizar el kubeletMetrics preset para empezar.

De forma predeterminada, se recopilan métricas para pods y nodos, pero también se puede configurar el receptor para recopilar las métricas del contenedor y el volumen. El receptor también permite configurar con qué frecuencia se recopilan las métricas:

receivers:
  kubeletstats:
    collection_interval: 10s
    auth_type: 'serviceAccount'
    endpoint: '${env:K8S_NODE_NAME}:10250'
    insecure_skip_verify: true
    metric_groups:
      - node
      - pod
      - container

Para obtener detalles específicos sobre qué métricas se recopilan, consulta Métricas predeterminadas. Para obtener detalles de configuración específicos, consulta Receptor de Kubeletstats.

Dado que el procesador usa la API de Kubernetes, necesitas el permiso correcto para funcionar correctamente. Para la mayoría de los casos de uso, debes otorgar a la cuenta de servicio que ejecuta el recopilador los siguientes permisos a través de un ClusterRole.

---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: otel-collector
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: otel-collector
rules:
  - apiGroups: ['']
    resources: ['nodes/stats']
    verbs: ['get', 'watch', 'list']
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: otel-collector
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: otel-collector
subjects:
  - kind: ServiceAccount
    name: otel-collector
    namespace: default

Receptor de logs de archivos

Patrón de implementaciónUtilizable
DaemonSet (agente)Preferido
Deployment (gateway)Sí, pero solo recopilará logs del nodo en el que se implementa
SidecarSí, pero esto se consideraría una configuración avanzada

El receptor de logs de archivos rastrea y analiza los logs de los archivos. Aunque no es un receptor específico de Kubernetes, sigue siendo la solución de facto para recopilar cualquier registro de Kubernetes.

El receptor de Filelog está compuesto por operadores que se encadenan entre sí para procesar un registro. Cada operador realiza una responsabilidad simple, como analizar una marca de tiempo o JSON. Configurar un receptor de Filelog no es trivial. Si está usando el diagrama de Helm de OpenTelemetry Collector puede usar el ajuste preestablecido logsCollection para comenzar.

Dado que los logs de Kubernetes normalmente se ajustan a un conjunto de formatos estándar, una configuración típica de receptor de Filelog para Kubernetes se ve así:

filelog:
  include:
    - /var/log/pods/*/*/*.log
  exclude:
    # Exclude logs from all containers named otel-collector
    - /var/log/pods/*/otel-collector/*.log
  start_at: beginning
  include_file_path: true
  include_file_name: false
  operators:
    # Find out which format is used by kubernetes
    - type: router
      id: get-format
      routes:
        - output: parser-docker
          expr: 'body matches "^\\{"'
        - output: parser-crio
          expr: 'body matches "^[^ Z]+ "'
        - output: parser-containerd
          expr: 'body matches "^[^ Z]+Z"'
    # Parse CRI-O format
    - type: regex_parser
      id: parser-crio
      regex:
        '^(?P<time>[^ Z]+) (?P<stream>stdout|stderr) (?P<logtag>[^ ]*)
        ?(?P<log>.*)$'
      output: extract_metadata_from_filepath
      timestamp:
        parse_from: attributes.time
        layout_type: gotime
        layout: '2006-01-02T15:04:05.999999999Z07:00'
    # Parse CRI-Containerd format
    - type: regex_parser
      id: parser-containerd
      regex:
        '^(?P<time>[^ ^Z]+Z) (?P<stream>stdout|stderr) (?P<logtag>[^ ]*)
        ?(?P<log>.*)$'
      output: extract_metadata_from_filepath
      timestamp:
        parse_from: attributes.time
        layout: '%Y-%m-%dT%H:%M:%S.%LZ'
    # Parse Docker format
    - type: json_parser
      id: parser-docker
      output: extract_metadata_from_filepath
      timestamp:
        parse_from: attributes.time
        layout: '%Y-%m-%dT%H:%M:%S.%LZ'
    - type: move
      from: attributes.log
      to: body
    # Extract metadata from file path
    - type: regex_parser
      id: extract_metadata_from_filepath
      regex: '^.*\/(?P<namespace>[^_]+)_(?P<pod_name>[^_]+)_(?P<uid>[a-f0-9\-]{36})\/(?P<container_name>[^\._]+)\/(?P<restart_count>\d+)\.log$'
      parse_from: attributes["log.file.path"]
      cache:
        size: 128 # default maximum amount of Pods per Node is 110
    # Rename attributes
    - type: move
      from: attributes.stream
      to: attributes["log.iostream"]
    - type: move
      from: attributes.container_name
      to: resource["k8s.container.name"]
    - type: move
      from: attributes.namespace
      to: resource["k8s.namespace.name"]
    - type: move
      from: attributes.pod_name
      to: resource["k8s.pod.name"]
    - type: move
      from: attributes.restart_count
      to: resource["k8s.container.restart_count"]
    - type: move
      from: attributes.uid
      to: resource["k8s.pod.uid"]

Para conocer los detalles de configuración de Filelog Receiver, consulta Filelog Receiver.

Además de la configuración de Filelog Receiver, su instalación de OpenTelemetry Collector en Kubernetes necesitará acceso a los logs que desea recopilar. Normalmente, esto significa agregar algunos volúmenes y montajes de volumen a su manifiesto de recopilador:

---
apiVersion: apps/v1
kind: DaemonSet
...
spec:
  ...
  template:
    ...
    spec:
      ...
      containers:
        - name: opentelemetry-collector
          ...
          volumeMounts:
            ...
            # Mount the volumes to the collector container
            - name: varlogpods
              mountPath: /var/log/pods
              readOnly: true
            - name: varlibdockercontainers
              mountPath: /var/lib/docker/containers
              readOnly: true
            ...
      volumes:
        ...
        # Typically the collector will want access to pod logs and container logs
        - name: varlogpods
          hostPath:
            path: /var/log/pods
        - name: varlibdockercontainers
          hostPath:
            path: /var/lib/docker/containers
        ...

Receptor de clúster de Kubernetes

Patrón de implementaciónUtilizable
DaemonSet (agente)Sí, pero generará datos duplicados
Deployment (gateway)Sí, pero más de una réplica generará datos duplicados
SidecarNo

El receptor de clúster de Kubernetes recopila métricas y eventos de entidad sobre el clúster en su totalidad mediante el servidor de API de Kubernetes. Utiliza este receptor para responder preguntas sobre fases de pod, condiciones de nodo y otras preguntas sobre todo el clúster. Dado que el receptor recopila telemetría para el clúster en su totalidad, solo se necesita una instancia del receptor en todo el clúster para recopilar todos los datos.

Existen diferentes métodos de autenticación, pero normalmente se utiliza una cuenta de servicio. La cuenta de servicio también necesita los permisos adecuados para extraer datos del servidor API de Kubernetes (consulte a continuación). Si estás utilizando el gráfico Helm de OpenTelemetry Collector (../../helm/collector/), puedes utilizar el valor preestablecido clusterMetrics para comenzar.

Para las condiciones del nodo, el receptor solo recopila Ready de manera predeterminada, pero puede configurarse para recopilar más. El receptor también puede configurarse para informar un conjunto de recursos asignables, como CPU y memory:

k8s_cluster:
  auth_type: serviceAccount
  node_conditions_to_report:
    - Ready
    - MemoryPressure
  allocatable_types_to_report:
    - cpu
    - memory

Para obtener más información sobre las métricas que se recopilan, consulta Métricas predeterminadas Para obtener detalles de configuración, consulta Receptor de clúster de Kubernetes.

Dado que el procesador usa la API de Kubernetes, necesitas el permiso correcto para funcionar correctamente. Para la mayoría de los casos de uso, debes otorgar a la cuenta de servicio que ejecuta el recopilador los siguientes permisos a través de un ClusterRole.

---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: otel-collector-opentelemetry-collector
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: otel-collector-opentelemetry-collector
rules:
  - apiGroups:
      - ''
    resources:
      - events
      - namespaces
      - namespaces/status
      - nodes
      - nodes/spec
      - pods
      - pods/status
      - replicationcontrollers
      - replicationcontrollers/status
      - resourcequotas
      - services
    verbs:
      - get
      - list
      - watch
  - apiGroups:
      - apps
    resources:
      - daemonsets
      - deployments
      - replicasets
      - statefulsets
    verbs:
      - get
      - list
      - watch
  - apiGroups:
      - extensions
    resources:
      - daemonsets
      - deployments
      - replicasets
    verbs:
      - get
      - list
      - watch
  - apiGroups:
      - batch
    resources:
      - jobs
      - cronjobs
    verbs:
      - get
      - list
      - watch
  - apiGroups:
      - autoscaling
    resources:
      - horizontalpodautoscalers
    verbs:
      - get
      - list
      - watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: otel-collector-opentelemetry-collector
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: otel-collector-opentelemetry-collector
subjects:
  - kind: ServiceAccount
    name: otel-collector-opentelemetry-collector
    namespace: default

Receptor de objetos de Kubernetes

Patrón de implementaciónUtilizable
DaemonSet (agente)Sí, pero generará datos duplicados
Deployment (gateway)Sí, pero más de una réplica generará datos duplicados
SidecarNo

El receptor de objetos de Kubernetes recopila, ya sea extrayendo o observando, objetos del servidor de API de Kubernetes. El caso de uso más común para este receptor es observar eventos de Kubernetes, pero se puede utilizar para recopilar cualquier tipo de objeto de Kubernetes. Dado que el receptor recopila telemetría para el clúster en su totalidad, solo se necesita una instancia del receptor en todo el clúster para recopilar todos los datos.

Actualmente, solo se puede usar una cuenta de servicio para la autenticación. La cuenta de servicio también necesita los permisos adecuados para extraer datos del servidor de API de Kubernetes (ver a continuación). Si estás usando el gráfico Helm de OpenTelemetry Collector y desea ingresar eventos, puedes usar el ajuste preestablecido kubernetesEvents para comenzar.

Para los objetos que se configuran para extraer, el receptor usa la API de Kubernetes para enumerar periódicamente todos los objetos del clúster. Cada objeto se convierte en su propio registro. Para los objetos configurados para observar, el receptor crea un flujo con la API de Kubernetes y recibe actualizaciones a medida que cambian los objetos.

Para ver qué objetos están disponibles para la recopilación en su clúster, ejecute kubectl api-resources:

kubectl api-resources
NAME                              SHORTNAMES   APIVERSION                             NAMESPACED   KIND
bindings                                       v1                                     true         Binding
componentstatuses                 cs           v1                                     false        ComponentStatus
configmaps                        cm           v1                                     true         ConfigMap
endpoints                         ep           v1                                     true         Endpoints
events                            ev           v1                                     true         Event
limitranges                       limits       v1                                     true         LimitRange
namespaces                        ns           v1                                     false        Namespace
nodes                             no           v1                                     false        Node
persistentvolumeclaims            pvc          v1                                     true         PersistentVolumeClaim
persistentvolumes                 pv           v1                                     false        PersistentVolume
pods                              po           v1                                     true         Pod
podtemplates                                   v1                                     true         PodTemplate
replicationcontrollers            rc           v1                                     true         ReplicationController
resourcequotas                    quota        v1                                     true         ResourceQuota
secrets                                        v1                                     true         Secret
serviceaccounts                   sa           v1                                     true         ServiceAccount
services                          svc          v1                                     true         Service
mutatingwebhookconfigurations                  admissionregistration.k8s.io/v1        false        MutatingWebhookConfiguration
validatingwebhookconfigurations                admissionregistration.k8s.io/v1        false        ValidatingWebhookConfiguration
customresourcedefinitions         crd,crds     apiextensions.k8s.io/v1                false        CustomResourceDefinition
apiservices                                    apiregistration.k8s.io/v1              false        APIService
controllerrevisions                            apps/v1                                true         ControllerRevision
daemonsets                        ds           apps/v1                                true         DaemonSet
deployments                       deploy       apps/v1                                true         Deployment
replicasets                       rs           apps/v1                                true         ReplicaSet
statefulsets                      sts          apps/v1                                true         StatefulSet
tokenreviews                                   authentication.k8s.io/v1               false        TokenReview
localsubjectaccessreviews                      authorization.k8s.io/v1                true         LocalSubjectAccessReview
selfsubjectaccessreviews                       authorization.k8s.io/v1                false        SelfSubjectAccessReview
selfsubjectrulesreviews                        authorization.k8s.io/v1                false        SelfSubjectRulesReview
subjectaccessreviews                           authorization.k8s.io/v1                false        SubjectAccessReview
horizontalpodautoscalers          hpa          autoscaling/v2                         true         HorizontalPodAutoscaler
cronjobs                          cj           batch/v1                               true         CronJob
jobs                                           batch/v1                               true         Job
certificatesigningrequests        csr          certificates.k8s.io/v1                 false        CertificateSigningRequest
leases                                         coordination.k8s.io/v1                 true         Lease
endpointslices                                 discovery.k8s.io/v1                    true         EndpointSlice
events                            ev           events.k8s.io/v1                       true         Event
flowschemas                                    flowcontrol.apiserver.k8s.io/v1beta2   false        FlowSchema
prioritylevelconfigurations                    flowcontrol.apiserver.k8s.io/v1beta2   false        PriorityLevelConfiguration
ingressclasses                                 networking.k8s.io/v1                   false        IngressClass
ingresses                         ing          networking.k8s.io/v1                   true         Ingress
networkpolicies                   netpol       networking.k8s.io/v1                   true         NetworkPolicy
runtimeclasses                                 node.k8s.io/v1                         false        RuntimeClass
poddisruptionbudgets              pdb          policy/v1                              true         PodDisruptionBudget
clusterrolebindings                            rbac.authorization.k8s.io/v1           false        ClusterRoleBinding
clusterroles                                   rbac.authorization.k8s.io/v1           false        ClusterRole
rolebindings                                   rbac.authorization.k8s.io/v1           true         RoleBinding
roles                                          rbac.authorization.k8s.io/v1           true         Role
priorityclasses                   pc           scheduling.k8s.io/v1                   false        PriorityClass
csidrivers                                     storage.k8s.io/v1                      false        CSIDriver
csinodes                                       storage.k8s.io/v1                      false        CSINode
csistoragecapacities                           storage.k8s.io/v1                      true         CSIStorageCapacity
storageclasses                    sc           storage.k8s.io/v1                      false        StorageClass
volumeattachments                              storage.k8s.io/v1                      false        VolumeAttachment

Para obtener detalles de configuración específicos, consulta Receptor de objetos de Kubernetes.

Dado que el procesador usa la API de Kubernetes, necesitas el permiso correcto para funcionar correctamente. Dado que las cuentas de servicio son la única opción de autenticación, debes otorgarle a la cuenta de servicio el acceso adecuado. Para cualquier objeto que desees recopilar, asegúrate de que el nombre se agregue a la función del clúster. Por ejemplo, si deseas recopilar pods, la función del clúster se vería así:

---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: otel-collector-opentelemetry-collector
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: otel-collector-opentelemetry-collector
rules:
  - apiGroups:
      - ''
    resources:
      - pods
    verbs:
      - get
      - list
      - watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: otel-collector-opentelemetry-collector
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: otel-collector-opentelemetry-collector
subjects:
  - kind: ServiceAccount
    name: otel-collector-opentelemetry-collector
    namespace: default

Prometheus Receiver

Patrón de implementaciónUtilizable
DaemonSet (agent)Yes
Deployment (gateway)Yes
SidecarNo

Prometheus es un formato de métricas común tanto para Kubernetes como para los servicios que se ejecutan en Kubernetes. El receptor Prometheus es un reemplazo mínimo e inmediato para la recopilación de esas métricas. Admite el conjunto completo de opciones scrape_config de Prometheus.

Hay algunas funciones avanzadas de Prometheus que el receptor no admite. El receptor devuelve un error si el código/YAML de configuración contiene alguno de los siguientes elementos:

  • alert_config.alertmanagers
  • alert_config.relabel_configs
  • remote_read
  • remote_write
  • rule_files

Para conocer detalles de configuración específicos, consulta Receptor Prometheus.

El receptor Prometheus es Stateful, lo que significa que hay detalles importantes que se deben tener en cuenta al usarlo:

  • El recolector no puede escalar automáticamente el proceso de raspado cuando se ejecutan múltiples réplicas del recolector.
  • Cuando se ejecutan múltiples réplicas del recolector con la misma configuración, raspará los objetivos varias veces.
  • Los usuarios deben configurar cada réplica con una configuración de raspado diferente si desean fragmentar manualmente el proceso de raspado.

Para facilitar la configuración del receptor Prometheus, el operador OpenTelemetry incluye un componente opcional llamado Asignador de destino. Este componente se puede utilizar para indicarle a un recopilador qué puntos finales de Prometheus debe rastrear.

Para obtener más información sobre el diseño del receptor, consulta Diseño.

Receptor de métricas del host

Patrón de implementaciónUtilizable
DaemonSet (agente)Preferido
Deployment (gateway)Sí, pero solo recopila métricas del nodo en el que se implementa
SidecarNo

El receptor de métricas del host recopila métricas de un host mediante una variedad de scrapers. Existe cierta superposición con el receptor de Kubeletstats, por lo que si decides usar ambos, puede que valga la pena deshabilitar estas métricas duplicadas.

En Kubernetes, el receptor necesita acceso al volumen hostfs para funcionar correctamente. Si estás utilizando el gráfico Helm de OpenTelemetry Collector, usa el ajuste preestablecido hostMetrics para comenzar.

Los scrapers disponibles son:

ScraperSistemas operativos compatiblesDescripción
CPUTodos excepto Mac1Métricas de utilización de CPU
DiscoTodos excepto Mac1Métricas de E/S de disco
CargaTodosMétricas de carga de CPU
Sistema de archivosTodosMétricas de utilización del sistema de archivos
MemoriaTodosMétricas de utilización de memoria
RedTodosMétricas de E/S de interfaz de red y métricas de conexión TCP
PaginaciónTodosMétricas de E/S y utilización de espacio de intercambio/paginación
ProcesosLinux, MacMétricas de conteo de procesos
ProcesoLinux, Windows, MacMétricas de E/S de CPU, memoria y disco por proceso

No compatible con Mac cuando se compila sin cgo, que es el valor predeterminado para las imágenes publicadas por el SIG Collector.

Para obtener detalles específicos sobre qué métricas se recopilan y detalles de configuración específicos, consulta Receptor de métricas del host.

Si necesitas configurar el componente usted mismo, asegúrate de montar el volumen hostfs si quieres recopilar las métricas del nodo y no las del contenedor.

---
apiVersion: apps/v1
kind: DaemonSet
...
spec:
  ...
  template:
    ...
    spec:
      ...
      containers:
        - name: opentelemetry-collector
          ...
          volumeMounts:
            ...
            - name: hostfs
              mountPath: /hostfs
              readOnly: true
              mountPropagation: HostToContainer
      volumes:
        ...
        - name: hostfs
          hostPath:
            path: /
      ...

y luego configura el receptor de métricas de host para usar volumeMount:

receivers:
  hostmetrics:
    root_path: /hostfs
    collection_interval: 10s
    scrapers:
      cpu:
      load:
      memory:
      disk:
      filesystem:
      network:

Para obtener más detalles sobre el uso del receptor en un contenedor, consulta Recopilación de métricas del host desde dentro de un contenedor (solo Linux)