Устранение неполадок с инструментированием
При использовании инструментирования OpenTelemetry вы можете столкнуться с двумя основными типами проблем: проблемы с внедрением инструментирования в рабочие нагрузки и проблемы с генерацией телеметрических данных библиотеками инструментирования. В этом документе приведены методы устранения неполадок для обоих типов проблем.
Содержание
OverviewУстранение неполадок с внедрением инструментирования в вашу рабочую нагрузкуПроверка объекта InstrumentationПроверка init-контейнераПроверка порядка развертывания ресурсовПоиск ошибок в логах OperatorПроверка аннотаций подовПроверка внедрённых переменных окруженияПроверка библиотек инструментированияУстранение неполадок с генерацией телеметрических данных библиотеками инструментированияПроверка конфигурации endpointПроверка логов приложения на наличие ошибокПроверка получения данных Collector-омOverview
Устранение неполадок с инструментированием в первую очередь сосредоточено на следующих аспектах:
- Проблемы внедрения: успешно ли инструментирование внедряется в поды приложений
- Проблемы генерации данных: корректно ли библиотеки инструментирования генерируют и отправляют телеметрию
Устранение неполадок с внедрением инструментирования в вашу рабочую нагрузку
Если инструментирование не внедряется корректно в рабочие нагрузки, выполните следующие проверки для диагностики проблемы.
Проверка объекта Instrumentation
Сначала убедитесь, что объект Instrumentation был успешно создан:
Если вы не видите ожидаемый объект Instrumentation, проверьте:
- Был ли ресурс Instrumentation создан корректно
- Правильность указанного namespace
- Наличие сообщений об ошибках в логах Operator
Проверка init-контейнера
Убедитесь, что init-контейнер opentelemetry-auto-instrumentation успешно запустился:
Просмотрите подробную информацию о поде:
В выводе найдите раздел init-контейнера и подтвердите:
- Существует ли init-контейнер
- Завершился ли init-контейнер успешно
- Есть ли ошибки или предупреждения
Проверка порядка развертывания ресурсов
Убедитесь, что ресурсы развернуты в правильном порядке:
- Сначала разверните объект Instrumentation
- Затем разверните или перезапустите поды приложения
Если поды приложения были созданы до объекта Instrumentation, инструментирование не будет внедрено. Необходимо перезапустить поды:
Поиск ошибок в логах Operator
Проверьте логи Operator на наличие ошибок, связанных с инструментированием:
Распространённые ошибки включают:
- Ошибки валидации конфигурации
- Недостаточные права доступа
- Конфликты ресурсов
Проверка аннотаций подов
Убедитесь, что у подов приложения есть правильные аннотации для инструментирования:
Вы должны увидеть аннотации, похожие на следующие:
Если аннотации отсутствуют или некорректны:
- Проверьте конфигурацию аннотаций в Deployment или шаблоне Pod
- Убедитесь, что namespace аннотаций и тип языка указаны правильно
- Проверьте конфигурацию объекта Instrumentation
Проверка внедрённых переменных окружения
Убедитесь, что инструментирование корректно внедрило переменные окружения:
Вы должны увидеть переменные окружения, связанные с OpenTelemetry, например:
Проверка библиотек инструментирования
Проверьте, были ли библиотеки инструментирования корректно установлены в контейнере:
В этой директории должны находиться библиотеки инструментирования и связанные файлы.
Устранение неполадок с генерацией телеметрических данных библиотеками инструментирования
Если инструментирование было успешно внедрено, но не генерирует телеметрию, воспользуйтесь следующими методами для диагностики.
Проверка конфигурации endpoint
Убедитесь, что инструментирование отправляет данные на правильный endpoint:
Пример вывода
Если вывод команды пуст, endpoint экспортера может быть настроен через переменные окружения OpenTelemetry (например, OTEL_EXPORTER_OTLP_ENDPOINT). Проверьте переменные окружения, определённые в ресурсе Instrumentation:
По умолчанию endpoint — http://localhost:4317. Если вы используете кастомный endpoint Collector, убедитесь, что:
- Адрес endpoint указан правильно
- Сервис Collector доступен
- Конфигурация портов корректна (gRPC использует 4317, HTTP — 4318)
Проверка логов приложения на наличие ошибок
Проверьте логи приложения на наличие ошибок, связанных с инструментированием:
Ищите ошибки, связанные с OpenTelemetry, такие как:
- Ошибки подключения
- Ошибки аутентификации
- Ошибки конфигурации
- Ошибки загрузки библиотек
Проверка получения данных Collector-ом
Убедитесь, что Collector получает телеметрические данные:
Проверка логов Collector-а
Если Debug Exporter включён, вы должны видеть получаемые данные.
Проверка метрик Collector-а
Затем откройте http://localhost:8888/metrics и проверьте:
otelcol_receiver_accepted_spans: должно быть больше 0otelcol_receiver_refused_spans: должно быть 0 или очень мало