Налаштування метрик Istio

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

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

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

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

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

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

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

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

$ cat <<EOF > ./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

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

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

$ curl "http://$GATEWAY_URL/productpage"

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

$ 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

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

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

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

has(request.host) ? request.host : "unknown"

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

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

ПолеТипЗначення
appstringНазва застосунку.
versionstringВерсія застосунку.
servicestringЕкземпляр Service.
revisionstringВерсія Service.
namestringІмʼя podʼа.
namespacestringПростір імен, в якому запущено pod.
typestringТип робочого навантаження.
workloadstringНазва робочого навантаження.
clusterstringІдентифікатор кластера, до якого належить це робоче навантаження.

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

Очищення

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

Чи була ця інформація корисною?
Чи є у вас пропозиції щодо покращення?

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