Управління
Цей документ описує, як ви можете керувати розгортанням OpenTelemetry Collector у масштабі.
Щоб отримати максимальну користь з цієї сторінки, ви повинні знати, як встановити та налаштувати колектор. Ці теми розглядаються в інших місцях:
- Швидкий старт, щоб зрозуміти, як встановити OpenTelemetry Collector.
- Конфігурація для налаштування OpenTelemetry Collector, налаштування конвеєрів телеметрії.
Основи
Збір телеметрії у масштабі вимагає структурованого підходу до управління агентами. Типові завдання управління агентами включають:
- Запит інформації та конфігурації агента. Інформація про агента може включати його версію, інформацію, повʼязану з операційною системою, або можливості. Конфігурація агента стосується його налаштування збору телеметрії, наприклад, конфігурації OpenTelemetry Collector.
- Оновлення/пониження версій агентів та управління пакетами, специфічними для агентів, включаючи базову функціональність агента та втулки.
- Застосування нових конфігурацій до агентів. Це може бути необхідно через зміни в середовищі або через зміни в політиці.
- Моніторинг справності та продуктивності агентів, зазвичай використання ЦП та памʼяті, а також специфічні для агентів метрики, наприклад, швидкість обробки або інформація, повʼязана зі зворотним тиском.
- Управління зʼєднанням між панеллю управління та агентом, наприклад, обробка сертифікатів TLS (відкликання та ротація).
Не кожен випадок використання вимагає підтримки всіх вищезазначених завдань управління агентами. У контексті OpenTelemetry завдання 4. Моніторинг справності та продуктивності ідеально виконується за допомогою OpenTelemetry.
OpAMP
Постачальники рішень для спостережуваності та хмарні провайдери пропонують власні рішення для управління агентами. У просторі відкритого коду для спостережуваності існує новий стандарт, який ви можете використовувати для управління агентами: Відкритий протокол управління агентами (Open Agent Management Protocol, OpAMP).
Специфікація OpAMP визначає, як керувати флотом агентів збору телеметричних даних. Ці агенти можуть бути OpenTelemetry collectors, Fluent Bit або іншими агентами в будь-якій довільній комбінації.
Примітка Термін “агент” тут використовується як загальний термін для компонентів OpenTelemetry, які відповідають OpAMP, це може бути колектор, але також і компоненти SDK.
OpAMP — це клієнт/серверний протокол, який підтримує звʼязок через HTTP та WebSockets:
- OpAMP сервер є частиною панелі управління та діє як оркестратор, керуючи флотом агентів телеметрії.
- OpAMP клієнт є частиною панелі даних. Клієнтська сторона OpAMP може бути реалізована в процесі, наприклад, як у випадку підтримки OpAMP в OpenTelemetry Collector. Клієнтська сторона OpAMP може бути реалізована поза процесом. Для цього останнього варіанту ви можете використовувати супервізор, який займається специфічним для OpAMP звʼязком з OpAMP сервером і одночасно контролює агента телеметрії, наприклад, для застосування конфігурації або оновлення. Зверніть увагу, що звʼязок супервізора/телеметрії не є частиною OpAMP.
Розгляньмо конкретне встановлення:
- OpenTelemetry Collector, налаштований з конвеєрами для:
- (A) отримання сигналів від низхідних джерел
- (B) експорту сигналів до висхідних пунктів призначення, потенційно включаючи телеметрію про сам колектор (представлену налаштуваннями зʼєднання OpAMP
own_xxx).
- Двосторонній потік керування OpAMP між панеллю управління, що реалізує серверну частину OpAMP, та колектором (або супервізором, що контролює колектор), що реалізує клієнтську частину OpAMP.
Спробуйте
Ви можете спробувати просте встановлення OpAMP самостійно, використовуючи реалізацію протоколу OpAMP на Go. Для наступного покрокового керівництва вам потрібно мати Go версії 1.22 або вище.
Ми налаштуємо просту панель управління OpAMP, що складається з прикладного OpAMP сервера, і дозволимо OpenTelemetry Collector приєднатися до неї через прикладного OpAMP супервізора.
Крок 1. Запустіть сервер OpAMP
Склонуйте репозиторій open-telemetry/opamp-go:
git clone https://github.com/open-telemetry/opamp-go.git
У теці ./opamp-go/internal/examples/server запустіть OpAMP сервер:
$ go run .
2025/04/20 15:10:35.307207 [MAIN] OpAMP Server starting...
2025/04/20 15:10:35.308201 [MAIN] OpAMP Server running...
Крок 2. Встановіть OpenTelemetry Collector
Нам потрібен бінарник OpenTelemetry Collector, яким зможе керувати OpAMP Supervisor. Для цього встановіть дистрибутив OpenTelemetry Collector Contrib. Шлях, куди ви встановили двійковий файл колектора, позначається як $OTEL_COLLECTOR_BINARY у наступній конфігурації.
Крок 3. Встановіть OpAMP Supervisor
Двійковий файл opampsupervisor доступний для завантаження з OpenTelemetry Collector випусків з теґами cmd/opampsupervisor. Ви знайдете список ресурсів, названих на основі ОС і чіпсету, тому завантажте той, який відповідає вашій конфігурації:
curl --proto '=https' --tlsv1.2 -fL -o opampsupervisor \
"https://github.com/open-telemetry/opentelemetry-collector-releases/releases/download/cmd%2Fopampsupervisor%2Fv0.139.0/opampsupervisor_0.139.0_linux_amd64"
chmod +x opampsupervisor
curl --proto '=https' --tlsv1.2 -fL -o opampsupervisor \
"https://github.com/open-telemetry/opentelemetry-collector-releases/releases/download/cmd%2Fopampsupervisor%2Fv0.139.0/opampsupervisor_0.139.0_linux_arm64"
chmod +x opampsupervisor
curl --proto '=https' --tlsv1.2 -fL -o opampsupervisor \
"https://github.com/open-telemetry/opentelemetry-collector-releases/releases/download/cmd%2Fopampsupervisor%2Fv0.139.0/opampsupervisor_0.139.0_linux_ppc64le"
chmod +x opampsupervisor
curl --proto '=https' --tlsv1.2 -fL -o opampsupervisor \
"https://github.com/open-telemetry/opentelemetry-collector-releases/releases/download/cmd%2Fopampsupervisor%2Fv0.139.0/opampsupervisor_0.139.0_darwin_amd64"
chmod +x opampsupervisor
curl --proto '=https' --tlsv1.2 -fL -o opampsupervisor \
"https://github.com/open-telemetry/opentelemetry-collector-releases/releases/download/cmd%2Fopampsupervisor%2Fv0.139.0/opampsupervisor_0.139.0_darwin_arm64"
chmod +x opampsupervisor
Invoke-WebRequest -Uri "https://github.com/open-telemetry/opentelemetry-collector-releases/releases/download/cmd%2Fopampsupervisor%2Fv0.139.0/opampsupervisor_0.139.0_windows_amd64.exe" -OutFile "opampsupervisor.exe"
Unblock-File -Path "opampsupervisor.exe"
Крок 4. Створіть конфігураційний файл OpAMP Supervisor
Створіть файл supervisor.yaml з наступним вмістом:
server:
endpoint: wss://127.0.0.1:4320/v1/opamp
tls:
insecure_skip_verify: true
capabilities:
accepts_remote_config: true
reports_effective_config: true
reports_own_metrics: false
reports_own_logs: true
reports_own_traces: false
reports_health: true
reports_remote_config: true
agent:
executable: $OTEL_COLLECTOR_BINARY
storage:
directory: ./storage
Переконайтеся, що ви замінили $OTEL_COLLECTOR_BINARY на справжній шлях до файлу. Наприклад, у Linux або macOS, якщо ви встановили колектор у /usr/local/bin/, вам слід замінити значення $OTEL_COLLECTOR_BINARY на /usr/local/bin/otelcol.
Крок 5. Запуск OpAMP Supervisor
Тепер настав час запустити супервізор, який, своєю чергою, запустить ваш OpenTelemetry Collector:
$ ./opampsupervisor --config=./supervisor.yaml
{"level":"info","ts":1745154644.746028,"logger":"supervisor","caller":"supervisor/supervisor.go:340","msg":"Supervisor starting","id":"01965352-9958-72da-905c-e40329c32c64"}
{"level":"info","ts":1745154644.74608,"logger":"supervisor","caller":"supervisor/supervisor.go:1086","msg":"No last received remote config found"}
Якщо все спрацювало, ви зможете перейти на http://localhost:4321/ і отримати доступ до інтерфейсу сервера OpAMP. Ви маєте побачити свій колектор у списку агентів, якими керує супервізор:

Крок 6. Налаштуйте OpenTelemetry Collector віддалено
Натисніть на Collector в інтерфейсі сервера і вставте наступний вміст у поле Додаткова конфігурація:
receivers:
hostmetrics:
collection_interval: 10s
scrapers:
cpu:
exporters:
# ПРИМІТКА: До версії v0.86.0 використовуйте `logging` замість `debug`.
debug:
verbosity: detailed
service:
pipelines:
metrics:
receivers: [hostmetrics]
exporters: [debug]
Натисніть Save and Send to Agent:

Перезавантажте сторінку і переконайтеся, що статус агента показує Up: true:

Ви можете запитати Колектор для отримання експортованих метрик (зверніть увагу на значення міток):
$ curl localhost:8888/metrics
# HELP otelcol_exporter_send_failed_metric_points Number of metric points in failed attempts to send to destination. [alpha]
# TYPE otelcol_exporter_send_failed_metric_points counter
otelcol_exporter_send_failed_metric_points{exporter="debug",service_instance_id="01965352-9958-72da-905c-e40329c32c64",service_name="otelcol-contrib",service_version="0.124.1"} 0
# HELP otelcol_exporter_sent_metric_points Number of metric points successfully sent to destination. [alpha]
# TYPE otelcol_exporter_sent_metric_points counter
otelcol_exporter_sent_metric_points{exporter="debug",service_instance_id="01965352-9958-72da-905c-e40329c32c64",service_name="otelcol-contrib",service_version="0.124.1"} 132
# HELP otelcol_process_cpu_seconds Total CPU user and system time in seconds [alpha]
# TYPE otelcol_process_cpu_seconds counter
otelcol_process_cpu_seconds{service_instance_id="01965352-9958-72da-905c-e40329c32c64",service_name="otelcol-contrib",service_version="0.124.1"} 0.127965
...
Ви також можете переглянути журнали Колектора:
$ cat ./storage/agent.log
{"level":"info","ts":"2025-04-20T15:11:12.996+0200","caller":"service@v0.124.0/service.go:199","msg":"Setting up own telemetry..."}
{"level":"info","ts":"2025-04-20T15:11:12.996+0200","caller":"builders/builders.go:26","msg":"Development component. May change in the future."}
{"level":"info","ts":"2025-04-20T15:11:12.997+0200","caller":"service@v0.124.0/service.go:266","msg":"Starting otelcol-contrib...","Version":"0.124.1","NumCPU":11}
{"level":"info","ts":"2025-04-20T15:11:12.997+0200","caller":"extensions/extensions.go:41","msg":"Starting extensions..."}
{"level":"info","ts":"2025-04-20T15:11:12.997+0200","caller":"extensions/extensions.go:45","msg":"Extension is starting..."}
{"level":"info","ts":"2025-04-20T15:11:13.022+0200","caller":"extensions/extensions.go:62","msg":"Extension started."}
{"level":"info","ts":"2025-04-20T15:11:13.022+0200","caller":"extensions/extensions.go:45","msg":"Extension is starting..."}
{"level":"info","ts":"2025-04-20T15:11:13.022+0200","caller":"healthcheckextension@v0.124.1/healthcheckextension.go:32","msg":"Starting health_check extension","config":{"Endpoint":"localhost:58760","TLSSetting":null,"CORS":null,"Auth":null,"MaxRequestBodySize":0,"IncludeMetadata":false,"ResponseHeaders":null,"CompressionAlgorithms":null,"ReadTimeout":0,"ReadHeaderTimeout":0,"WriteTimeout":0,"IdleTimeout":0,"Path":"/","ResponseBody":null,"CheckCollectorPipeline":{"Enabled":false,"Interval":"5m","ExporterFailureThreshold":5}}}
{"level":"info","ts":"2025-04-20T15:11:13.022+0200","caller":"extensions/extensions.go:62","msg":"Extension started."}
{"level":"info","ts":"2025-04-20T15:11:13.024+0200","caller":"healthcheck/handler.go:132","msg":"Health Check state change","status":"ready"}
{"level":"info","ts":"2025-04-20T15:11:13.024+0200","caller":"service@v0.124.0/service.go:289","msg":"Everything is ready. Begin running and processing data."}
{"level":"info","ts":"2025-04-20T15:11:14.025+0200","msg":"Metrics","resource metrics":1,"metrics":1,"data points":44}
Інша інформація
- Дописи в блозі:
- Відео на YouTube:
Відгук
Чи це було корисним?
Дякуємо. Ми цінуємо ваші відгуки!
Будь ласка, дайте нам знати як ми можемо покращити цю сторінку. Ми цінуємо ваші відгуки!