# Глобальні властивості конфігурації OBI

> Налаштуйте глобальні властивості конфігурації, які застосовуються до ядра OBI.

---

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

---

OBI можна налаштувати через змінні середовища або через файл конфігурації YAML, переданий або з аргументом командного рядка `-config`, або через змінну середовища `OTEL_EBPF_CONFIG_PATH`. Змінні середовища мають пріоритет над властивостями у файлі конфігурації. Наприклад, у наступному рядку команди опція `OTEL_EBPF_LOG_LEVEL` перевизначає будь-які налаштування `log_level` всередині config.yaml:

**Аргумент конфігурації:**

```sh
OTEL_EBPF_LOG_LEVEL=debug obi -config /path/to/config.yaml
```

**Змінна середовища конфігурації:**

```sh
OTEL_EBPF_LOG_LEVEL=debug OTEL_EBPF_CONFIG_PATH=/path/to/config.yaml obi
```

Для шаблону конфігураційного файлу зверніться до [прикладу конфігураційного файлу YAML](../example/).

OBI складається з конвеєра компонентів, які генерують, перетворюють і експортують трейс з HTTP і gRPC застосунків. У YAML конфігурації кожен компонент має свій власний розділ першого рівня.

Додатково, OBI також надає метрики на рівні мережі, зверніться до [документації з мережевих метрик](../../network/) для отримання додаткової інформації.

Наступні розділи пояснюють глобальні властивості конфігурації, які застосовуються до всієї конфігурації OBI.

Наприклад:

```yaml
trace_printer: json
shutdown_timeout: 30s
channel_buffer_len: 33
```

| YAML<br>змінна середовища                          | Опис                                                                                                                                                           | Тип                        | Стандартно |
| -------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------- | ---------- |
| _(No YAML)_<br>`OTEL_EBPF_AUTO_TARGET_EXE`         | Вибирає процес для інструментування за допомогою [Glob](<https://en.wikipedia.org/wiki/Glob_(programming)>) відповідно до повного шляху до виконуваного файлу. | string                     | unset      |
| _(No YAML)_<br>`OTEL_EBPF_AUTO_TARGET_LANGUAGE`    | Вибирає процеси для інструментування за виявленою мовою програмування (glob matcher), наприклад `go`, `java` або `nodejs`.                                     | string                     | unset      |
| `open_port`<br>`OTEL_EBPF_OPEN_PORT`               | Вибирає процес для інструментування за відкритими портами. Приймає списки портів, розділені комами, і діапазони портів.                                        | string                     | unset      |
| `target_pids`<br>`OTEL_EBPF_TARGET_PID`            | Вибирає процеси для інструментування за PID. Приймає список YAML, одне значення або список змінних середовища, розділених комами.                              | integer або список integer | unset      |
| `shutdown_timeout`<br>`OTEL_EBPF_SHUTDOWN_TIMEOUT` | Встановлює тайм-аут для коректного завершення роботи                                                                                                           | string                     | "10s"      |
| `log_level`<br>`OTEL_EBPF_LOG_LEVEL`               | Встановлює рівень деталізації журналювання процесу. Дійсні значення: `DEBUG`, `INFO`, `WARN`, `ERROR`.                                                         | string                     | `INFO`     |
| `log_format`<br>`OTEL_EBPF_LOG_FORMAT`             | Встановлює формат виводу журналу. Дійсні значення: `text`, `json`.                                                                                             | string                     | `text`     |
| `trace_printer`<br>`OTEL_EBPF_TRACE_PRINTER`       | Виводить інструментовані трейс у стандартний вивід у вказаному форматі, див. [форматів виводу трейсів](#trace-printer-formats).                                | string                     | `disabled` |
| `enforce_sys_caps`<br>`OTEL_EBPF_ENFORCE_SYS_CAPS` | Керує тим, як OBI обробляє відсутні системні можливості під час запуску.                                                                                       | boolean                    | `false`    |

## Збіг імені виконуваного файлу {#executable-name-matching}

Ця властивість приймає [glob](<https://en.wikipedia.org/wiki/Glob_(programming)>) відповідно до повного командного рядка виконуваного файлу, включаючи теку, де виконуваний файл знаходиться в файловій системі. OBI вибирає один процес або кілька процесів з схожими характеристиками. Для отримання додаткової інформації про вибір процесів і групування зверніться до [документації з виявлення сервісів](../service-discovery/).

Коли ви інструментуєте за іменем виконуваного файлу, вибирайте однозначну назву, яка відповідає одному виконуваному файлу на цільовій системі. Наприклад, якщо ви встановите `OTEL_EBPF_AUTO_TARGET_EXE=*/server` і маєте два процеси, які відповідають Glob, OBI вибирає обидва. Натомість використовуйте повний шлях до застосунку для точного збігу, наприклад `OTEL_EBPF_AUTO_TARGET_EXE=/opt/app/server` або `OTEL_EBPF_AUTO_TARGET_EXE=/server`.

Якщо ви встановите як `OTEL_EBPF_AUTO_TARGET_EXE`, так і `OTEL_EBPF_OPEN_PORT` властивості, OBI вибирає лише виконувані файли, які відповідають обом критеріям вибору.

## Збіг мови {#language-matching}

Використовуйте `OTEL_EBPF_AUTO_TARGET_LANGUAGE`, щоб вибирати процеси на основі виявленого середовища виконання мови програмування.

Наприклад:

```shell
OTEL_EBPF_AUTO_TARGET_LANGUAGE=go
```

Ви також можете використовувати вираз glob:

```shell
OTEL_EBPF_AUTO_TARGET_LANGUAGE='java*'
```

Якщо ви поєднаєте цю опцію з `OTEL_EBPF_AUTO_TARGET_EXE` та/або
`OTEL_EBPF_OPEN_PORT`, процес повинен відповідати всім налаштованим селекторам.

## Зіставлення PID процесу {#target-pid-matching}

Використовуйте `target_pids` (YAML) або `OTEL_EBPF_TARGET_PID` (змінна середовища), щоб інструментувати лише конкретні ідентифікатори процесів.

Приклади YAML:

```yaml
target_pids: [1234, 5678]
```

```yaml
target_pids: 1234
```

Приклад змінної середовища:

```shell
OTEL_EBPF_TARGET_PID=1234,5678
```

Це корисно для цільового усунення несправностей та контрольованих випусків, де відомі точні ідентифікатори процесів.

## Зіставлення відкритих портів {#open-port-matching}

Ця властивість приймає списки портів, розділені комами, або діапазони портів. Якщо виконуваний файл відповідає будь-якому з портів, OBI вибирає його. Наприклад:

```shell
OTEL_EBPF_OPEN_PORT=80,443,8000-8999
```

В цьому прикладі OBI вибирає будь-який виконуваний файл, який відкриває порт `80`, `443` або будь-який порт між `8000` і `8999`. Він може вибрати один процес або кілька процесів з подібними характеристиками. Для отримання додаткової інформації про вибір процесів і групування зверніться до [документації з виявлення сервісів](../service-discovery/).

Якщо виконуваний файл відкриває кілька портів, вказівка одного з цих портів є достатньою для OBI, щоб інструментувати всі HTTP/S і gRPC запити на всіх портах застосунку. Наразі немає способу обмежити інструментування запитів на конкретному порту.

Якщо вказаний діапазон портів є широким, наприклад `1-65535`, OBI намагається виконати всі процеси, які володіють одним з портів у цьому діапазоні.

Якщо ви встановите як `OTEL_EBPF_AUTO_TARGET_EXE`, так і `OTEL_EBPF_OPEN_PORT` властивості, OBI вибирає лише виконувані файли, які відповідають обом критеріям вибору.

## Формати виводу трейсів {#trace-printer-formats}

Ця опція виводить будь-який інструментований трейс на стандартний вивід, використовуючи один з наступних форматів:

- **`disabled`**: Вимикає принтер
- **`text`**: Виводить стиснутий рядок тексту
- **`json`**: Виводить компактний обʼєкт JSON
- **`json_indent`**: Виводить відформатований обʼєкт JSON

## Системні можливості {#system-capabilities}

Якщо ви встановите `enforce_sys_caps` в true і необхідні системні можливості відсутні, OBI припиняє запуск і веде журнал відсутніх можливостей. Якщо ви встановите цю опцію в false, OBI лише веде журнал відсутніх можливостей.
