7.1 KiB
| title | description | weight | keywords | owner | test | |||
|---|---|---|---|---|---|---|---|---|
| Налаштування метрик Istio | Це завдання показує, як налаштувати метрики Istio. | 25 |
|
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.