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


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

Внимание

В этой статье описывается, как настроить удаленную запись в управляемой службе Azure Monitor для Prometheus с использованием управляемой идентификации для проверки подлинности и контейнера sidecar, предоставленного Azure Monitor. Вы можете использовать удаленную запись с управляемым удостоверением без использования сайдкара, следуя руководству по подключению самостоятельно управляемого Prometheus к управляемой службе Azure Monitor для Prometheus.

В этой статье описывается, как настроить удаленную запись для отправки данных с самостоятельно управляемого сервера 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

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

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

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

  • Версии Prometheus, превышающие версию 2.45, необходимы для проверки подлинности управляемого удостоверения, назначаемого пользователем.
  • Версии Prometheus, превышающие версию 2.48, необходимы для проверки подлинности приложения Идентификатора Microsoft Entra.
  • Версии Prometheus версии 3.50 или больше требуются для проверки подлинности управляемого удостоверения, назначаемого системой.

Рабочая область 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-20251030.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.

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

Проверьте, работает ли удаленная запись правильно

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

Команды Kubectl

Используйте следующую команду, чтобы просмотреть журналы из контейнера бокового автомобиля. Поток данных для удаленной записи осуществляется, если выходные данные имеют ненулевое значение для avgBytesPerRequest и avgRequestDuration.

kubectl logs <Prometheus-Pod-Name> <Azure-Monitor-Side-Car-Container-Name> --namespace <namespace-where-Prometheus-is-running>
# example: kubectl logs prometheus-prometheus-kube-prometheus-prometheus-0 prom-remotewrite --namespace monitoring

Выходные данные этой команды имеют следующий формат:

time="2022-11-02T21:32:59Z" level=info msg="Metric packets published in last 1 minute" avgBytesPerRequest=19713 avgRequestDurationInSec=0.023 failedPublishing=0 successfullyPublished=122

Обозреватель метрик Azure Monitor с помощью PromQL

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

Обозреватель Prometheus в рабочей области Azure Monitor

Prometheus Explorer предоставляет удобный способ взаимодействия с метриками Prometheus в среде Azure, что делает мониторинг и устранение неполадок более эффективным. Чтобы использовать обозреватель Prometheus, из рабочей области Azure Monitor в портал Azure и выберите Prometheus Explorer, чтобы запросить метрики, ожидаемые из локальной среды Prometheus. Дополнительные сведения см . в обозревателе Prometheus.

Grafana

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

Устранение неполадок удаленной записи

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