# Анонс v1 OpenTelemetry Go Compile-Time Instrumentation

LLMS index: [llms.txt](/llms.txt)

---

Якщо ви пишете на Java, Python, Node.js або .NET, ви вже давно можете додавати OpenTelemetry до застосунку без редагування його коду: приєднайте агент під час запуску, і телеметрія почне надходити. Go був винятком. Програма на Go компілюється в єдиний статичний бінарний файл без середовища виконання, до якого можна підʼєднатися під час запуску, тому розробникам Go доводилося виконувати інструментування вручну або використовувати зовнішній eBPF-агент.

Ця прогалина закривається. Спільнота OpenTelemetry оголошує про перший стабільний реліз [OpenTelemetry Go Compile-Time Instrumentation](https://github.com/open-telemetry/opentelemetry-go-compile-instrumentation). Коли ми [анонсували цю SIG](/blog/2025/go-compile-time-instrumentation/) на початку 2025 року, Alibaba та Datadog обʼєднали зусилля, щоб створити єдиний, незалежний від постачальників спосіб інструментування Go під час збірки. v1 — це перший стабільний реліз цього проєкту.

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

## Що таке Go Compile-Time Instrumentation? {#what-is-go-compile-time-instrumentation}

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

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

## Ключові можливості у v1 {#key-capabilities-in-v1}

- **Zero-code інструментування**: інструментування застосунку та його залежностей без ручних змін коду.
- **Впровадження під час компіляції, без додаткових накладних витрат під час виконання**: інструментування вбудовується в бінарний файл замість приєднання під час виконання.
- **Покриття сторонніх бібліотек та стандартної бібліотеки**: інструментування залежностей та пакунків стандартної бібліотеки, які вам не належать.
- **Підтримувані інструментування у v1**: поширені бібліотеки та фреймворки, включаючи `net/http`, `database/sql`, gRPC, Redis та метрики середовища виконання Go, з регулярним додаванням нових. Дивіться [підтримувані бібліотеки](/docs/zero-code/go/compile-time/supported-libraries/) для повного актуального списку.
- **Правила та розширюваність**: додавайте підтримку нових бібліотек через формат правил інструментування SIG. Дивіться [посібник з інструментування](https://github.com/open-telemetry/opentelemetry-go-compile-instrumentation/blob/v1.0.0/docs/instrument-guide.md) та [довідник правил](https://github.com/open-telemetry/opentelemetry-go-compile-instrumentation/blob/v1.0.0/docs/rules.md).
- **Відповідність семантичним домовленостям**: телеметрія відповідає поточним семантичним домовленостям OpenTelemetry.
- **Сумісність з CI/CD**: запускайте інструмент під час розробки або додайте його у свій конвеєр збірки.

## Початок роботи {#getting-started}

Проєкт постачає інструмент командного рядка з назвою `otelc`, який обгортає стандартний інструментарій Go. Зміна у вашій збірці — один рядок: запустіть `otelc go build` там, де ви раніше запускали `go build`. Усе після `go` передається інструментарію, тому решта вашої збірки залишається без змін, і та ж сама заміна працює в контейнерній збірці. Зазвичай `otelc` виявляє підтримувані бібліотеки у вашому модулі та інструментує їх автоматично, без конфігурації та змін коду.

Щоб встановити `otelc`, зібрати через нього ваш застосунок та побачити телеметрію, яку він продукує, дотримуйтесь [посібника з початку роботи](/docs/zero-code/go/compile-time/getting-started/). Про все інше, конфігурацію, підтримувані бібліотеки та усунення несправностей, — дивіться в [документації compile-time інструментування](/docs/zero-code/go/compile-time/).

## Коли варто це використовувати? {#when-should-you-use-it}

Якщо ви пишете або експлуатуєте Go-сервіси, у вас тепер є три взаємодоповнюючі способи отримати телеметрію OpenTelemetry, і compile-time інструментування — це третій варіант, обіцяний у початковому дописі:

- **Compile-time інструментування (цей проєкт)**: найкраще, коли ви можете перебудувати застосунок і не хочете змін коду, додаткових накладних витрат під час виконання та прагнете покриття залежностей та стандартної бібліотеки.
- **eBPF інструментування ([OpenTelemetry eBPF Instrumentation, або OBI](/docs/zero-code/obi/))**: найкраще, коли ви не можете перебудувати бінарний файл або хочете zero-code, багатомовне інструментування ззовні процесу.
- **Ручне інструментування з [OpenTelemetry Go API](/docs/languages/go/)**: найкраще для власних відрізків та доменно-специфічної телеметрії, і воно поєднується з двома іншими.

v1 постачає сфокусований набір інструментувань, а не всю широту екосистеми Go, і покриття зростатиме з кожним релізом. Якщо бібліотеки, від яких ви залежите, ще не покриті, ви можете додати правило для неї або поєднати compile-time інструментування з ручними відрізками. Три підходи вирішують проблеми, що перетинаються різними способами, тому ми працюємо з OBI та Go SIG над наступними дописами, які порівнюють їх більш детально.

## Що далі {#what-comes-next}

v1 покриває основу підходу compile-time. Наші подальші пріоритети:

- **Більше інструментувань**: розширення покриття популярних Go бібліотек та фреймворків, щоб більше застосунків працювали одразу після заміни на `otelc`.
- **Виявлення через реєстр**: використання поточного [OpenTelemetry Registry](/ecosystem/registry/) для виявлення та розповсюдження інструментувань, щоб ви могли отримувати підтримку нових бібліотек без очікування нового релізу `otelc`.
- **Продуктивність**: продовження зниження вартості як під час збірки, так і під час виконання.
- **Впровадження та обізнаність**: інвестиції в документацію, приклади та інформаційні матеріали, щоб команди знали, що інструмент існує та як вбудувати його у свою збірку.

## Долучайтеся {#get-involved}

Compile-time інструментування — це v1, і найкращий спосіб вплинути на те, куди воно рухатиметься далі — це використовувати його та долучитися.

- **Спробуйте і розкажіть нам, як воно.** Додайте `otelc` до збірки та поділіться тим, що спрацювало, а що ні, у [GitHub discussions та issues](https://github.com/open-telemetry/opentelemetry-go-compile-instrumentation) проєкту. Реальний досвід визначає roadmap.
- **Інструментуйте бібліотеку, яку ви використовуєте.** Покриття зростає через формат правил SIG; [посібник з інструментування](https://github.com/open-telemetry/opentelemetry-go-compile-instrumentation/blob/v1.0.0/docs/instrument-guide.md) проводить через додавання одного.
- **Приєднуйтеся до SIG.** Знаходьте нас у [#otel-go-compile-instrumentation](https://cloud-native.slack.com/archives/C088D8GSSSF) у CNCF Slack та на наших SIG зустрічах.

## Подяки {#acknowledgments}

Досягнення v1 — це віха для всієї Go Compile-Time Instrumentation SIG. Дякуємо супроводжувачам, які довели реліз до стабільної версії: [Xabier Martinez](https://github.com/txabman42) (Cabify), [Yi Yang](https://github.com/y1yang0) (Alibaba), [Haibin Zhang](https://github.com/NameHaibinZhang) (Alibaba) та [Dario Castañé](https://github.com/darccio) (Datadog), а також усім, хто зробив внесок у код, правила, документацію та зворотний звʼязок.

Особлива подяка [Azhar Momin](https://github.com/amazingakai), який приєднався до проєкту через [LFX Mentorship program](https://mentorship.lfx.linuxfoundation.org/project/3e530f5c-12f3-4321-836a-39de799a4d15) і став одним з найактивніших контрибʼюторів та затверджувачем.
