Налаштування метрик 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 або шляхом повторного визначення.

  1. Видаліть теги 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
  2. Додайте власні теґи для метрики 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

Вимкнення метрик

  1. Вимкніть усі метрики, виконавши такі налаштування:

    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
  2. Вимкніть метрику 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
  3. Вимкніть метрику 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
  4. Вимкніть метрику 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 і перевірте, чи містить вона вашу нову розмірність.

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

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