Чарт OpenTelemetry Collector
Вступ
OpenTelemetry Collector є важливим інструментом для моніторингу кластера Kubernetes та всіх сервісів у ньому. Для полегшення встановлення та управління розгортанням колектора в Kubernetes спільнота OpenTelemetry створила OpenTelemetry Collector Helm чарт. Цей helm чарт може бути використаний для встановлення колектора як Deployment, Daemonset або Statefulset.
Встановлення чарту
Щоб встановити chart з іменем релізу my-opentelemetry-collector, виконайте наступні команди:
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>
Конфігурація
OpenTelemetry Collector Chart вимагає встановлення параметра mode. mode може бути або daemonset, deployment, або statefulset залежно від того, який тип розгортання Kubernetes потрібен для вашого випадку використання.
Після встановлення chart надає кілька стандартних компонентів колектора для початку роботи. Стандартна конфігурація колектора виглядає так:
exporters:
# ПРИМІТКА: До v0.86.0 використовуйте `logging` замість `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
Чарт також відкриє порти на основі стандартних приймачів. Стандартну конфігурацію можна видалити, встановивши значення null у вашому values.yaml. Порти також можна відключити у values.yaml.
Ви можете додати/змінити будь-яку частину конфігурації, використовуючи розділ config у вашому values.yaml. При зміні конвеєра ви повинні явно вказати всі компоненти, які є в конвеєрі, включаючи будь-які стандартні компоненти.
Наприклад, щоб відключити конвеєри метрик і логів та не-otlp приймачі:
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
Усі варіанти конфігурації (з коментарями), доступні в чарті, можна переглянути у файлі values.yaml.
Пресети
Багато важливих компонентів, які використовує OpenTelemetry Collector для моніторингу Kubernetes, вимагають спеціального налаштування в самому розгортанні Kubernetes Collector. Щоб полегшити використання цих компонентів, OpenTelemetry Collector Chart постачається з деякими пресетами, які при включенні обробляють складне налаштування для цих важливих компонентів.
Пресети слід використовувати як відправну точку. Вони налаштовують базову, але багату функціональність для своїх повʼязаних компонентів. Якщо ваш випадок використання вимагає додаткової конфігурації цих компонентів, рекомендується НЕ використовувати пресет, а замість цього вручну налаштувати компонент і все, що йому потрібно (томи, RBAC тощо).
Пресет збору логів
OpenTelemetry Collector може бути використаний для збору логів, відправлених у стандартний вихід контейнерами Kubernetes.
Ця функція стандартно вимкнена. Вона має наступні вимоги для безпечного включення:
- Вимагає, щоб Filelog receiver був включений в образ Collector, такий як Contrib distribution of the Collector.
- Хоча це не є суворою вимогою, рекомендується використовувати цей пресет з
mode=daemonset.filelogreceiverзможе збирати логи лише на вузлі, де працює Collector, і кілька налаштованих Collectors на одному вузлі створять дубльовані дані.
Щоб увімкнути цю функцію, встановіть властивість presets.logsCollection.enabled у значення true. При включенні чарт додасть filelogreceiver до конвеєра logs. Цей приймач налаштований на читання файлів, де контейнерний runtime Kubernetes записує весь консольний вихід контейнерів (/var/log/pods/*/*/*.log).
Ось приклад values.yaml:
mode: daemonset
presets:
logsCollection:
enabled: true
Стандартний конвеєр логів чарта використовує debugexporter. У поєднанні з filelogreceiver пресета logsCollection легко випадково передати експортовані логи назад у колектор, що може викликати “вибух логів”.
Щоб запобігти зациклюванню, стандартна конфігурація приймача виключає власні логи колектора. Якщо ви хочете включити логи колектора, обовʼязково замініть експортер debug на експортер, який не відправляє логи на стандартний вихід колектора.
Ось приклад values.yaml, який замінює стандартний експортер debug у конвеєрі logs на експортер otlp_http, який відправляє логи контейнера на https://example.com:55681 endpoint. Він також використовує presets.logsCollection.includeCollectorLogs, щоб сказати пресету увімкнути збір логів колектора.
mode: daemonset
presets:
logsCollection:
enabled: true
includeCollectorLogs: true
config:
exporters:
otlp_http:
endpoint: https://example.com:55681
service:
pipelines:
logs:
exporters:
- otlp_http
Пресет атрибутів Kubernetes
OpenTelemetry Collector може бути налаштований для додавання метаданих Kubernetes, таких як k8s.pod.name, k8s.namespace.name та k8s.node.name, до логів, метрик та трас. Настійно рекомендується використовувати пресет або вручну увімкнути k8sattributesprocessor.
Через міркування RBAC ця функція стандартно вимкнена. Вона має наступні вимоги:
- Вимагає, щоб Kubernetes Attributes processor був включений в образ Collector, такий як Contrib distribution of the Collector.
Щоб увімкнути цю функцію, встановіть властивість presets.kubernetesAttributes.enabled у значення true. При включенні chart додасть необхідні ролі RBAC до ClusterRole і додасть k8sattributesprocessor до кожного увімкненого конвеєра.
Ось приклад values.yaml:
mode: daemonset
presets:
kubernetesAttributes:
enabled: true
Пресет метрик Kubelet
OpenTelemetry Collector може бути налаштований для збору метрик вузлів, podʼів та контейнерів з API сервера на kubelet.
Ця функція стандартно вимкнена. Вона має наступні вимоги:
- Вимагає, щоб Kubeletstats receiver був включений в образ Collector, такий як Contrib distribution of the Collector.
- Хоча це не є суворою вимогою, рекомендується використовувати цей пресет з
mode=daemonset.kubeletstatsreceiverзможе збирати метрики лише на вузлі, де працює Collector, і кілька налаштованих Collectors на одному вузлі створять дубльовані дані.
Щоб увімкнути цю функцію, встановіть властивість presets.kubeletMetrics.enabled у значення true. При включенні chart додасть необхідні ролі RBAC до ClusterRole і додасть kubeletstatsreceiver до конвеєра метрик.
Ось приклад values.yaml:
mode: daemonset
presets:
kubeletMetrics:
enabled: true
Пресет метрик кластера
OpenTelemetry Collector може бути налаштований для збору метрик рівня кластера з API сервера Kubernetes. Ці метрики включають багато метрик, зібраних Kube State Metrics.
Ця функція стандартно вимкнена. Вона має наступні вимоги:
- Вимагає, щоб Kubernetes Cluster receiver був включений в образ Collector, такий як Contrib distribution of the Collector.
- Хоча це не є суворою вимогою, рекомендується використовувати цей пресет з
mode=deploymentабоmode=statefulsetз однією реплікою. Запускk8sclusterreceiverна кількох Collectors створить дубльовані дані.
Щоб увімкнути цю функцію, встановіть властивість presets.clusterMetrics.enabled у значення true. При включенні чарт додасть необхідні ролі RBAC до ClusterRole і додасть k8sclusterreceiver до конвеєра метрик.
Ось приклад values.yaml:
mode: deployment
replicaCount: 1
presets:
clusterMetrics:
enabled: true
Пресет подій Kubernetes
OpenTelemetry Collector може бути налаштований для збору подій Kubernetes.
Ця функція стандартно вимкнена. Вона має наступні вимоги:
- Вимагає, щоб Kubernetes Objects receiver був включений в образ Collector, такий як Contrib distribution of the Collector.
- Хоча це не є суворою вимогою, рекомендується використовувати цей пресет з
mode=deploymentабоmode=statefulsetз однією реплікою. Запускk8sclusterreceiverна кількох Collectors створить дубльовані дані.
Щоб увімкнути цю функцію, встановіть властивість presets.kubernetesEvents.enabled у значення true. При включенні чарт додасть необхідні ролі RBAC до ClusterRole і додасть k8sobjectsreceiver до конвеєра логів, налаштованого на збір лише подій.
Ось приклад values.yaml:
mode: deployment
replicaCount: 1
presets:
kubernetesEvents:
enabled: true
Пресет метрик хосту
OpenTelemetry Collector може бути налаштований для збору метрик хосту з вузлів Kubernetes.
Ця функція стандартно вимкнена. Вона має наступні вимоги:
- Вимагає, щоб Host Metrics receiver був включений в образ Collector, такий як Contrib distribution of the Collector.
- Хоча це не є суворою вимогою, рекомендується використовувати цей пресет з
mode=daemonset.hostmetricsreceiverзможе збирати метрики лише на вузлі, де працює Collector, і кілька налаштованих Collectors на одному вузлі створять дубльовані дані.
Щоб увімкнути цю функцію, встановіть властивість presets.hostMetrics.enabled у значення true. При включенні чарт додасть необхідні томи та volumeMounts і додасть hostmetricsreceiver до конвеєра метрик. Стандартно метрики будуть збиратися кожні 10 секунд, і наступні скрепери будуть увімкнені:
- cpu
- load
- memory
- disk
- filesystem1
- network
Ось приклад values.yaml:
mode: daemonset
presets:
hostMetrics:
enabled: true
через деякий збіг з пресетом
kubeletMetricsдеякі типи файлових систем та точки монтування стандартно виключені. ↩︎
Відгук
Чи це було корисним?
Дякуємо. Ми цінуємо ваші відгуки!
Будь ласка, дайте нам знати як ми можемо покращити цю сторінку. Ми цінуємо ваші відгуки!