SUPER_OLEG_DEV Telegram 213
Привет!

Одной из недавних больших задач была интеграция Opentelemetry в Tramvai - https://tramvai.dev/docs/features/monitoring/telemetry

Экосистема вокруг Opentelemetry очень развитая, крутая документация, есть SDK под разные ЯП, для Node.js множество интеграций под всевозможные фреймворки и встроенные модули.

Основной рекомендуемый подход к интеграции телеметрии - подключить авторинструментарий, который все сделает за нас, и настроить экспорт трейсов в коллектор.

Меня в этой экосистеме смутили несколько вещей:

Повсеместное использование синглтонов (не самый лучший паттерн для Node.js по ряду причин) - общие сущности составляющие ядро телеметрии (Trace, Context и тд) - создаются под капотом как глобальные переменные, хотя Async Local Storage позволяет легко этого избежать (и он уже используется для контекста).

С этим пришлось смириться, даже создавая свой экземпляр трейсера, ряд кейсов по другому не решить, надо использовать синглтоны trace / context.

Автоинструментарий особенно интересен:
- тянет несколько десятков модулей, в рантайме определяется какой из них использовать если стоит соответствующая либа и так далее (это конфигурируется)
- большая часть автоинструментария работает по принципу манкипатчинга - за исключением к примеру Fastify где есть конкретный механизм расширения, хуки
- множество бесполезных спанов - если брать Fastify, каждый хук оборачивается в спаны, зачем нам вся эта информация в трейсах?

Манкипатчинг в Node.js экосистеме для встроенных модулей - к сожалению наша реальность, хрупкая но единственная возможность мониторить к примеру исходящие запросы, dns lookups и так далее.

Тут отойду в сторону и отмечу что крутая инициатива Deno по встроенной телеметрии - https://docs.deno.com/runwww.tgoop.com/fundamentals/open_telemetry/

А также интересная архитектура в Undici которая расширяемая из коробки в отличие от http.request - https://blog.platformatic.dev/http-fundamentals-understanding-undici-and-its-working-mechanism

И автоинструментарий для Undici к примеру без манкипатчинга а слушает конкретные события, ссылка на исходники. Хотя тут интересно что события по сути отладочные, используется diagnostic_channel.
👍10🔥5



tgoop.com/super_oleg_dev/213
Create:
Last Update:

Привет!

Одной из недавних больших задач была интеграция Opentelemetry в Tramvai - https://tramvai.dev/docs/features/monitoring/telemetry

Экосистема вокруг Opentelemetry очень развитая, крутая документация, есть SDK под разные ЯП, для Node.js множество интеграций под всевозможные фреймворки и встроенные модули.

Основной рекомендуемый подход к интеграции телеметрии - подключить авторинструментарий, который все сделает за нас, и настроить экспорт трейсов в коллектор.

Меня в этой экосистеме смутили несколько вещей:

Повсеместное использование синглтонов (не самый лучший паттерн для Node.js по ряду причин) - общие сущности составляющие ядро телеметрии (Trace, Context и тд) - создаются под капотом как глобальные переменные, хотя Async Local Storage позволяет легко этого избежать (и он уже используется для контекста).

С этим пришлось смириться, даже создавая свой экземпляр трейсера, ряд кейсов по другому не решить, надо использовать синглтоны trace / context.

Автоинструментарий особенно интересен:
- тянет несколько десятков модулей, в рантайме определяется какой из них использовать если стоит соответствующая либа и так далее (это конфигурируется)
- большая часть автоинструментария работает по принципу манкипатчинга - за исключением к примеру Fastify где есть конкретный механизм расширения, хуки
- множество бесполезных спанов - если брать Fastify, каждый хук оборачивается в спаны, зачем нам вся эта информация в трейсах?

Манкипатчинг в Node.js экосистеме для встроенных модулей - к сожалению наша реальность, хрупкая но единственная возможность мониторить к примеру исходящие запросы, dns lookups и так далее.

Тут отойду в сторону и отмечу что крутая инициатива Deno по встроенной телеметрии - https://docs.deno.com/runwww.tgoop.com/fundamentals/open_telemetry/

А также интересная архитектура в Undici которая расширяемая из коробки в отличие от http.request - https://blog.platformatic.dev/http-fundamentals-understanding-undici-and-its-working-mechanism

И автоинструментарий для Undici к примеру без манкипатчинга а слушает конкретные события, ссылка на исходники. Хотя тут интересно что события по сути отладочные, используется diagnostic_channel.

BY SuperOleg dev notes


Share with your friend now:
tgoop.com/super_oleg_dev/213

View MORE
Open in Telegram


Telegram News

Date: |

Add the logo from your device. Adjust the visible area of your image. Congratulations! Now your Telegram channel has a face Click “Save”.! 2How to set up a Telegram channel? (A step-by-step tutorial) The SUCK Channel on Telegram, with a message saying some content has been removed by the police. Photo: Telegram screenshot. Telegram Android app: Open the chats list, click the menu icon and select “New Channel.” A few years ago, you had to use a special bot to run a poll on Telegram. Now you can easily do that yourself in two clicks. Hit the Menu icon and select “Create Poll.” Write your question and add up to 10 options. Running polls is a powerful strategy for getting feedback from your audience. If you’re considering the possibility of modifying your channel in any way, be sure to ask your subscribers’ opinions first.
from us


Telegram SuperOleg dev notes
FROM American