Налаштування трейсингу за допомогою MeshConfig та анотацій Pod

Istio надає можливість налаштувати розширені параметри трейсингу, такі як швидкість вибірки та додавання власних теґів до відрізків (span).

Перед початком

  1. Переконайтеся, що ваші застосунки передають заголовки трейсингу, як описано тут.

  2. Слідуйте керівництву з установки трейсингу, яке розташоване в розділі Інтеграції відповідно до вашого вибраного бекенду трейсингу, щоб встановити відповідне програмне забезпечення та налаштувати ваші проксі Istio для надсилання трейсів на розгортання трейсингу.

Доступні конфігурації трейсингу

Ви можете налаштувати наступні параметри трейсингу в Istio:

  1. Випадкова швидкість вибірки для відсотка запитів, які будуть вибрані для генерації трейсів.

  2. Максимальна довжина шляху запиту після якої шлях буде обрізаний для звітування. Це може бути корисно для обмеження зберігання даних трейсів, особливо якщо ви збираєте трейси на вхідних шлюзах.

  3. Додавання власних теґів до відрізків. Ці теґи можуть бути додані на основі статичних літеральних значень, значень середовища або полів з заголовків запитів. Це може бути використано для введення додаткової інформації у відрізки, специфічні для вашого середовища.

Налаштувати параметри трейсингу можна двома способами:

  1. Глобально, за допомогою опцій MeshConfig.

  2. За допомогою анотацій на кожний pod для налаштування під конкретне робоче навантаження.

Установка

Використання цих функцій відкриває нові можливості для управління трейсами у вашому середовищі.

В цьому прикладі ми будемо вибирати всі трейси та додавати теґ з назвою clusterID за допомогою змінної середовища ISTIO_META_CLUSTER_ID, вставленої у ваш pod. Буде використано лише перші 256 символів значення.

$ cat <<EOF > ./tracing.yaml
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  meshConfig:
    enableTracing: true
    defaultConfig:
      tracing:
        sampling: 100.0
        max_path_tag_length: 256
        custom_tags:
          clusterID:
            environment:
              name: ISTIO_META_CLUSTER_ID
EOF
$ istioctl install -f ./tracing.yaml

Використання MeshConfig для налаштування трейсингу

Всі параметри трейсингу можуть бути налаштовані глобально через MeshConfig. Для спрощення конфігурації, рекомендовано створити один YAML файл, який можна передати команді istioctl install -f.

cat <<'EOF' > tracing.yaml
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  meshConfig:
    enableTracing: true
    defaultConfig:
      tracing:
        sampling: 10
        custom_tags:
          my_tag_header:
            header:
              name: host
EOF

Використання анотації proxy.istio.io/config для налаштування трейсингу

Ви можете додати анотацію proxy.istio.io/config до специфікації метаданих вашого Podʼа для перевизначення будь-яких мережевих налаштувань трейсингу. Наприклад, щоб змінити розгортання curl, яке постачається з Istio, ви додасте наступне до samples/curl/curl.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: curl
spec:
  ...
  template:
    metadata:
      ...
      annotations:
        ...
        proxy.istio.io/config: |
          tracing:
            sampling: 10
            custom_tags:
              my_tag_header:
                header:
                  name: host
    spec:
      ...

Налаштування

Налаштування вибірки трейсів

Опція швидкості вибірки може бути використана для контролю відсотка запитів, які повідомляються вашій системі трейсингу. Це повинно бути налаштоване залежно від вашого трафіку в мережі та кількості даних трейсингу, які ви хочете зібрати. Стандартно, швидкість вибірки становить 1%.

Щоб змінити стандартну випадкову вибірку на 50, додайте наступну опцію до вашого файлу tracing.yaml.

apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  meshConfig:
    enableTracing: true
    defaultConfig:
      tracing:
        sampling: 50

Швидкість вибірки повинна бути в межах від 0.0 до 100.0 з точністю 0.01. Наприклад, щоб трейсити 5 запитів з кожних 10000, використовуйте значення 0.05 тут.

Налаштування теґів трейсингу

Власні теґи можуть бути додані до відрізків (span) на основі літералів, змінних середовища та заголовків клієнтських запитів для надання додаткової інформації у відрізках, специфічних для вашого середовища.

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

  1. Літерал представляє статичне значення, яке додається до кожного відрізку.

    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    spec:
      meshConfig:
        enableTracing: true
        defaultConfig:
          tracing:
            custom_tags:
              my_tag_literal:
                literal:
                  value: <VALUE>
  2. Змінні середовища можуть бути використані, де значення власного теґу заповнюється з змінної середовища проксі робочого навантаження.

    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    spec:
      meshConfig:
        enableTracing: true
        defaultConfig:
          tracing:
            custom_tags:
              my_tag_env:
                environment:
                  name: <ENV_VARIABLE_NAME>
                  defaultValue: <VALUE>      # необовʼязково
  3. Опція заголовка клієнтського запиту може бути використана для заповнення значення теґу з вхідного заголовка клієнтського запиту.

    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    spec:
      meshConfig:
        enableTracing: true
        defaultConfig:
          tracing:
            custom_tags:
              my_tag_header:
                header:
                  name: <CLIENT-HEADER>
                  defaultValue: <VALUE>      # необовʼязково

Налаштування довжини теґів трейсингу

Стандартно, максимальна довжина шляху запиту, включеного як частина теґа HttpUrl, становить 256. Щоб змінити цю максимальну довжину, додайте наступне до вашого файлу tracing.yaml.

apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  meshConfig:
    enableTracing: true
    defaultConfig:
      tracing:
        max_path_tag_length: <VALUE>
Чи була ця інформація корисною?
Чи є у вас пропозиції щодо покращення?

Дякуємо за ваш відгук!