Налаштування метрик 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
для входу з наступними полями:
Поле | Тип | Значення |
---|---|---|
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
.