Трассировка OpenTelemetry
Поддержка трассировки OpenTelemetry является экспериментальной и может измениться в будущих выпусках.
В OpenTofu 1.10.0 добавлена поддержка трассировки OpenTelemetry (OTel), обеспечивающая видимость внутренних операций OpenTofu. Эта функция помогает выявлять проблемы производительности, понимать ход выполнения операций и оптимизировать рабочие процессы управления инфраструктурой.
Конфиденциальность и безопасность
При разработке трассировки в OpenTofu конфиденциальность поставлена во главу угла:
- Только по желанию пользователя: трассировка по умолчанию полностью отключена
- Только локально: данные телеметрии не отправляются в OpenTofu или какие-либо внешние службы, если вы явно не настроите это
- Ваша инфраструктура: вы сами определяете, куда отправлять трассировки, используя стандартную конфигурацию OpenTelemetry
- Без накладных расходов: когда трассировка отключена, она не влияет на производительность
Как подчеркивает команда OpenTofu: «Хотя эта функция основана на проекте под названием OpenTelemetry, мы добавляем ее поддержку специально для того, чтобы вы могли трассировать свое приложение с помощью своих инструментов в своей инфраструктуре». Эта функция не предназначена для сбора данных об особенностях использования OpenTofu или поведении пользователей для самого проекта OpenTofu.
Краткое руководство
1. Настройте серверную часть трассировки
Проще всего начать с Jaeger — платформы распределенной трассировки с открытым исходным кодом:
docker run -d --rm --name jaeger \ -p 16686:16686 \ -p 4317:4317 \ -p 4318:4318 \ jaegertracing/jaeger:latest
2. Настройте OpenTofu
Включите трассировку, задав следующие переменные среды:
# Enable OTLP trace exporter export OTEL_TRACES_EXPORTER=otlp # Point to your Jaeger instance export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317 # Required for local development (skip TLS verification) export OTEL_EXPORTER_OTLP_INSECURE=true
3. Выполните команды OpenTofu
Теперь любая команда OpenTofu будет создавать трассировки:
tofu init # Traces provider downloads tofu plan # Traces planning operations tofu apply # Traces apply workflow
4. Просмотрите трассировки
Откройте браузер и перейдите по адресу http://localhost:16686, чтобы открыть интерфейс Jaeger. Вы увидите подробные трассировки операций OpenTofu.
Параметры конфигурации
Для настройки OpenTofu поддерживает стандартные переменные среды OpenTelemetry:
Основная конфигурация
| Переменная | Описание | Пример |
|---|---|---|
OTEL_TRACES_EXPORTER |
Для включения трассировки необходимо задать значение otlp |
otlp |
OTEL_EXPORTER_OTLP_ENDPOINT |
URL конечной точки OTLP | http://localhost:4317 |
OTEL_EXPORTER_OTLP_INSECURE |
Пропускать проверку TLS |
true для локальной разработки |
Поддерживаются и другие параметры конфигурации OTLP. Подробную информацию см. в документации OpenTelemetry.
В этой экспериментальной реализации при включенной трассировке OpenTofu всегда собирает 100% трассировок. Настройка выборки в настоящее время не поддерживается.
Интеграция с платформами наблюдаемости
Jaeger отлично подходит для начала работы, но поддержка OpenTelemetry в OpenTofu совместима с любой серверной частью, поддерживающей OTLP, например Grafana Tempo, AWS X-Ray или Datadog.
Варианты использования
Выявление причин медленного выполнения операций
Трассировка помогает выявлять узкие места в рабочих процессах OpenTofu:
- Загрузка каких провайдеров занимает больше всего времени?
- Сколько времени занимает планирование и применение каждого ресурса?
- На что уходит время во время инициализации?
Оптимизация конвейеров CI/CD
В средах непрерывной интеграции трассировка помогает выявить:
- Конфликты параллельных операций
- Эффективность кэширования
- Проблемы с задержками сети
- Проблемы с конкуренцией за блокировки
Развертывания в нескольких средах
Для сложных развертываний в разных регионах или средах:
- Сравнивайте производительность разных серверных частей
- Выявляйте задержки, характерные для конкретного региона
- Отслеживайте влияние обновления версий провайдеров
Дальнейшая разработка
Эта экспериментальная функция активно разрабатывается. Команда OpenTofu особенно заинтересована в отзывах о следующем:
- Какие дополнительные операции следует трассировать
- Влияние на производительность в реальных сценариях
- Опыт интеграции с различными серверными частями
- Конкретные варианты использования, для которых полезна трассировка
Пожалуйста, оставляйте отзывы в обсуждениях на GitHub или в сообществе OpenTofu в Slack.
Copyright (c) The OpenTofu Authors
Copyright (c) 2014 HashiCorp, Inc.
Mozilla Public License, version 2.0
https://opentofu.org/docs/v1.10/internals/tracing/