# Alibaba, Datadog і Quesma обʼєднують зусилля для інструменталізації Go під час компіляції

Site [llms.txt](/uk/llms.txt)

---

Стандарти корисні лише тоді, коли їх широко впроваджують, а впровадження ефективне лише тоді, коли наявний інструментарій цьому сприяє. Уявіть собі, що [одиниці SI](<https://uk.wikipedia.org/wiki/Міжнародна_система_одиниць_(SI)>) навряд чи були б надто популярними на момент свого запровадження, якби вам доводилося будувати власні ваги, щоб зважувати в кілограмах!

Якщо ви використовуєте [OpenTelemetry у Go](/docs/languages/go/), вам знайомі труднощі налаштування бібліотек інструменталізації для автоматичної генерації телеметрії з відомих компонентів з відкритим кодом. Через компільовану природу мови наразі у вас є два варіанти[^1]:

- Скористайтеся окремим бінарним файлом, який аналізує ваш Go-процес і приєднує eBPF-програми до точок перехоплення у вашому застосунку — див. [opentelemetry-go-instrumentation](https://github.com/open-telemetry/opentelemetry-go-instrumentation/).
- Налаштуйте бібліотеки інструменталізації у своєму коді вручну; наприклад, див. [Інструментування HTTP-сервера](/docs/languages/go/getting-started/#instrument-the-http-server).

З різних причин можливо, що жоден із цих варіантів не є придатним або оптимальним у вашому середовищі. Однак усе от-от зміниться!

## Галузева співпраця в основі відкритих стандартів {#industry-collaboration-at-the-heart-of-open-standards}

За останні кілька місяців OpenTelemetry отримала не одну, а дві пропозиції пожертв від лідерів галузі, щоб розвʼязати описану вище проблему та уможливити використання інструменталізації під час компіляції, що не потребує написання коду й не залежить від постачальника, у застосунках Go. Це:

- [Пропозиція](https://github.com/open-telemetry/community/issues/2344) від Alibaba щодо [opentelemetry-go-auto-instrumentation](https://github.com/alibaba/opentelemetry-go-auto-instrumentation)
- [Пропозиція](https://github.com/open-telemetry/community/issues/2497) від Datadog щодо [Orchestrion](https://github.com/datadog/orchestrion)

Ми дуже вдячні Alibaba та Datadog за ці пропозиції. Це й далі демонструє зближення ширшої галузі зі стандартами, визначеними OpenTelemetry.

Інструменталізація під час компіляції використовує механізм `-toolexec` стандартного інструментарію Go, щоб переписувати вихідний код Go до того, як він потрапить до компілятора Go, додаючи інструменталізацію в усіх потрібних місцях (включно із залежностями та стандартною бібліотекою Go).

Найцікавіше в цьому оголошенні те, що «переможе» не рішення Alibaba чи Datadog. У справжньому дусі співпраці з відкритим кодом ці дві організації вирішили обʼєднати зусилля та виділити необхідні ресурси, щоб започаткувати нову [робочу групу (SIG) з інструменталізації Go під час компіляції](https://github.com/open-telemetry/community/blob/c5047e230dcd918218de73a05ffdc52db158dc1a/projects/go-compile-instrumentation.md?from_branch=main), маючи намір запропонувати єдиний, незалежний від постачальника підхід, який увібрав найкращі риси кожного рішення та приносить користь усій спільноті. Їх підтримають додатковими внесками від Quesma, яка додає досвід роботи над [instrgen](https://github.com/open-telemetry/opentelemetry-go-contrib/blob/dafdad14b7858c7f491c8cb72e4bc7deaf9378e3/instrgen/README.md), початковим експериментальним підходом OpenTelemetry для надання інструменталізації Go під час компіляції на основі `-toolexec`, який буде замінено в межах початкових зусиль цієї робочої групи.

У довшій перспективі ця робоча група (SIG) зосередиться на:

- Розробці втулків або вдосконалень компілятора, які автоматично впроваджують код інструменталізації, забезпечуючи мінімальні накладні витрати продуктивності під час виконання та сумісність з наявними проєктами Go.
- Наданні стандартизованих шаблонів інструменталізації, узгоджених з OpenTelemetry та іншими фреймворками моніторингу.

Якщо ви хочете долучитися або просто дізнатися більше, ось корисна інформація про робочу групу (SIG):

- Репозиторій GitHub: [opentelemetry-go-compile-instrumentation](https://github.com/open-telemetry/opentelemetry-go-compile-instrumentation)
- Канал CNCF Slack: [#otel-go-compt-instr-sig](https://cloud-native.slack.com/archives/C088D8GSSSF)
- Зустрічі: кожного другого четверга, UTC: 08:00 – 09:00 (підпишіться на [цю групу Google](https://groups.google.com/a/opentelemetry.io/g/calendar-go), щоб отримувати запрошення в календарі, або прочитайте більше про [наш календар спільноти](https://github.com/open-telemetry/community/?tab=readme-ov-file#calendar))

Ми з нетерпінням чекаємо на початок роботи цієї нової робочої групи та не можемо дочекатися плодів цієї чудової співпраці!

[^1]: Якщо тільки ви не хочете «збудувати власні ваги» або відповідник OTel, яким є ручне інструментування сторонніх бібліотек.
