istio.io/content/uk/docs/tasks/observability/metrics/customize-metrics/index.md

7.1 KiB
Raw Blame History

title description weight keywords owner test
Налаштування метрик Istio Це завдання показує, як налаштувати метрики Istio. 25
telemetry
metrics
customize
istio/wg-policies-and-telemetry-maintainers yes

Це завдання показує, як налаштувати метрики, які генерує Istio.

Istio генерує телеметрію, яку різні інформаційні панелі використовують для візуалізації вашої мережі. Наприклад, інформаційні панелі, які підтримують Istio, включають:

Стандартно, Istio визначає і генерує набір стандартних метрик (наприклад, requests_total), але ви також можете налаштувати їх і створити нові метрики за допомогою Telemetry API.

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

Встановіть Istio у ваш кластер і розгорніть застосунок. Або ж ви можете налаштувати власну статистику як частину установки Istio.

Демонстраційний застосунок Bookinfo використовується як приклад протягом цього завдання. Для інструкцій з установки дивіться розділ розгортання застосунку Bookinfo.

Увімкнення власних метрик

Щоб налаштувати метрики телеметрії, наприклад, щоб додати виміри request_host і destination_port до метрики requests_total, що надходить як від шлюзів, так і від sidecar у напрямку вхідного та вихідного трафіку, використовуйте наступне:

{{< text bash >}} $ cat < ./custom_metrics.yaml apiVersion: telemetry.istio.io/v1 kind: Telemetry metadata: name: namespace-metrics spec: metrics:

  • providers:
    • name: prometheus overrides:
    • match: metric: REQUEST_COUNT tagOverrides: destination_port: value: "string(destination.port)" request_host: value: "request.host" EOF $ kubectl apply -f custom_metrics.yaml {{< /text >}}

Перевірка результатів

Надішліть трафік до мережі. Для застосунку Bookinfo, відвідайте http://$GATEWAY_URL/productpage у вашому вебоглядачі або виконайте наступну команду:

{{< text bash >}} $ curl "http://$GATEWAY_URL/productpage" {{< /text >}}

{{< tip >}} $GATEWAY_URL — це значення, встановлене в застосунку Bookinfo. {{< /tip >}}

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

{{< text bash >}} kubectl exec "(kubectl get pod -l app=productpage -o jsonpath='{.items[0].metadata.name}')" -c istio-proxy -- curl -sS 'localhost:15000/stats/prometheus' | grep istio_requests_total {{< /text >}}

Наприклад, вивчіть вихідні дані, знайдіть метрику istio_requests_total і перевірте, чи містить вона ваші нові вимірювання.

{{< tip >}} Може знадобитися деякий час, поки проксі почнуть застосовувати конфігурацію. Якщо метрику не отримано, ви можете повторити запити після короткої паузи та знову перевірити метрику. {{< /tip >}}

Використання виразів для значень

Значення в конфігурації метрик є загальними виразами, що означає, що ви повинні використовувати подвійні лапки для рядків у JSON, наприклад, "'string value'". На відміну від мови виразів Mixer, немає підтримки оператора вертикальної риски (|), але ви можете емулювати його за допомогою оператора has або in, наприклад:

{{< text plain >}} has(request.host) ? request.host : "unknown" {{< /text >}}

Більше інформації дивіться в Common Expression Language.

Istio відкриває всі стандартні атрибути Envoy. Метадані peer доступні як атрибути upstream_peer для виходу і downstream_peer для входу з наступними полями:

Поле Тип Значення
app string Назва застосунку.
version string Версія застосунку.
service string Екземпляр Service.
revision string Версія Service.
name string Імʼя podʼа.
namespace string Простір імен, в якому запущено pod.
type string Тип робочого навантаження.
workload string Назва робочого навантаження.
cluster string Ідентифікатор кластера, до якого належить це робоче навантаження.

Наприклад, вираз для мітки peer app, що використовується у вихідній конфігурації, — це filter_state.downstream_peer.app або filter_state.upstream_peer.app.

Очищення

Щоб видалити демонстраційний застосунок Bookinfo і його конфігурацію, дивіться очищення Bookinfo.