Налаштування метрик Istio за допомогою Telemetry API
Telemetry API вже деякий час є в Istio як API першокласного рівня. Раніше користувачам потрібно було налаштовувати метрики в розділі telemetry
конфігурації Istio.
Це завдання показує, як налаштувати метрики, які Istio генерує за допомогою Telemetry API.
Перед тим як почати
Встановіть Istio у вашому кластері та розгорніть застосунок.
Telemetry API не може працювати разом з EnvoyFilter
. Для отримання додаткової інформації ознайомтесь з цим тікетом.
Починаючи з версії Istio
1.18
,EnvoyFilter
для Prometheus не буде стандартно встановлений, і замість цього використовуєтьсяmeshConfig.defaultProviders
для його активації. Telemetry API слід використовувати для подальшого налаштування конвеєра телеметрії.Для версій Istio до
1.18
слід встановити з наступною конфігурацієюIstioOperator
:apiVersion: install.istio.io/v1alpha1 kind: IstioOperator spec: values: telemetry: enabled: true v2: enabled: false
Перевизначення метрик
Розділ metrics
надає значення для метрик у вигляді виразів та дозволяє видаляти або перевизначати наявні визначення метрик. Ви можете змінити стандартні визначення метрик за допомогою tags_to_remove
або шляхом повторного визначення.
Видаліть теги
grpc_response_status
з метрикиREQUEST_COUNT
apiVersion: telemetry.istio.io/v1 kind: Telemetry metadata: name: remove-tags namespace: istio-system spec: metrics: - providers: - name: prometheus overrides: - match: mode: CLIENT_AND_SERVER metric: REQUEST_COUNT tagOverrides: grpc_response_status: operation: REMOVE
Додайте власні теґи для метрики
REQUEST_COUNT
apiVersion: telemetry.istio.io/v1 kind: Telemetry metadata: name: custom-tags namespace: istio-system spec: metrics: - overrides: - match: metric: REQUEST_COUNT mode: CLIENT tagOverrides: destination_x: value: upstream_peer.labels['app'].value - match: metric: REQUEST_COUNT mode: SERVER tagOverrides: source_x: value: downstream_peer.labels['app'].value providers: - name: prometheus
Вимкнення метрик
Вимкніть усі метрики, виконавши такі налаштування:
apiVersion: telemetry.istio.io/v1 kind: Telemetry metadata: name: remove-all-metrics namespace: istio-system spec: metrics: - providers: - name: prometheus overrides: - disabled: true match: mode: CLIENT_AND_SERVER metric: ALL_METRICS
Вимкніть метрику
REQUEST_COUNT
за допомогою наступних налаштувань:apiVersion: telemetry.istio.io/v1 kind: Telemetry metadata: name: remove-request-count namespace: istio-system spec: metrics: - providers: - name: prometheus overrides: - disabled: true match: mode: CLIENT_AND_SERVER metric: REQUEST_COUNT
Вимкніть метрику
REQUEST_COUNT
для клієнта, виконавши такі налаштування:apiVersion: telemetry.istio.io/v1 kind: Telemetry metadata: name: remove-client namespace: istio-system spec: metrics: - providers: - name: prometheus overrides: - disabled: true match: mode: CLIENT metric: REQUEST_COUNT
Вимкніть метрику
REQUEST_COUNT
для сервера, виконавши такі налаштування:apiVersion: telemetry.istio.io/v1 kind: Telemetry metadata: name: remove-server namespace: istio-system spec: metrics: - providers: - name: prometheus overrides: - disabled: true match: mode: SERVER metric: REQUEST_COUNT
Перевірка результатів
Надішліть трафік до мережі. Для застосунку Bookinfo відвідайте http://$GATEWAY_URL/productpage
у вашому вебоглядачі або виконайте наступну команду:
$ curl "http://$GATEWAY_URL/productpage"
Використовуйте наступну команду для перевірки того, що Istio генерує дані для ваших нових або змінених метрик:
$ istioctl x es "$(kubectl get pod -l app=productpage -o jsonpath='{.items[0].metadata.name}')" -oprom | grep istio_requests_total | grep -v TYPE | grep -v 'reporter="destination"'
$ istioctl x es "$(kubectl get pod -l app=details -o jsonpath='{.items[0].metadata.name}')" -oprom | grep istio_requests_total
Наприклад, у виводі знайдіть метрику istio_requests_total
і перевірте, чи містить вона вашу нову розмірність.