# Вступ до OpenTelemetry Java

> Вступ до екосистеми OpenTelemetry Java

---

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

---

OpenTelemetry Java — це набір інструментів спостереження OpenTelemetry для екосистеми Java. На високому рівні він складається з API, SDK та інструментів.

Ця сторінка представляє екосистему, з концептуальним [оглядом](#overview), керівництвом по [навігації по документації](#navigating-the-docs), списком [репозиторіїв](#repositories) з ключовими деталями про випуски та артефакти.

## Огляд {#overview}

API — це набір класів та інтерфейсів для запису телеметрії через ключові сигнали спостереження. Він підтримує кілька реалізацій, з невибагливим мінімалістичним no-op та SDK референсною реалізацією, що надається з коробки. Він призначений бути прямою залежністю для бібліотек, фреймворків та власників застосунків, які хочуть додати інструментування. Він має сильні гарантії зворотної сумісності, нульові транзитивні залежності та підтримує Java 8+.

SDK — це вбудована референсна реалізація API, яка обробляє та експортує телеметрію, створену викликами API інструментування. Налаштування SDK для належної обробки та експорту є важливим кроком для інтеграції OpenTelemetry у застосунок. SDK має автоконфігурацію та програмні опції конфігурації.

Інструментування записує телеметрію за допомогою API. Існує кілька категорій інструментування, включаючи: агент Java без коду, стартер Spring Boot без коду, бібліотеку, native, керівництво shim.

Для огляду, незалежного від мови, дивіться [концепції OpenTelemetry](/docs/concepts/).

## Навігація по документації {#navigating-the-docs}

Документація OpenTelemetry Java організована наступним чином:

- [Початок роботи на прикладі](../getting-started/): Приклад для швидкого старту з OpenTelemetry Java, демонструючи інтеграцію агента OpenTelemetry Java у простий вебзастосунок.
- [Екосистема інструментування](../instrumentation/): Керівництво по екосистемі інструментування OpenTelemetry Java. Це ключовий ресурс для авторів застосунків, які хочуть інтегрувати OpenTelemetry Java у свої застосунки. Дізнайтеся про різні категорії інструментування та виберіть, яка підходить вам.
- [Запис телеметрії за допомогою API](../api/): Технічний довідник по API OpenTelemetry, що досліджує всі ключові аспекти API з робочими прикладами коду. Більшість користувачів використовуватимуть цю сторінку як енциклопедію, звертаючись до індексу розділів за потреби, а не читаючи від початку до кінця.
- [Управління телеметрією за допомогою SDK](../sdk/): Технічний довідник по SDK OpenTelemetry, що досліджує всі точки розширення втулків SDK та програмний API конфігурації з робочими прикладами коду. Більшість користувачів використовуватимуть цю сторінку як енциклопедію, звертаючись до індексу розділів за потреби, а не читаючи від початку до кінця.
- [Налаштування SDK](../configuration/): Технічний довідник по налаштуванню SDK, зосереджуючись на автоконфігурації без коду. Включає довідник по всіх підтримуваних змінних середовища та системних властивостях для налаштування SDK. Досліджує всі програмні точки налаштування з робочими прикладами коду. Більшість користувачів використовуватимуть цю сторінку як енциклопедію, звертаючись до індексу розділів за потреби, а не читаючи від початку до кінця.
- **Дізнатися більше**: Додаткові ресурси, включаючи [приклади](../examples/), [Javadoc](../api/), компонент [реєстр](../registry/) та [довідник по продуктивності](/docs/zero-code/java/agent/performance/).

## Репозиторії {#repositories}

Вихідний код OpenTelemetry Java організований у кілька репозиторіїв:

| Репозиторій                                                                                                | Опис                                                                                           | Group ID                           | Поточна версія                       | Частота випусків                                                                                                                                     |
| ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------- | ------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| [opentelemetry-java](https://github.com/open-telemetry/opentelemetry-java)                                 | Основні компоненти API та SDK                                                                  | `io.opentelemetry`                 | `1.61.0`            | [Пʼятниця після першого понеділка місяця](https://github.com/open-telemetry/opentelemetry-java/blob/main/RELEASING.md#release-cadence)               |
| [opentelemetry-java-instrumentation](https://github.com/open-telemetry/opentelemetry-java-instrumentation) | Інструментування, підтримуване OpenTelemetry, включаючи агента OpenTelemetry Java              | `io.opentelemetry.instrumentation` | `2.26.1` | [Середа після другого понеділка місяця](https://github.com/open-telemetry/opentelemetry-java-instrumentation/blob/main/RELEASING.md#release-cadence) |
| [opentelemetry-java-contrib](https://github.com/open-telemetry/opentelemetry-java-contrib)                 | Компоненти, підтримувані спільнотою, які не входять до явного обсягу інших репозиторіїв        | `io.opentelemetry.contrib`         | `1.55.0`         | [Пʼятниця після другого понеділка місяця](https://github.com/open-telemetry/opentelemetry-java-contrib/blob/main/RELEASING.md#release-cadence)       |
| [semantic-conventions-java](https://github.com/open-telemetry/semantic-conventions-java)                   | Згенерований код для семантичних конвенцій                                                     | `io.opentelemetry.semconv`         | `1.40.0`         | Слідом за випусками [semantic-conventions](https://github.com/open-telemetry/semantic-conventions)                                                   |
| [opentelemetry-proto-java](https://github.com/open-telemetry/opentelemetry-proto-java)                     | Згенеровані привʼязки для OTLP                                                                 | `io.opentelemetry.proto`           | `1.3.2-alpha`                        | Слідом за випусками [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-proto)                                                     |
| [opentelemetry-java-examples](https://github.com/open-telemetry/opentelemetry-java-examples)               | Кінцеві приклади коду, що демонструють різні шаблони використання API, SDK та інструментування | н/д                                | н/д                                  | н/д                                                                                                                                                  |

`opentelemetry-java`, `opentelemetry-java-instrumentation` та `opentelemetry-java-contrib` кожен публікує великі каталоги артефактів. Будь ласка, зверніться до репозиторіїв для деталей, або дивіться колонку "Керовані залежності" у таблиці [Bill of Materials](#dependencies-and-boms) для повного списку керованих залежностей.

Як загальне правило, артефакти, опубліковані з одного репозиторію, мають однакову версію. Винятком є `opentelemetry-java-contrib`, який можна вважати групою незалежних проєктів, що співіснують в одному репозиторії для використання спільних інструментів. Наразі артефакти `opentelemetry-java-contrib` узгоджені, але це збіг і зміниться в майбутньому.

Репозиторії мають частоту випусків, яка відображає їхню високорівневу структуру залежностей:

- `opentelemetry-java` є ядром і випускається першим кожного місяця.
- `opentelemetry-java-instrumentation` залежить від `opentelemetry-java` і випускається наступним.
- `opentelemetry-java-contrib` залежить від `opentelemetry-java-instrumentation` та `opentelemetry-java` і випускається останнім.
- Хоча `semantic-conventions-java` є залежністю `opentelemetry-java-instrumentation`, це незалежний артефакт з незалежним графіком випусків.

## Залежності та BOMs {#dependencies-and-boms}

[Bill of materials](https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Bill_of_Materials_.28BOM.29_POMs), або BOM скорочено, це артефакт, який допомагає підтримувати версії повʼязаних залежностей узгодженими. OpenTelemetry Java публікує кілька BOMs, що відповідають різним випадкам використання, перелічених нижче в порядку зростання обсягу. Ми наполегливо рекомендуємо використовувати BOM.

> [!NOTE]
>
> Оскільки BOMs є ієрархічними, додавання залежностей до кількох BOMs не рекомендується, оскільки це є надлишковим і може призвести до неінтуїтивного вирішення версій залежностей.

Натисніть на посилання в колонці "Керовані залежності", щоб побачити список артефактів, керованих BOM.

| Опис                                                                                           | Репозиторій                          | Group ID                           | Artifact ID                               | Поточна версія                             | Керовані залежності                                       |
| ---------------------------------------------------------------------------------------------- | ------------------------------------ | ---------------------------------- | ----------------------------------------- | ------------------------------------------ | --------------------------------------------------------- |
| Стабільні артефакти ядра API та SDK                                                            | `opentelemetry-java`                 | `io.opentelemetry`                 | `opentelemetry-bom`                       | `1.61.0`                  | [latest pom.xml][opentelemetry-bom]                       |
| Експериментальні артефакти ядра API та SDK, включаючи всі `opentelemetry-bom`                  | `opentelemetry-java`                 | `io.opentelemetry`                 | `opentelemetry-bom-alpha`                 | `1.61.0-alpha`            | [latest pom.xml][opentelemetry-bom-alpha]                 |
| Стабільні артефакти інструментування, включаючи всі `opentelemetry-bom`                        | `opentelemetry-java-instrumentation` | `io.opentelemetry.instrumentation` | `opentelemetry-instrumentation-bom`       | `2.26.1`       | [latest pom.xml][opentelemetry-instrumentation-bom]       |
| Експериментальні артефакти інструментування, включаючи всі `opentelemetry-instrumentation-bom` | `opentelemetry-java-instrumentation` | `io.opentelemetry.instrumentation` | `opentelemetry-instrumentation-bom-alpha` | `2.26.1-alpha` | [latest pom.xml][opentelemetry-instrumentation-alpha-bom] |

Наступний фрагмент коду демонструє додавання залежності BOM, з`{{bomGroupId}}`, `{{bomArtifactId}}` та `{{bomVersion}}`, що відносяться до колонок таблиці "Group ID", "Artifact ID" та "Current Version", відповідно.

   <ul class="nav nav-tabs" id="tabs-8" role="tablist">
  <li class="nav-item">
      <button class="nav-link active"
          id="tabs-08-00-tab" data-bs-toggle="tab" data-bs-target="#tabs-08-00" role="tab"
          data-td-tp-persist="gradle" aria-controls="tabs-08-00" aria-selected="true">
        Gradle
      </button>
    </li><li class="nav-item">
      <button class="nav-link"
          id="tabs-08-01-tab" data-bs-toggle="tab" data-bs-target="#tabs-08-01" role="tab"
          data-td-tp-persist="maven" aria-controls="tabs-08-01" aria-selected="false">
        Maven
      </button>
    </li>
</ul>

<div class="tab-content" id="tabs-8-content">
    <div class="tab-body tab-pane fade show active"
        id="tabs-08-00" role="tabpanel" aria-labelled-by="tabs-08-00-tab" tabindex="8">
        <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-kotlin" data-lang="kotlin"><span class="line"><span class="cl"><span class="n">dependencies</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">  <span class="n">implementation</span><span class="p">(</span><span class="n">platform</span><span class="p">(</span><span class="s2">&#34;{{bomGroupId}}:{{bomArtifactId}}:{{bomVersion}}&#34;</span><span class="p">))</span>
</span></span><span class="line"><span class="cl">  <span class="c1">// Додайте залежність від артефакту, версія якого керується BOM
</span></span></span><span class="line"><span class="cl">  <span class="n">implementation</span><span class="p">(</span><span class="s2">&#34;io.opentelemetry:opentelemetry-api&#34;</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div>
    </div>
    <div class="tab-body tab-pane fade"
        id="tabs-08-01" role="tabpanel" aria-labelled-by="tabs-08-01-tab" tabindex="8">
        <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-xml" data-lang="xml"><span class="line"><span class="cl"><span class="nt">&lt;project&gt;</span>
</span></span><span class="line"><span class="cl">  <span class="nt">&lt;dependencyManagement&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&lt;dependencies&gt;</span>
</span></span><span class="line"><span class="cl">      <span class="nt">&lt;dependency&gt;</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&lt;groupId&gt;</span>{{bomGroupId}}<span class="nt">&lt;/groupId&gt;</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&lt;artifactId&gt;</span>{{bomArtifactId}}<span class="nt">&lt;/artifactId&gt;</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&lt;version&gt;</span>{{bomVersion}}<span class="nt">&lt;/version&gt;</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&lt;type&gt;</span>pom<span class="nt">&lt;/type&gt;</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&lt;scope&gt;</span>import<span class="nt">&lt;/scope&gt;</span>
</span></span><span class="line"><span class="cl">      <span class="nt">&lt;/dependency&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&lt;/dependencies&gt;</span>
</span></span><span class="line"><span class="cl">  <span class="nt">&lt;/dependencyManagement&gt;</span>
</span></span><span class="line"><span class="cl">  <span class="c">&lt;!-- Додайте залежність від артефакту, версія якого керується BOM --&gt;</span>
</span></span><span class="line"><span class="cl">  <span class="nt">&lt;dependencies&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&lt;dependency&gt;</span>
</span></span><span class="line"><span class="cl">      <span class="nt">&lt;groupId&gt;</span>io.opentelemetry<span class="nt">&lt;/groupId&gt;</span>
</span></span><span class="line"><span class="cl">      <span class="nt">&lt;artifactId&gt;</span>opentelemetry-api<span class="nt">&lt;/artifactId&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&lt;/dependency&gt;</span>
</span></span><span class="line"><span class="cl">  <span class="nt">&lt;/dependencies&gt;</span>
</span></span><span class="line"><span class="cl"><span class="nt">&lt;/project&gt;</span>
</span></span></code></pre></div>
    </div>
</div>


[opentelemetry-bom]: <https://repo1.maven.org/maven2/io/opentelemetry/opentelemetry-bom/1.61.0/opentelemetry-bom-1.61.0.pom>
[opentelemetry-bom-alpha]: <https://repo1.maven.org/maven2/io/opentelemetry/opentelemetry-bom-alpha/1.61.0-alpha/opentelemetry-bom-alpha-1.61.0-alpha.pom>
[opentelemetry-instrumentation-bom]: <https://repo1.maven.org/maven2/io/opentelemetry/instrumentation/opentelemetry-instrumentation-bom/2.26.1/opentelemetry-instrumentation-bom-2.26.1.pom>
[opentelemetry-instrumentation-alpha-bom]: <https://repo1.maven.org/maven2/io/opentelemetry/instrumentation/opentelemetry-instrumentation-bom-alpha/2.26.1-alpha/opentelemetry-instrumentation-bom-alpha-2.26.1-alpha.pom>
