Налаштування трейсингу за допомогою Telemetry API
Istio надає можливість налаштувати розширені параметри трейсингу, такі як швидкість відбору і додавання власних теґів до звітів про відрізки (span). Це завдання показує, як налаштувати параметри трейсингу за допомогою Telemetry API.
Перед початком
Переконайтеся, що ваші застосунки пропагують заголовки трейсингу, як описано тут.
Дотримуйтесь посібника з установки трейсингу, розташованого в розділі Інтеграції, залежно від вашого вибраного бекенду трейсингу, щоб встановити відповідне програмне забезпечення та налаштувати постачальника розширення.
Установка
В цьому прикладі ми надсилатимемо трейси до zipkin
, тому переконайтеся, що він встановлений:
Налаштування постачальника розширення
Встановіть Istio з постачальником розширення, посилаючись на сервіс Zipkin:
$ cat <<EOF > ./tracing.yaml
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
meshConfig:
enableTracing: true
defaultConfig:
tracing: {} # відключіть застарілі параметри трейсингу MeshConfig
extensionProviders:
- name: "zipkin"
zipkin:
service: zipkin.istio-system.svc.cluster.local
port: 9411
EOF
$ istioctl install -f ./tracing.yaml --skip-confirmation
Увімкнення трейсингу
Увімкніть трейсинг, застосувавши наступну конфігурацію:
$ kubectl apply -f - <<EOF
apiVersion: telemetry.istio.io/v1
kind: Telemetry
metadata:
name: mesh-default
namespace: istio-system
spec:
tracing:
- providers:
- name: "zipkin"
EOF
Перевірка результатів
Ви можете перевірити результати за допомогою Zipkin UI.
Налаштування
Налаштування відбору трейсів
Параметр швидкості відбору можна використовувати для контролю відсотка запитів, які надсилаються до вашої системи трейсингу. Це потрібно налаштувати залежно від вашого трафіку в мережі та обсягу даних трейсингу, які ви хочете збирати. Стандартно швидкість відбору становить 1%.
$ kubectl apply -f - <<EOF
apiVersion: telemetry.istio.io/v1
kind: Telemetry
metadata:
name: mesh-default
namespace: istio-system
spec:
tracing:
- providers:
- name: "zipkin"
randomSamplingPercentage: 100.00
EOF
Налаштування теґів трейсингу
Власні теґи можуть бути додані до відрізків на основі літералів, змінних середовища та заголовків запитів клієнтів для надання додаткової інформації у відрізках, специфічних для вашого середовища.
Ви можете налаштувати теґи, використовуючи один з трьох підтримуваних варіантів нижче.
Літерал представляє статичне значення, яке додається до кожного відрізку.
apiVersion: telemetry.istio.io/v1 kind: Telemetry metadata: name: mesh-default namespace: istio-system spec: tracing: - providers: - name: "zipkin" randomSamplingPercentage: 100.00 customTags: "provider": literal: value: "zipkin"
Змінні середовища можна використовувати, де значення власного теґу заповнюється зі змінної середовища проксі навантаження.
apiVersion: telemetry.istio.io/v1 kind: Telemetry metadata: name: mesh-default namespace: istio-system spec: tracing: - providers: - name: "zipkin" randomSamplingPercentage: 100.00 customTags: "cluster_id": environment: name: ISTIO_META_CLUSTER_ID defaultValue: Kubernetes # необов'язково
Опція заголовків запитів клієнтів може бути використана для заповнення значення теґу з вхідного заголовка запиту клієнта.
apiVersion: telemetry.istio.io/v1 kind: Telemetry metadata: name: mesh-default namespace: istio-system spec: tracing: - providers: - name: "zipkin" randomSamplingPercentage: 100.00 customTags: 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: {} # відключіть застарілі параметри трейсингу через `MeshConfig`
extensionProviders:
- name: "zipkin"
zipkin:
service: zipkin.istio-system.svc.cluster.local
port: 9411
maxTagLength: <VALUE>