Поделиться через


Отправьте данные Prometheus в Azure Monitor, используя аутентификацию с управляемым удостоверением.

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

Примечание.

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

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

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

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

Примечание.

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

Необходимые условия

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

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

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

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

Разрешения

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Внимание

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

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

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

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

    az vmss identity assign -g <NODE-RESOURCE-GROUP> -n <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/containerinsights/ciprod/prometheus-remote-write/images:prom-remotewrite-20250326.1
    Версия образа контейнера для записи данными на удаленный сервер.
    <INGESTION-URL> Значение конечной точки приема метрик на странице обзора рабочей области Azure Monitor.
    <MANAGED-IDENTITY-CLIENT-ID> Значение идентификатора клиента на странице обзора управляемого удостоверения.
    <CLUSTER-NAME> Имя кластера, на котором запущен Prometheus.

    Внимание

    Для облака Azure Government добавьте следующие переменные среды в разделе файла 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.

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