Отправка данных Prometheus в Azure Monitor с помощью проверки подлинности управляемого удостоверения

В этой статье описывается настройка удаленной записи для отправки данных с локально управляемого сервера Prometheus, работающего в кластере Служба Azure Kubernetes (AKS) или кластере Kubernetes с поддержкой Azure Arc с помощью проверки подлинности управляемого удостоверения. Вы можете использовать существующее удостоверение, созданное AKS, или создать собственное. В этой статье описываются оба варианта.

Конфигурации кластера

Эта статья относится к следующим конфигурациям кластера:

  • Кластер Службы Azure Kubernetes
  • Кластер Kubernetes с поддержкой Azure Arc

Примечание.

Сведения о настройке удаленной записи для кластера Kubernetes, работающего в другом облаке или локальной среде, см. в статье "Отправка данных Prometheus в Azure Monitor с помощью проверки подлинности Microsoft Entra".

Необходимые компоненты

Поддерживаемые версии

Версии Prometheus, превышающие версию 2.45, требуются для проверки подлинности управляемого удостоверения.

Рабочая область Azure Monitor

В этой статье описывается отправка метрик Prometheus в рабочую область Azure Monitor. Сведения о создании рабочей области Azure Monitor см. в статье "Управление рабочей областью Azure Monitor".

Разрешения

разрешения Администратор istrator для кластера или ресурса необходимы для выполнения действий, описанных в этой статье.

Настройка приложения для управляемого удостоверения

Процесс настройки удаленной записи Prometheus для приложения с помощью проверки подлинности управляемого удостоверения включает выполнение следующих задач:

  1. Получите имя группы ресурсов узла AKS.
  2. Получите идентификатор клиента управляемого удостоверения, назначаемого пользователем.
  3. Назначьте роль издателя метрик мониторинга в правиле сбора данных рабочей области управляемому удостоверению.
  4. Предоставьте кластеру AKS доступ к управляемому удостоверению.
  5. Разверните контейнер бокового контейнера для настройки удаленной записи.

Задачи описаны в следующих разделах.

Получение имени группы ресурсов узла AKS

Группа ресурсов узла кластера AKS содержит ресурсы, которые вы используете в других шагах этого процесса. Эта группа ресурсов имеет имя MC_<AKS-RESOURCE-GROUP>_<AKS-CLUSTER-NAME>_<REGION>. Имя группы ресурсов можно найти с помощью меню "Группы ресурсов" в портал Azure.

Снимок экрана: список групп ресурсов.

Получение идентификатора клиента управляемого удостоверения, назначаемого пользователем

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

Вместо создания собственного идентификатора клиента можно использовать одно из удостоверений, созданных AKS. Дополнительные сведения об удостоверениях см. в разделе "Использование управляемого удостоверения" в Служба Azure Kubernetes.

В этой статье используется удостоверение kubelet. Имя этого удостоверения — <AKS-CLUSTER-NAME>-agentpoolи находится в группе ресурсов узла кластера AKS.

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

Выберите управляемое <AKS-CLUSTER-NAME>-agentpool удостоверение. На странице обзора скопируйте значение идентификатора клиента. Дополнительные сведения см. в статье "Управление управляемыми удостоверениями, назначаемыми пользователем".

Снимок экрана: идентификатор клиента на странице обзора для управляемого удостоверения.

Назначение роли издателя метрик мониторинга в правиле сбора данных рабочей области управляемому удостоверению

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

  1. В меню ресурсов для рабочей области Azure Monitor выберите "Обзор". Для правила сбора данных выберите ссылку.

    Снимок экрана: правило сбора данных, связанное с рабочей областью Azure Monitor.

  2. В меню ресурсов для правила сбора данных выберите элемент управления доступом (IAM).

  3. Выберите Добавить, затем выберите Добавить назначение ролей.

    Снимок экрана: добавление назначения ролей на страницах управления доступом.

  4. Выберите роль издателя метрик мониторинга и нажмите кнопку "Далее".

    Снимок экрана: список назначений ролей.

  5. Выберите управляемое удостоверение и выберите " Выбрать участников". Выберите подписку, содержащую удостоверение, назначаемое пользователем, и выберите управляемое удостоверение, назначаемое пользователем. Выберите удостоверение, назначаемое пользователем, и нажмите кнопку "Выбрать".

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

  6. Чтобы завершить назначение роли, нажмите кнопку "Проверить и назначить".

Предоставление кластеру AKS доступа к управляемому удостоверению

Этот шаг не требуется, если вы используете удостоверение AKS. Удостоверение AKS уже имеет доступ к кластеру.

Внимание

Чтобы выполнить действия, описанные в этом разделе, необходимо иметь разрешения администратора доступа владельца или пользователя для кластера.

  1. Определите масштабируемые наборы виртуальных машин в группе ресурсов узла для кластера AKS.

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

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

    az vmss identity assign -g <AKS-NODE-RESOURCE-GROUP> -n <AKS-VMSS-NAME> --identities <USER-ASSIGNED-IDENTITY-RESOURCE-ID>
    

Развертывание контейнера на стороне для настройки удаленной записи

  1. Скопируйте следующий YAML и сохраните его в файл. YAML использует порт 8081 в качестве порта прослушивания. При использовании другого порта измените порт в YAML.

    prometheus:
      prometheusSpec:
        externalLabels:
              cluster: <AKS-CLUSTER-NAME>
    
        ## https://prometheus.io/docs/prometheus/latest/configuration/configuration/#remote_write    
        remoteWrite:
        - url: 'http://localhost:8081/api/v1/write'
      ## Azure Managed Prometheus currently exports some default mixins in Grafana. 
      ## These mixins are compatible with Azure Monitor agent on your Azure Kubernetes Service cluster. 
      ## However, these mixins aren't compatible with Prometheus metrics scraped by the Kube Prometheus stack. 
      ## In order to make these mixins compatible, uncomment remote write relabel configuration below:
    
      ## writeRelabelConfigs:
      ##   - sourceLabels: [metrics_path]
      ##     regex: /metrics/cadvisor
      ##     targetLabel: job
      ##     replacement: cadvisor
      ##     action: replace
      ##   - sourceLabels: [job]
      ##     regex: 'node-exporter'
      ##     targetLabel: job
      ##     replacement: node
      ##     action: replace
        containers:
        - name: prom-remotewrite
          image: <CONTAINER-IMAGE-VERSION>
          imagePullPolicy: Always
          ports:
            - name: rw-port
              containerPort: 8081
          livenessProbe:
            httpGet:
              path: /health
              port: rw-port
            initialDelaySeconds: 10
            timeoutSeconds: 10
          readinessProbe:
            httpGet:
              path: /ready
              port: rw-port
            initialDelaySeconds: 10
            timeoutSeconds: 10
          env:
          - name: INGESTION_URL
            value: <INGESTION_URL>
          - name: LISTENING_PORT
            value: '8081'
          - name: IDENTITY_TYPE
            value: userAssigned
          - name: AZURE_CLIENT_ID
            value: <MANAGED-IDENTITY-CLIENT-ID>
          # Optional parameter
          - name: CLUSTER
            value: <CLUSTER-NAME>
    
  2. Замените следующие значения в YAML:

    значение Описание
    <AKS-CLUSTER-NAME> Имя кластера AKS.
    <CONTAINER-IMAGE-VERSION> mcr.microsoft.com/azuremonitor/prometheus/promdev/prom-remotewrite:prom-remotewrite-20230906.1
    Версия образа контейнера удаленной записи.
    <INGESTION-URL> Значение конечной точки приема метрик на странице обзора рабочей области Azure Monitor.
    <MANAGED-IDENTITY-CLIENT-ID> Значение идентификатора клиента на странице обзора управляемого удостоверения.
    <CLUSTER-NAME> Имя кластера, на котором запущен Prometheus.

    Внимание

    Для Azure для государственных организаций облака добавьте следующие переменные среды в env разделе ФАЙЛА YAML:

    - name: INGESTION_AAD_AUDIENCE value: https://monitor.azure.us/

  3. Откройте Azure Cloud Shell и отправьте ФАЙЛ YAML.

  4. Используйте Helm, чтобы применить YAML-файл и обновить конфигурацию Prometheus:

    # set context to your cluster 
    az aks get-credentials -g <aks-rg-name> -n <aks-cluster-name> 
    
    # use Helm to update your remote write config 
    helm upgrade -f <YAML-FILENAME>.yml prometheus prometheus-community/kube-prometheus-stack --namespace <namespace where Prometheus pod resides> 
    

Проверка и устранение неполадок

Сведения о проверке и устранении неполадок см. в статье "Устранение неполадок удаленной записи и управляемой службы Azure Monitor для удаленной записи Prometheus".

Следующие шаги