Интеграция Jaeger для Java-приложения с низкой задержкой

Большинство интеграций, с которыми я столкнулся, используют java-agent для отправки трассировок в центральный сборщик, и, в свою очередь, можно просматривать трассировки в Jaeger. Однако в моем случае я не могу использовать java-агент, поэтому я решил использовать пользовательский api трассировки, который кажется прекрасным, и для этого есть много примеров.

По своей конструкции мое приложение с низкой задержкой ограничивает меня от каких-либо подключений к внешним компонентам / портам, поэтому я также стараюсь избегать проталкивания трассировок / диапазонов к локальному агенту Jaeger или конечной точке сборщика, а лучше регистрировать трассировки через LogReporter.

Помимо этого, мне интересно, как построить конвейер для передачи журналов трассировки в Jaeger. Сами журналы находятся в AWS cloudwatch как потоки, поэтому я думаю, что если я использую Serveless Lambda для подписки и анализа этих событий журнала трассировки, я мог бы сам отправить их в Jaeger, используя, возможно, конечную точку HTTP /api/traces (не так много подробностей, но где-то читал, что это существует в какой-то форме).

На данный момент у меня вопрос: правильный ли это путь или есть лучший механизм для этого. Поскольку я понятия не имею, можно ли воспроизвести сами следы таким образом в Коллекционере. Также не уверен, какой формат принимает конечная точка, поскольку я не вижу много документации или примеров по этому поводу.

Моя цель состоит в том, чтобы мое приложение "не" подключалось к какой-либо внешней инфраструктуре мониторинга через push-события, поэтому, если есть лучший способ интеграции с Jaeger, я хотел бы услышать. Я также согласен, если какой-либо другой API в виде OpenTracing, OpenCensus или даже последняя версия OpenTelemetry могут помочь в этом.

Благодарность

1 ответ

Я не уверен, что то, что вы ищете, существует сегодня как таковое, но вы могли бы добиться этого с помощью OpenTelemetry, записав трассировки через LogReporter, а затем используя бессерверную функцию для чтения потока облачных наблюдений и отправки его в Jaeger (или в OpenTelemetry Коллектор, который отправляет их Jaeger). Вы также можете написать собственный плагин для OpenTelemetry Collector, который считывает поток облачных наблюдений в OTLP, а затем экспортирует его в любую конечную точку, поддерживаемую сборщиком.

Другие вопросы по тегам