Gráfico de coleccionista de OpenTelemetry
Introducción
El OpenTelemetry Collector es una herramienta importante para supervisar un clúster de Kubernetes y todos los servicios que se encuentran en él. Para facilitar la instalación y la gestión de una implementación de recopiladores en una red Kubernetes la comunidad OpenTelemetry creó el OpenTelemetry Collector Helm Chart. Este gráfico de timón se puede utilizar para instalar un recopilador como Deployment, Daemonset, o Statefulset.
Instalación del gráfico
Para instalar el gráfico con el nombre de la versión
my-opentelemetry-collector
, ejecute el comandos siguientes:
helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts
helm install my-opentelemetry-collector open-telemetry/opentelemetry-collector \
--set image.repository="otel/opentelemetry-collector-k8s" \
--set mode=<daemonset|deployment|statefulset> \
Configuración
El gráfico de recopiladores de OpenTelemetry requiere que mode esté establecido. mode puede ser daemonset, deployment o statefulset dependiendo de qué tipo de La implementación de Kubernetes requiere su caso de uso.
Cuando se instala, el gráfico proporciona algunos componentes de recopilador predeterminados para obtener Empezó. De forma predeterminada, la configuración del recopilador tendrá el siguiente aspecto:
exporters:
# NOTA: Antes de v0.86.0, use el registro(login) en lugar de la depuración(debug).
debug: {}
extensions:
health_check: {}
processors:
batch: {}
memory_limiter:
check_interval: 5s
limit_percentage: 80
spike_limit_percentage: 25
receivers:
jaeger:
protocols:
grpc:
endpoint: ${env:MY_POD_IP}:14250
thrift_compact:
endpoint: ${env:MY_POD_IP}:6831
thrift_http:
endpoint: ${env:MY_POD_IP}:14268
otlp:
protocols:
grpc:
endpoint: ${env:MY_POD_IP}:4317
http:
endpoint: ${env:MY_POD_IP}:4318
prometheus:
config:
scrape_configs:
- job_name: opentelemetry-collector
scrape_interval: 10s
static_configs:
- targets:
- ${env:MY_POD_IP}:8888
zipkin:
endpoint: ${env:MY_POD_IP}:9411
service:
extensions:
- health_check
pipelines:
logs:
exporters:
- debug
processors:
- memory_limiter
- batch
receivers:
- otlp
metrics:
exporters:
- debug
processors:
- memory_limiter
- batch
receivers:
- otlp
- prometheus
traces:
exporters:
- debug
processors:
- memory_limiter
- batch
receivers:
- otlp
- jaeger
- zipkin
telemetry:
metrics:
address: ${env:MY_POD_IP}:8888
El gráfico también habilitará puertos basados en los receptores predeterminados. Predeterminado La configuración se puede eliminar estableciendo el valor en
null
en su values.yaml
. Los puertos también se pueden deshabilitar en
values.yaml
.
Puede agregar/modificar cualquier parte de la configuración utilizando la sección config
en Tus values.yaml
. Al cambiar una canalización, debe enumerar explícitamente todas las componentes que están en la canalización, incluidos los componentes predeterminados.
Por ejemplo, para deshabilitar las métricas y las canalizaciones de registro y los receptores no superiores:
config:
receivers:
jaeger: null
prometheus: null
zipkin: null
service:
pipelines:
traces:
receivers:
- otlp
metrics: null
logs: null
ports:
jaeger-compact:
enabled: false
jaeger-thrift:
enabled: false
jaeger-grpc:
enabled: false
zipkin:
enabled: false
Todas las opciones de configuración (con comentarios) disponibles en el gráfico pueden ser visto en su values.yaml file.
Ajustes preestablecidos
Muchos de los componentes importantes que el Colector de telemetría OpenTelemetry utiliza para monitorizar Kubernetes requiere una configuración especial en la propia implementación de Kubernetes del Coleccionista. Para facilitar el uso de estos componentes, el Colector de telemetría abierta El gráfico viene con algunos ajustes preestablecidos que, cuando están habilitados, manejan la configuración compleja para estos importantes componentes.
Los ajustes preestablecidos deben utilizarse como punto de partida. Configuran básico, pero rico, funcionalidad para sus componentes relacionados. Si su caso de uso requiere extra configuración de estos componentes se recomienda NO utilizar el ajuste preestablecido y en su lugar, configure manualmente el componente y cualquier cosa que requiera (volúmenes, RBAC, etc.).
Configuración preestablecida de la colección de registros
El Colector de telemetría OpenTelemetry se puede utilizar para recopilar los registros enviados a la salida estándar por contenedores Kubernetes.
Esta característica está deshabilitada de forma predeterminada. Tiene los siguientes requisitos en orden Para habilitar de forma segura:
- Requiere el Filelog receiver incluidos en la imagen del Coleccionista, como el Contrib distribution of the Collector.
- Aunque no es un requisito estricto, se recomienda que este ajuste preestablecido se utilice con
mode=daemonset
. Elfilelogreceiver
solo podrá recopilar registros en el nodo en el que se ejecuta el recopilador y varios recopiladores configurados en el El mismo nodo producirá datos duplicados
Para habilitar esta característica, establezca la propiedad
presets.logsCollection.enabled
en true
. Cuando está habilitado, el gráfico agregará un filelogreceiver
a los logs
tubería. Este receptor está configurado para leer los archivos donde Kubernetes Container Runtime escribe la salida de la consola de todos los contenedores (/var/log/pods/*/*/*.log
).
Aquí hay un ejemplo values.yaml
:
mode: daemonset
presets:
logsCollection:
enabled: true
La canalización de registros predeterminada del gráfico utiliza el
debugexporter
. Emparejado con el logsCollection
preset filelogreceiver
es fácil alimentar accidentalmente el exportó registros de nuevo en el recopilador, lo que puede causar una “explosión de registro”.
Para evitar el bucle, la configuración predeterminada del receptor excluye el Registros del propio coleccionista. Si desea incluir los registros del recopilador, asegúrese de Reemplace el exportador debug
por un exportador que
no envíe registros a Salida estándar del colector.
Aquí hay un ejemplo values.yaml
que reemplaza el exportador debug
predeterminado en La canalización logs
con un exportador otlphttp
que envía
los registros del contenedor a https://example.com:55681
punto final. También
utiliza presets.logsCollection.includeCollectorLogs
para indicar al preset que
habilite Colección de los registros del coleccionista.
mode: daemonset
presets:
logsCollection:
enabled: true
includeCollectorLogs: true
config:
exporters:
otlphttp:
endpoint: https://example.com:55681
service:
pipelines:
logs:
exporters:
- otlphttp
Atributos preestablecidos de Kubernetes
El recopilador de OpenTelemetry se puede configurar para agregar metadatos de
Kubernetes, como como k8s.pod.name
, k8s.namespace.name
y k8s.node.name
, a
los registros, métricas y rastros. Se recomienda encarecidamente utilizar el
ajuste preestablecido o habilitar el k8sattributesprocessor
manualmente.
Debido a consideraciones de RBAC, esta característica está deshabilitada de forma predeterminada. Tiene el los siguientes requisitos:
- Requiere el Kubernetes Attributes processor se incluirán en la imagen del Coleccionista, como el Contrib distribution of the Collector.
Para habilitar esta característica, establezca la propiedad
presets.kubernetesAttributes.enabled
a true
. Cuando está habilitado, el
gráfico agregará los roles RBAC necesarios al ClusterRole y agregará un
k8sattributesprocessor
a cada canalización habilitada.
Aquí hay un ejemplo values.yaml
:
mode: daemonset
presets:
kubernetesAttributes:
enabled: true
Métricas de Kubelet preestablecidas
El Colector de telemetría abierta se puede configurar para recopilar nodos, pods y métricas de contenedor del servidor API en un kubelet.
Esta característica está deshabilitada de forma predeterminada. Tiene los siguientes requisitos:
Requiere el Kubeletstats receiver se incluirán en la imagen del Coleccionista, como el
Aunque no es un requisito estricto, se recomienda que este ajuste preestablecido se utilice con
mode=daemonset
. Elkubeletstatsreceiver
solo podrá recoger métricas en el nodo en el que se está ejecutando el recopilador y múltiples configuraciones Los recopiladores del mismo nodo producirán datos duplicados.
Para habilitar esta característica, establezca la propiedad
presets.kubeletMetrics.enabled
en true
. Cuando está habilitado, el gráfico
agregará los roles RBAC necesarios al ClusterRole y agregará un
kubeletstatsreceiver
a la canalización de métricas.
Aquí hay un ejemplo values.yaml
:
mode: daemonset
presets:
kubeletMetrics:
enabled: true
Métricas de clúster preestablecidas
El recopilador de OpenTelemetry se puede configurar para recopilar métricas de nivel de clúster desde el servidor API de Kubernetes. Estas métricas incluyen muchas de ellas recopilado por Kube State Metrics.
Esta característica está deshabilitada de forma predeterminada. Tiene los siguientes requisitos:
- Requiere el Receptor de clúster de Kubernetes se incluirán en la imagen del Coleccionista, como el Distribución de Contrib del Coleccionista.
- Aunque no es un requisito estricto, se recomienda que este ajuste
preestablecido se utilice con
mode=deployment
omode=statefulset
con una única réplica. Correrk8sclusterreceiver
en varios colectores producirá datos duplicados.
Para habilitar esta característica, establezca la propiedad
presets.clusterMetrics.enabled
en verdadero
. Cuando está habilitado, el
gráfico agregará los roles RBAC necesarios al ClusterRole y agregará un
k8sclusterreceiver
a la canalización de métricas.
Aquí hay un ejemplo values.yaml
:
mode: deployment
replicaCount: 1
presets:
clusterMetrics:
enabled: true
Eventos preestablecidos de Kubernetes
El Colector de telemetría abierta se puede configurar para recopilar eventos de Kubernetes.
Esta característica está deshabilitada de forma predeterminada. Tiene los siguientes requisitos:
- Requiere el Receptor de objetos Kubernetes se incluirán en la imagen del Coleccionista, como el Distribución de Contrib del Coleccionista.
- Aunque no es un requisito estricto, se recomienda que este ajuste
preestablecido se utilice con
mode=deployment
omode=statefulset
con una única réplica. Correrk8sclusterreceiver
en varios colectores producirá datos duplicados.
Para habilitar esta característica, establezca la propiedad
presets.kubernetesEvents.enabled
en true
. Cuando está habilitado, el gráfico
agregará los roles RBAC necesarios al ClusterRole y agregará un
k8sobjectsreceiver
a la configuración de la canalización de registros a solo
eventos de recopilador.
Aquí hay un ejemplo values.yaml
:
mode: deployment
replicaCount: 1
presets:
kubernetesEvents:
enabled: true
Métricas de host preestablecidas
El recopilador de telemetría abierta se puede configurar para recopilar métricas de host desde Nodos de Kubernetes.
Esta característica está deshabilitada de forma predeterminada. Tiene los siguientes requisitos:
- Requiere el Host Metrics receiver se incluirán en la imagen del Coleccionista, como el Distribución de Contrib del Coleccionista.
- Aunque no es un requisito estricto, se recomienda que este ajuste
preestablecido se utilice con
mode=daemonset
. Elhostmetricsreceiver
solo podrá recolectar métricas en el nodo en el que se está ejecutando el recopilador y múltiples configuraciones Los recopiladores del mismo nodo producirán datos duplicados.
Para habilitar esta característica, establezca la propiedad
presets.hostMetrics.enabled
en verdadero
. Cuando está habilitado, el gráfico
agregará los volúmenes necesarios y volumeMounts y agregará un
hostmetricsReceiver
a la canalización de métricas. Métricas predeterminadas se
desguazarán cada 10 segundos y se habilitarán los siguientes desguazadores:
- CPU
- Cargar
- memoria
- disco
- sistema de archivos[^1]
- red
Aquí hay un ejemplo values.yaml
:
mode: daemonset
presets:
hostMetrics:
enabled: true
[^1] debido a alguna superposición con el preajuste kubeletMetrics
de algunos
tipos de sistema de archivos y los puntos de montaje se excluyen de forma
predeterminada.
Comentarios
¿Fue útil esta página?
Thank you. Your feedback is appreciated!
Please let us know how we can improve this page. Your feedback is appreciated!