Что такое OpenTelemetry
Что проверяют
Понимаете ли вы, что OpenTelemetry это стандарт и набор SDK, а не система мониторинга, и как прикладывать его к мобильному приложению, где ограничены батарея, трафик и связь. Для Android-разработчика вопрос почти всегда про наблюдаемость клиента, а не про серверную часть.
Как отвечать
OpenTelemetry задаёт единый API, реализации SDK для языков, соглашения об именах атрибутов и протокол передачи OTLP. Сигналов три: трассировки, метрики и логи, плюс baggage для проброса контекста. Хранит и показывает данные всё равно бекенд, например Jaeger, Prometheus, Grafana или коммерческая платформа. Между приложением и бекендом обычно ставят Collector: он принимает OTLP, фильтрует, обогащает и раскладывает по приёмникам, позволяя менять бекенд без правки приложения.
На Android картина такая: SDK собирает спаны запуска, переходов между экранами, сетевых вызовов и ошибок, привязывает их к сессии и устройству, копит в буфере и отправляет пачками. Главная ценность в сквозной трассировке: клиент кладёт заголовок контекста в исходящий запрос, серверные спаны попадают в тот же след, и жалоба «у пользователей тормозит» превращается в конкретный участок.
Обязательно проговорите ограничения: отправка пачками и по возможности не на мобильной сети, буфер на диске при отсутствии связи, ограничение кардинальности атрибутов, отказ от персональных данных в атрибутах, сэмплирование на устройстве.
Где спотыкаются
Называют OpenTelemetry заменой системе мониторинга. Это интерфейс, соглашения и транспорт; хранилище, дашборды и оповещения нужно выбирать отдельно, и вопрос стоимости хранения телеметрии никуда не исчезает.
Переносят серверные привычки на клиент: отправляют каждый спан отдельным запросом, включают сплошное сэмплирование, пишут в атрибуты идентификатор пользователя. Получают расход батареи и трафика, который оплачивает пользователь, и метрики с кардинальностью, неподъёмной для хранилища.
Забывают про распространение контекста и получают две несвязанные картины, клиентскую и серверную. Без переданного заголовка след обрывается ровно на границе сети, а именно этот переход обычно и интересен при разборе медленных экранов.