# Параметри конфігурації OBI Network Metrics

> Дізнайтеся про параметри конфігурації, доступні для мережевих метрик OBI

---

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

---

Мережеві метрики налаштовуються в підрозділі `network` файлу [YAML-конфігурації OBI](../../configure/options/) або за допомогою набору змінних середовища з префіксом `OTEL_EBPF_NETWORK_`.

Приклад YAML:

```yaml
network:
  enable: true
  cidrs:
    - 10.10.0.0/24
    - 10.0.0.0/8
    - 10.30.0.0/16
attributes:
  kubernetes:
    enable: true
  select:
    obi_network_flow_bytes:
      include:
        - k8s.src.owner.name
        - k8s.src.namespace
        - k8s.dst.owner.name
        - k8s.dst.namespace
        - src.cidr
        - dst.cidr
otel_metrics_export:
  endpoint: http://localhost:4318
```

На додачу до розділу `network` YAML, конфігурація OBI вимагає наявності точки доступу для експорту мережевих метрик (в попередньому прикладі, `otel_metrics_export`, але вона також приймає [точки доступу Prometheus](../../configure/options/)).

## Властивості конфігурації мережевих метрик {#network-metrics-configuration-properties}

Щоб увімкнути мережеві метрики, додайте одну з наступних опцій `features` до розділу першого рівня [metrics section](../../configure/export-data/#metrics-export-features):

- `network` увімкне метрику `obi_network_flow_bytes`: кількість байтів між двома кінцевими точками вашого кластера
- `network_inter_zone` увімкне метрику `obi_network_inter_zone_bytes`: кількість байтів між різними зонами доступності у вашому хмарному кластері

> [!CAUTION]
>
> Специфікація `obi_network_inter_zone_bytes` наразі є експериментальною і доступна лише для кластерів Kubernetes. Специфікація не є остаточною, і майбутні версії OBI можуть ввести руйнівні зміни.

| YAML     | Змінна середовища          | Тип    | Стандартно      |
| -------- | -------------------------- | ------ | --------------- |
| `source` | `OTEL_EBPF_NETWORK_SOURCE` | string | `socket_filter` |

Вказує на функцію ядра Linux, яка використовується для отримання мережевих подій, про які повідомляє OBI.

Доступні параметри: `tc` та `socket_filter`.

Коли `tc` використовується як джерело подій, OBI використовує фільтри входу та виходу Linux Traffic Control для захоплення мережевих подій у режимі прямої дії. Цей режим джерела подій припускає, що жодні інші програми eBPF не підключаються до того ж інтерфейсу Linux Traffic Control у режимі прямої дії. Наприклад, Cilium Kubernetes CNI використовує той же підхід, тому, якщо у вас встановлено Cilium CNI у вашому кластері Kubernetes, налаштуйте OBI для захоплення мережевих подій за допомогою режиму `socket_filter`.

Коли `socket_filter` використовується як джерело подій, OBI встановлює фільтр сокетів eBPF Linux для захоплення мережевих подій. Цей режим не конфліктує з Cilium CNI або іншими програмами eBPF, які використовують фільтри виходу та входу Linux Traffic Control.

| YAML    | Змінна середовища         | Тип      | Стандартно |
| ------- | ------------------------- | -------- | ---------- |
| `cidrs` | `OTEL_EBPF_NETWORK_CIDRS` | []string | (empty)    |

Перелік CIDR, який буде встановлено як атрибути `src.cidr` та `dst.cidr` з відповідним записом, що відповідає `src.address` та `dst.address`.

Атрибут як функція IP-адрес джерела та призначення. Якщо IP-адреса не відповідає жодній адресі тут, атрибути не будуть встановлені. Якщо IP-адреса відповідає кільком визначенням CIDR, потік буде прикрашений найвужчим CIDR. В результаті ви можете безпечно додати запис `0.0.0.0/0`, щоб згрупувати весь трафік, який не відповідає жодному з інших CIDR.

Якщо ви встановите цю властивість через змінну середовища, кожен запис повинен бути розділений комою, наприклад:

```sh
OTEL_EBPF_NETWORK_CIDRS=10.0.0.0/8,192.168.0.0/16
```

| YAML       | Змінна середовища            | Тип    | Стандартно |
| ---------- | ---------------------------- | ------ | ---------- |
| `agent_ip` | `OTEL_EBPF_NETWORK_AGENT_IP` | string | (not set)  |

Дозволяє перевизначити атрибут `obi.ip`, що повідомляється в кожній метриці. Якщо не встановлено, OBI автоматично виявляє свою IP-адресу з вказаного мережевого інтерфейсу (див. наступну властивість).

| YAML             | Змінна середовища                  | Тип    | Стандартно |
| ---------------- | ---------------------------------- | ------ | ---------- |
| `agent_ip_iface` | `OTEL_EBPF_NETWORK_AGENT_IP_IFACE` | string | `external` |

Вказує, який інтерфейс OBI повинен використовувати для вибору своєї IP-адреси, щоб встановити значення атрибута `obi.ip`. Прийнятні значення: `external` (стандартно), `local` або `name:<імʼя інтерфейсу>` (наприклад, `name:eth0`).

Якщо властивість конфігурації `agent_ip` встановлена, ця властивість не має ефекту.

| YAML            | Змінна середовища | Тип    | Стандартно |
| --------------- | ----------------- | ------ | ---------- |
| `agent_ip_type` | `OTEL_EBPF`       | string | `any`      |

Вказує, який тип IP-адреси (IPv4 або IPv6 або обидва) OBI повинен повідомляти в полі `obi.ip` кожного потоку. Прийнятні значення: `any` (стандартно), `ipv4`, `ipv6`. Якщо властивість конфігурації `agent_ip` встановлена, ця властивість не має ефекту.

| YAML         | Змінна середовища              | Тип      | Стандартно |
| ------------ | ------------------------------ | -------- | ---------- |
| `interfaces` | `OTEL_EBPF_NETWORK_INTERFACES` | []string | (empty)    |

Назви інтерфейсів, з яких збираються потоки. Якщо порожньо, OBI отримує всі інтерфейси в системі, за винятком тих, що вказані в `excluded_interfaces` (див. нижче). Якщо запис обгорнутий слешами (наприклад, `/br-/`), він перевіряється як регулярний вираз, в іншому випадку він перевіряється як рядок з урахуванням регістру.

Якщо ви встановите цю властивість через змінну середовища, кожен запис повинен бути розділений комою, наприклад:

```sh
OTEL_EBPF_NETWORK_INTERFACES=eth0,eth1,/^veth/
```

| YAML                 | Змінна середовища                      | Тип      | Стандартно |
| -------------------- | -------------------------------------- | -------- | ---------- |
| `exclude_interfaces` | `OTEL_EBPF_NETWORK_EXCLUDE_INTERFACES` | []string | `lo`       |

Назви інтерфейсів, які потрібно виключити з трасування мережевих потоків. Стандартно: `lo` (loop-back). Якщо запис обгорнутий слешами (наприклад, `/br-/`), він перевіряється як регулярний вираз, в іншому випадку він перевіряється як рядок з урахуванням регістру.

Якщо ви встановите цю властивість через змінну середовища, кожен запис повинен бути розділений комою, наприклад:

```sh
OTEL_EBPF_NETWORK_EXCLUDE_INTERFACES=lo,/^veth/
```

| YAML        | Змінна середовища             | Тип      | Стандартно |
| ----------- | ----------------------------- | -------- | ---------- |
| `protocols` | `OTEL_EBPF_NETWORK_PROTOCOLS` | []string | (empty)    |

Якщо встановлено, OBI відкидає будь-який мережевий потік, який повідомляє про протокол Інтернету, що не входить до цього списку.

Прийнятні значення визначені в перерахуванні Linux [Стандартні добре визначені IP-протоколи](https://elixir.bootlin.com/linux/v6.8.7/source/include/uapi/linux/in.h#L28), і можуть бути: `TCP`, `UDP`, `IP`, `ICMP`, `IGMP`, `IPIP`, `EGP`, `PUP`, `IDP`, `TP`, `DCCP`, `IPV6`, `RSVP`, `GRE`, `ESP`, `AH`, `MTP`, `BEETPH`, `ENCAP`, `PIM`, `COMP`, `L2TP`, `SCTP`, `UDPLITE`, `MPLS`, `ETHERNET`, `RAW`

| YAML                | Змінна середовища                     | Тип      | Стандартно |
| ------------------- | ------------------------------------- | -------- | ---------- |
| `exclude_protocols` | `OTEL_EBPF_NETWORK_EXCLUDE_PROTOCOLS` | []string | (empty)    |

Якщо встановлено, OBI відкидає будь-який мережевий потік, який повідомляє про протокол Інтернету, що входить до цього списку.

Якщо список `protocols`/`OTEL_EBPF_NETWORK_PROTOCOLS` вже встановлений, ця властивість ігнорується.

Допустимі значення визначені в переліку Linux [Стандартні добре визначені IP-протоколи](https://elixir.bootlin.com/linux/v6.8.7/source/include/uapi/linux/in.h#L28), і можуть бути: `TCP`, `UDP`, `IP`, `ICMP`, `IGMP`, `IPIP`, `EGP`, `PUP`, `IDP`, `TP`, `DCCP`, `IPV6`, `RSVP`, `GRE`, `ESP`, `AH`, `MTP`, `BEETPH`, `ENCAP`, `PIM`, `COMP`, `L2TP`, `SCTP`, `UDPLITE`, `MPLS`, `ETHERNET`, `RAW`

| YAML              | Змінна середовища                   | Тип     | Стандартно |
| ----------------- | ----------------------------------- | ------- | ---------- |
| `cache_max_flows` | `OTEL_EBPF_NETWORK_CACHE_MAX_FLOWS` | integer | `5000`     |

Визначає, скільки потоків може бути накопичено в кеші обліку перед скиданням для подальшого експорту. Стандартне значення — 5000. Зменште його, якщо ви бачите помилку "отримане повідомлення більше за максимальне" в журналах OBI.

| YAML                   | Змінна середовища                        | Тип      | Стандартно |
| ---------------------- | ---------------------------------------- | -------- | ---------- |
| `cache_active_timeout` | `OTEL_EBPF_NETWORK_CACHE_ACTIVE_TIMEOUT` | duration | `5s`       |

Визначає максимальний час, протягом якого потоки зберігаються в кеші обліку перед скиданням для подальшого експорту.

| YAML        | Змінна середовища             | Тип    | Стандартно |
| ----------- | ----------------------------- | ------ | ---------- |
| `direction` | `OTEL_EBPF_NETWORK_DIRECTION` | string | `both`     |

Дозволяє вибрати, які потоки відстежувати відповідно до їхнього напрямку в інтерфейсі, з якого вони захоплюються. Прийнятні значення: `ingress`, `egress`, або `both` (стандартно).

> [!NOTE]
>
> У цьому контексті _ingress_ або _egress_ не повʼязані з вхідним/вихідним трафіком ззовні вузла або кластера, а з мережевим інтерфейсом. Це означає, що один і той же мережевий пакет може розглядатися як "ingress" у віртуальному мережевому пристрої та як "egress" у фізичному мережевому інтерфейсі.

| YAML       | Змінна середовища            | Тип     | Стандартно     |
| ---------- | ---------------------------- | ------- | -------------- |
| `sampling` | `OTEL_EBPF_NETWORK_SAMPLING` | integer | `0` (disabled) |

Частота, з якою пакети повинні бути вибірково захоплені та надіслані до цільового колектора. Наприклад, якщо встановлено 100, в середньому один з 100 пакетів надсилається до цільового колектора.

| YAML          | Змінна середовища               | Тип     | Стандартно |
| ------------- | ------------------------------- | ------- | ---------- |
| `print_flows` | `OTEL_EBPF_NETWORK_PRINT_FLOWS` | boolean | `false`    |

Якщо встановлено `true`, OBI виводить кожен мережевий потік на стандартний вихід. Зверніть увагу, що це може згенерувати велику кількість виходу.

| YAML          | Змінна середовища               | Тип    | Стандартно |
| ------------- | ------------------------------- | ------ | ---------- |
| `guess_ports` | `OTEL_EBPF_NETWORK_GUESS_PORTS` | string | `disable`  |

> [!IMPORTANT]
>
> У версії v0.7.0 вгадування портів мережі тепер **стандартно вимкнене**. Це є критичною зміною порівняно з версією v0.6.0 та попередніми версіями. Якщо ви залежите від виведених клієнтських/серверних портів для потоків, де OBI не може визначити ініціатора, `client.port` та `server.port` тепер можуть бути порожніми, якщо ви явно не ввімкнете вгадування за порядком.

Вказує, чи повинен OBI намагатися вгадати порти клієнта та сервера на основі порядкової евристики, коли ініціатора неможливо визначити за метаданими потоку. Це корисно для відстеження з’єднань із невідомими сервісами, де сам порт може допомогти ідентифікувати сервіс.

Прийнятні значення: `disable` (стандартно), `ordinal`.

Щоб знову ввімкнути вгадування портів на основі порядкової евристики, використовуйте:

```yaml
network:
  guess_ports: ordinal
```

Або через змінну середовища:

```sh
OTEL_EBPF_NETWORK_GUESS_PORTS=ordinal
```
