Сбор метрик рабочих нагрузок надстройки сервисной сети Istio для Служба Azure Kubernetes в Azure Managed Prometheus

В этом руководстве объясняется, как настроить и использовать Azure Managed Prometheus для сбора метрик из рабочих нагрузок надстройки service mesh Istio в вашем кластере Azure Kubernetes.

Предпосылки

Включение управляемой службы Azure Monitor для Prometheus

Azure Monitor управляемая служба для Prometheus собирает данные из кластера Azure Kubernetes. Чтобы включить управляемую службу Azure Monitor для Prometheus, необходимо создать рабочую область Azure Monitor для хранения метрик:

export AZURE_MONITOR_WORKSPACE=<azure-monitor-workspace-name>

export AZURE_MONITOR_WORKSPACE_ID=$(az monitor account create \
    --name $AZURE_MONITOR_WORKSPACE \
    --resource-group $RESOURCE_GROUP \
    --location $LOCATION \
    --query id -o tsv)

Включить дополнение Prometheus

Чтобы собрать метрики Prometheus из кластера Kubernetes, включите надстройку Prometheus:

az aks update --enable-azure-monitor-metrics --name $CLUSTER --resource-group $RESOURCE_GROUP --azure-monitor-workspace-resource-id $AZURE_MONITOR_WORKSPACE_ID

Настройка очистки метрик Prometheus в управляемой службе Azure Monitor

Создайте конфигурацию скребка в файле с именем prometheus-config, аналогично приведенному ниже примеру. Эта конфигурация включает сбор метрик на основе аннотаций подов, что позволяет Prometheus автоматически обнаруживать поды с определенными аннотациями и собирать из них метрики.

Это важно

Ниже приведен пример конфигурации скребка. Мы настоятельно рекомендуем настроить его в зависимости от ваших потребностей. Если это не скорректировать, это может привести к непредвиденным расходам из-за частого сбора метрик и увеличения объёма хранимых данных.

global: 
  scrape_interval: 30s
scrape_configs: 
- job_name: workload
  scheme: http
  kubernetes_sd_configs:
    - role: endpoints
  relabel_configs:
    - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
      action: keep
      regex: true
    - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path]
      action: replace
      target_label: __metrics_path__
      regex: (.+)
    - source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port]
      action: replace
      regex: ([^:]+)(?::\d+)?;(\d+)
      replacement: $1:$2
      target_label: __address__ 

Чтобы включить сбор метрик на основе аннотаций pod, создайте ConfigMap ama-metrics-prometheus-config, который ссылается на файл prometheus-config в пространстве имён kube-system.

kubectl create configmap ama-metrics-prometheus-config --from-file=prometheus-config -n kube-system

Проверка коллекции метрик

  1. Настройте разрешения доступа: перейдите в рабочую область Azure Monitor на портале Azure и создайте назначение ролей для себя, чтобы предоставить роль "Средство чтения данных мониторинга" в ресурсе рабочей области.

  2. Создайте пример трафика: отправьте несколько запросов на страницу продукта, созданную ранее, например:

    curl -s "http://${GATEWAY_URL_EXTERNAL}/productpage" | grep -o "<title>.*</title>"
    
  3. Просмотр/запрос метрик в портале Azure: перейдите в обозреватель Prometheus в рабочей области Azure Monitor и запрашивайте метрики. В приведенном ниже примере показаны результаты запроса istio_requests_total.

    Схема, показывающая пример выполнения запроса в обозревателе prometheus.

Удаление ресурсов

Если вы хотите очистить сетку службы Istio и входящий трафик (выход из кластера), выполните следующую команду:

az aks mesh disable --resource-group ${RESOURCE_GROUP} --name ${CLUSTER}

Если вы хотите очистить все ресурсы, созданные из документов руководства Istio, выполните следующую команду:

az group delete --name ${RESOURCE_GROUP} --yes --no-wait