Настройка и просмотр метрик сети приложений Azure Kubernetes (предварительная версия)

Это важно

Предварительные версии функций AKS доступны на условиях самообслуживания и добровольного выбора. Предварительные версии предоставляются "как есть" и "при наличии". На них не распространяются соглашения об уровне обслуживания и ограниченная гарантия. Предварительные версии AKS сопровождаются частичной поддержкой клиентов на основе принципа лучших усилий. Как таковые, эти функции не предназначены для использования в производстве. Для получения дополнительной информации ознакомьтесь со следующими статьями поддержки:

Сеть приложений Azure Kubernetes предоставляет комплексные метрики для рабочих нагрузок и компоненты плоскости данных сети приложений Azure Kubernetes (ZTunnel, Istio CNI и Waypoint) с помощью метрик Azure Monitor. В этой статье объясняется, как настроить и просмотреть эти метрики в Azure Monitor.

Ограничения

Метрики плоскости управления в настоящее время не поддерживаются. Однако доступны метрики плоскости данных, и их можно использовать для мониторинга работоспособности и производительности рабочих нагрузок и компонентов сети приложений Azure Kubernetes.

Метрики плоскости данных

Метрики плоскости данных включают метрики из ваших рабочих нагрузок и приложений, а также из пространства имен appnet-system. В настоящее время сеть приложений Azure Kubernetes поддерживает только метрики плоскости данных.

Настройка метрик плоскости данных

Параметры конфигурации рабочей области для метрик плоскости данных

Если включить коллекцию метрик Prometheus для кластеров членов сети приложений Azure Kubernetes, у вас есть следующие параметры конфигурации рабочей области:

  • Используйте существующую рабочую область Azure Monitor.
  • Опустите идентификатор ресурса рабочей области и используйте рабочую область по умолчанию, созданную для группы ресурсов.
  • Создайте новую рабочую область Azure Monitor.

Включение сбора метрик плоскости данных

  1. Включите коллекцию метрик Prometheus в кластере членов сети приложений Azure Kubernetes, используя az aks update команду с параметром, заданным --azure-monitor-workspace-resource-id для существующего идентификатора рабочей области. Если метрики Azure Monitor уже включены в кластере-члене, перейдите к следующему шагу.

    az aks update --enable-azure-monitor-metrics \
      --name $CLUSTER_NAME \
      --resource-group $AKS_RG \
      --azure-monitor-workspace-resource-id $WORKSPACE_ID
    
  2. Создайте и примените следующий ConfigMap в kube-system пространстве имен с помощью kubectl apply команды. Этот ConfigMap позволяет выполнять очистку Ztunnel, Istio CNI, точки пути и приложений или рабочих нагрузок.

    kubectl apply -f - <<EOF
    kind: ConfigMap
    apiVersion: v1
    metadata:
      name: ama-metrics-settings-configmap
      namespace: kube-system
    data:
      schema-version: v1
      config-version: ver1
      prometheus-collector-settings: |-
        cluster_alias = ""
        https_config = true
      default-scrape-settings-enabled: |-
        ztunnel = true
        istio-cni = true
      pod-annotation-based-scraping: |-
        podannotationnamespaceregex = ".*"
      default-targets-metrics-keep-list: |-
        ztunnel = ""
        istio-cni = ""
        minimalingestionprofile = true
      default-targets-scrape-interval-settings: |-
        ztunnel = "30s"
        istio-cni = "30s"
        podannotations = "30s"
      debug-mode: |-
        enabled = false
    EOF
    
  3. Добавьте аннотации к pod приложений, с которых вы хотите собирать данные.

    • prometheus.io/scrape: "true" Необходимо указать, что модуль pod должен быть сломлен.
    • prometheus.io/path при необходимости используется для указания пути размещения метрик. Если опущен, значение по умолчанию /metrics.
    • prometheus.io/port при необходимости используется для указания порта, в котором размещаются метрики. Если опущено, Prometheus будет использовать объявленные порты контейнера из спецификации pod. Для контейнеров без объявленных портов Prometheus создает целевой объект без порта (только IP-адрес), который требует надлежащей настройки повторной маркировки для работы с заметками портов. Рекомендуется явно указать порт, чтобы обеспечить надежную очистку.

    В следующем примере определяются аннотации для pod, на котором размещены метрики <pod IP>:15020/metrics

    prometheus.io/scrape: "true"
    prometheus.io/port: "15020"
    prometheus.io/path: "/metrics"
    

    Для загрузки этой конфигурации для ReplicaSet метрик AMA может потребоваться несколько минут.

Просмотр метрик плоскости данных

  1. Перейдите в рабочую область Azure Monitor на портале Azure, чтобы запросить метрики с помощью PromQL.

  2. Создайте некоторый трафик, а затем выберите запросы из предоставленных метрик для просмотра метрик . Например, можно выполнить следующий запрос, чтобы просмотреть общее количество запросов, обрабатываемых по путьной точке:

    # ztunnel
    istio_xds_connection_terminations_total
    
    # waypoint
    istio_requests_total
    
    # istio-cni
    istio_cni_install_ready
    

    На следующем снимке экрана показаны результаты для примеров запросов:

    Снимок экрана: результаты запросов для просмотра общего количества запросов, обрабатываемых по точке пути.

Список предоставляемых метрик

Компонент Предоставляемые метрики
ZTunnel istio_build
istio_xds_connection_terminations_total
istio_xds_message_total
istio_xds_message_bytes_total
istio_tcp_connections_opened_total
istio_tcp_connections_closed_total
istio_tcp_received_bytes_total
istio_tcp_sent_bytes_total
istio_on_demand_dns
istio_dns_requests_total
istio_dns_upstream_requests
istio_dns_upstream_failures
istio_dns_upstream_request_duration_seconds
workload_manager_active_proxy_count
workload_manager_pending_proxy_count
workload_manager_proxies_started_total
workload_manager_proxies_stopped_total
Istio CNI istio_cni_install_ready
istio_cni_installs_total
nodeagent_reconcile_events_total
ztunnel_connected
Путевая точка istio_build
istio_request_bytes_bucket
istio_request_bytes_count
istio_request_bytes_sum
istio_request_duration_milliseconds_bucket
istio_request_duration_milliseconds_count
istio_request_duration_milliseconds_sum
istio_requests_total
istio_response_bytes_bucket
istio_response_bytes_count
istio_response_bytes_sum

Доступ к метрикам непосредственно из прокси-точек

Помимо метрик запросов и ответов Istio, прокси-узлы также генерируют метрики Envoy.

  • Чтобы найти полный список метрик, создаваемых waypoint, можно перенаправить порт на proxy waypoint в пространстве имен и перечислить метрики с помощью этих команд:

    # Port-forward to waypoint proxy
    kubectl port-forward -n <namespace> deployment/waypoint 15020:15020 &
    
    # List metrics exposed by waypoint
    curl http://localhost:15020/stats/prometheus | grep -v '^#' | grep -v '^$' | awk -F'{' '{print $1}' | sort -u
    

Визуализация метрик с помощью Grafana на портале Azure

  1. Импорт панелей мониторинга сообщества Istio.

  2. Создайте трафик для кластера членов и перейдите в рабочую область Azure Monitor на портале Azure.

  3. > Выберитепанели мониторинга с помощью Grafana.

    На следующих снимках экрана показаны примеры импорта панели мониторинга Istio Ztunnel:

    Снимок экрана: параметр панели мониторинга импорта в рабочей области Azure Monitor на портале Azure.

    Снимок экрана: параметры проверки для импорта панели мониторинга Ztunnel на портале Azure.

    Снимок экрана, показывающий визуализации Ztunnel на панели мониторинга Grafana в портале Azure.

Если вы хотите настроить управляемую Grafana Azure вместо использования панелей мониторинга с помощью Grafana, см. Создание рабочей области Azure Managed Grafana с помощью Azure CLI.

Дополнительные сведения о наблюдаемости и мониторинге сети приложений Azure Kubernetes см. в следующих статьях: