Alibaba, Datadog і Quesma обʼєднують зусилля для інструменталізації Go під час компіляції
Blog posts are not updated after publication. This post is more than a year old, so its content may be outdated, and some links may be invalid. Cross-verify any information before relying on it.
Стандарти корисні лише тоді, коли їх широко впроваджують, а впровадження ефективне лише тоді, коли наявний інструментарій цьому сприяє. Уявіть собі, що одиниці SI навряд чи були б надто популярними на момент свого запровадження, якби вам доводилося будувати власні ваги, щоб зважувати в кілограмах!
Якщо ви використовуєте OpenTelemetry у Go, вам знайомі труднощі налаштування бібліотек інструменталізації для автоматичної генерації телеметрії з відомих компонентів з відкритим кодом. Через компільовану природу мови наразі у вас є два варіанти1:
- Скористайтеся окремим бінарним файлом, який аналізує ваш Go-процес і приєднує eBPF-програми до точок перехоплення у вашому застосунку — див. opentelemetry-go-instrumentation.
- Налаштуйте бібліотеки інструменталізації у своєму коді вручну; наприклад, див. Інструментування HTTP-сервера.
З різних причин можливо, що жоден із цих варіантів не є придатним або оптимальним у вашому середовищі. Однак усе от-от зміниться!
Галузева співпраця в основі відкритих стандартів
За останні кілька місяців OpenTelemetry отримала не одну, а дві пропозиції пожертв від лідерів галузі, щоб розвʼязати описану вище проблему та уможливити використання інструменталізації під час компіляції, що не потребує написання коду й не залежить від постачальника, у застосунках Go. Це:
- Пропозиція від Alibaba щодо opentelemetry-go-auto-instrumentation
- Пропозиція від Datadog щодо Orchestrion
Ми дуже вдячні Alibaba та Datadog за ці пропозиції. Це й далі демонструє зближення ширшої галузі зі стандартами, визначеними OpenTelemetry.
Інструменталізація під час компіляції використовує механізм -toolexec стандартного інструментарію Go, щоб переписувати вихідний код Go до того, як він потрапить до компілятора Go, додаючи інструменталізацію в усіх потрібних місцях (включно із залежностями та стандартною бібліотекою Go).
Найцікавіше в цьому оголошенні те, що «переможе» не рішення Alibaba чи Datadog. У справжньому дусі співпраці з відкритим кодом ці дві організації вирішили обʼєднати зусилля та виділити необхідні ресурси, щоб започаткувати нову робочу групу (SIG) з інструменталізації Go під час компіляції, маючи намір запропонувати єдиний, незалежний від постачальника підхід, який увібрав найкращі риси кожного рішення та приносить користь усій спільноті. Їх підтримають додатковими внесками від Quesma, яка додає досвід роботи над instrgen, початковим експериментальним підходом OpenTelemetry для надання інструменталізації Go під час компіляції на основі -toolexec, який буде замінено в межах початкових зусиль цієї робочої групи.
У довшій перспективі ця робоча група (SIG) зосередиться на:
- Розробці втулків або вдосконалень компілятора, які автоматично впроваджують код інструменталізації, забезпечуючи мінімальні накладні витрати продуктивності під час виконання та сумісність з наявними проєктами Go.
- Наданні стандартизованих шаблонів інструменталізації, узгоджених з OpenTelemetry та іншими фреймворками моніторингу.
Якщо ви хочете долучитися або просто дізнатися більше, ось корисна інформація про робочу групу (SIG):
- Репозиторій GitHub: opentelemetry-go-compile-instrumentation
- Канал CNCF Slack: #otel-go-compt-instr-sig
- Зустрічі: кожного другого четверга, UTC: 08:00 – 09:00 (підпишіться на цю групу Google, щоб отримувати запрошення в календарі, або прочитайте більше про наш календар спільноти)
Ми з нетерпінням чекаємо на початок роботи цієї нової робочої групи та не можемо дочекатися плодів цієї чудової співпраці!
Якщо тільки ви не хочете «збудувати власні ваги» або відповідник OTel, яким є ручне інструментування сторонніх бібліотек. ↩︎