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


Подключение самостоятельно управляемого Prometheus к управляемой службе Azure Monitor для Prometheus

Управляемая служба Azure Monitor для Prometheus предназначена для замены самостоятельно управляемого Prometheus , поэтому вам не нужно управлять сервером Prometheus в кластерах Kubernetes. Вы можете столкнуться с ситуациями, когда вы хотите продолжать использовать самоуправляемый Prometheus в ваших кластерах Kubernetes, одновременно отправляя данные в управляемый Prometheus для долгосрочного хранения данных и создания централизованного представления по вашим кластерам. Это может быть временным решением при переходе на Managed Prometheus или долгосрочное решение, если у вас есть конкретные требования для самостоятельно управляемого Prometheus.

Architecture

Remote_write — это функция в Prometheus, которая позволяет отправлять метрики из локального экземпляра Prometheus в удаленное хранилище или в другой экземпляр Prometheus. Используйте эту функцию для отправки метрик из самостоятельно управляемого Prometheus, работающего в кластерах Kubernetes или виртуальных машинах, в рабочую область Azure Monitor, используемую для Управляемого Prometheus.

Эта конфигурация представлена на следующей схеме: Правило сбора данных (DCR) в Azure Monitor предоставляет конечную точку для самоуправляемого экземпляра Prometheus для отправки метрик и определяет рабочую область Azure Monitor, в которой будут отправляться данные.

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

Это важно

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

Типы аутентификации

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

Тип Поддерживаемые кластеры
Назначаемый системой управляемый идентификатор Служба Azure Kubernetes (AKS)
Виртуальная машина и масштабируемый набор виртуальных машин Azure
Управляемая идентификация, назначаемая пользователем Служба Azure Kubernetes (AKS)
Kubernetes с поддержкой Arc
Виртуальная машина и масштабируемый набор виртуальных машин Azure
Майкрософт Ентра айди Служба Azure Kubernetes (AKS)
Кластер Kubernetes с поддержкой Arc
Кластер, работающий в другом облаке или локальной среде
Виртуальная машина и масштабируемый набор виртуальных машин Azure
Серверы с поддержкой Arc
Виртуальная машина, запущенная в другом облаке или локальной среде
Идентификация рабочей нагрузки Microsoft Entra Служба Azure Kubernetes (AKS)
Кластер Kubernetes с поддержкой Arc

Предпосылки

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

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

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

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

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

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

Вы не создаете управляемое удостоверение, назначаемое системой, напрямую, а включаете его для виртуальной машины Azure или масштабируемого набора виртуальных машин. Для виртуальной машины Azure вы можете включить идентификацию при создании VM или позже на странице Идентификация на портале Azure. Для VMSS необходимо включить его после создания. Для различных вариантов включения управляемого системой удостоверения см. статьи "Настройка управляемых удостоверений на виртуальных машинах Azure" и "Настройка управляемых удостоверений для ресурсов Azure в масштабируемом наборе виртуальных машин".

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

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

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

Назначьте роли

После создания идентификатора необходимо предоставить доступ к правилу сбора данных (DCR), связанному с рабочей областью Azure Monitor, которая получит данные, записанные удалённо. Этот DCR автоматически создается при создании рабочей области. Вы укажете это удостоверение в конфигурации удаленной записи для кластера или виртуальной машины.

  1. На панели обзора рабочей области Azure Monitor выберите ссылку правила сбора данных. Откроется правило сбора данных (DCR), связанное с рабочей областью.

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

  2. На странице правила сбора данных выберите элемент управления доступом (IAM). Выберите Добавить, а затем Добавить назначение роли.

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

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

    Снимок экрана: добавление назначения ролей в DCR.

  4. Выберите личность, чтобы назначить роль.

    1. Для управляемого удостоверения, назначаемого системой, выберите управляемое удостоверение и выберите участников. В раскрывающемся списке «Управляемое удостоверение» выберите виртуальную машину или виртуальную машину в структуре VMSS, или каждую VMSS в кластере AKS.

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

    1. Для назначаемой пользователем управляемой идентичности выберите раздел назначаемую пользователем управляемую идентичность. Выберите удостоверение, которое вы создали.

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

    1. Для Entra ID выберите "Пользователь", "Группа" или "Служебный принципал", а затем выберите участников. Выберите созданное приложение и нажмите кнопку "Выбрать".

    Снимок экрана: выбор участников Entra ID.

  5. Выберите Select, чтобы подтвердить выбор, а затем Проверить и назначить, чтобы завершить назначение роли.


Настройка удаленной записи в файле конфигурации

Удаленная запись настраивается в файле prometheus.yml конфигурации Prometheus или в операторе Prometheus. Последним шагом является добавление удаленной записи в файл конфигурации для локально управляемого сервера Prometheus. Помимо сведений о созданном удостоверении, вам также потребуется конечная точка для сбора метрик (URL-адрес) для рабочей области Azure Monitor. Получите это значение на странице обзора рабочей области Azure Monitor на портале Azure и запишите его.

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

Чтобы отправить данные в рабочую область Azure Monitor, добавьте следующий раздел в файл конфигурации (prometheus.yml) управляемого экземпляра Prometheus.

Замечание

Для управляемой идентичности, назначаемой системой, оставьте поле идентификатора клиента пустым (client_id: "").

Манажируемая идентичность

prometheus:
  prometheusSpec:
    remote_write:   
    - url: "<metrics ingestion endpoint for your Azure Monitor workspace>"
      azuread:
        cloud: 'AzurePublic'  # Options are 'AzurePublic', 'AzureChina', or 'AzureGovernment'.
        managed_identity:  
          client_id: "<client-id of the managed identity>"

Entra ID

prometheus:
  prometheusSpec:
    remote_write:   
    - url: "<metrics ingestion endpoint for your Azure Monitor workspace>"
      azuread:
        cloud: 'AzurePublic'  # Options are 'AzurePublic', 'AzureChina', or 'AzureGovernment'.
        oauth:  
          client_id: "<client-id from the Entra app>"
          client_secret: "<client secret from the Entra app>"
          tenant_id: "<Azure subscription tenant Id>"

Идентификация рабочей нагрузки

prometheus:
  prometheusSpec:
    podMetadata:
      labels:
        azure.workload.identity/use: "true"
    remote_write:   
    - url: "<metrics ingestion endpoint for your Azure Monitor workspace>"
      azuread:
        cloud: 'AzurePublic'  # Options are 'AzurePublic', 'AzureChina', or 'AzureGovernment'.
        workload_identity:  
          client_id: "<client-id from the Entra app>"
          tenant_id: "<Azure subscription tenant Id>"

Примените обновления файла конфигурации:

Виртуальная машина

Для виртуальной машины файл конфигурации будет prometheus.yml, если только вы не укажете другой файл с помощью prometheus --config.file <path-to-config-file> при запуске сервера Prometheus.

Кластер Kubernetes

Для кластера Kubernetes файл конфигурации обычно хранится в ConfigMap. Ниже приведен пример ConfigMap, который включает конфигурацию удаленной записи с использованием управляемого удостоверения для самостоятельно управляемого сервиса Prometheus, работающего в кластере Kubernetes.

  GNU nano 6.4
apiVersion: v1
kind: ConfigMap
metadata:
  name: prometheus-server-conf # must match what your pod mounts
  namespace: monitoring  # adjust to your namespace
data:
  prometheus.yml: |-
   global:
     scrape_interval: 15s
     evaluation_interval: 15s
     external_labels:
       cluster: "aks11"

   scrape_configs:
     - job_name: "prometheus"
       static_configs:
         - targets: ["localhost:9090"]

   remote_write:
     - url: "https://aks-amw-0mi2.eastus-1.metrics.ingest.monitor.azure.com/dataCollectionRules/dcr-00000000000000000000000000000000/streams/Microsoft-PrometheusMetrics/api/v1/write?api-version=2023-04-24"
       azuread:
         cloud: 'AzurePublic'
         managed_identity:
           client_id: "00001111-aaaa-2222-bbbb-3333cccc4444"

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

kubectl apply -f <configmap-file-name>.yaml

Перезапустите Prometheus, чтобы получить новую конфигурацию. При использовании развертывания вы можете перезапустить поды, выполнив следующую команду.

kubectl -n monitoring rollout restart deploy <prometheus-deployment-name>

Замечание

После изменения файла конфигурации перезапустите Prometheus, чтобы применить изменения.

Сведения о настройке конфигурации удаленной записи см. в разделе "Удаленная настройка записи".

Troubleshoot

Ошибка HTTP 403 в журнале Prometheus

Для принятия в силу назначения роли требуется около 30 минут. В течение этого времени в журнале Prometheus может появиться ошибка HTTP 403. Убедитесь, что вы правильно настроили управляемое удостоверение или приложение идентификатора Microsoft Entra с ролью издателя метрик мониторинга в DCR рабочей области. Если конфигурация правильна, подождите 30 минут, пока назначение роли вступит в силу.

Сбор данных Kubernetes не выполняется

Если данные не собираются в Managed Prometheus, выполните следующую команду, чтобы найти ошибки в контейнере удаленной записи.

kubectl --namespace <Namespace> describe pod <Prometheus-Pod-Name>

Контейнер повторно перезапускается

Контейнер регулярно перезапускается, скорее всего, из-за неправильной настройки контейнера. Выполните следующую команду, чтобы просмотреть значения конфигурации, заданные для контейнера. Проверьте значения конфигурации, особенно AZURE_CLIENT_ID и IDENTITY_TYPE.

kubectl get pod <Prometheus-Pod-Name> -o json | jq -c  '.spec.containers[] | select( .name | contains("<Azure-Monitor-Side-Car-Container-Name>"))'

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

{"env":[{"name":"INGESTION_URL","value":"https://my-azure-monitor-workspace.eastus2-1.metrics.ingest.monitor.azure.com/dataCollectionRules/dcr-00000000000000000/streams/Microsoft-PrometheusMetrics/api/v1/write?api-version=2021-11-01-preview"},{"name":"LISTENING_PORT","value":"8081"},{"name":"IDENTITY_TYPE","value":"userAssigned"},{"name":"AZURE_CLIENT_ID","value":"00000000-0000-0000-0000-00000000000"}],"image":"mcr.microsoft.com/azuremonitor/prometheus/promdev/prom-remotewrite:prom-remotewrite-20221012.2","imagePullPolicy":"Always","name":"prom-remotewrite","ports":[{"containerPort":8081,"name":"rw-port","protocol":"TCP"}],"resources":{},"terminationMessagePath":"/dev/termination-log","terminationMessagePolicy":"File","volumeMounts":[{"mountPath":"/var/run/secrets/kubernetes.io/serviceaccount","name":"kube-api-access-vbr9d","readOnly":true}]}

Данные теряются в условиях высокой нагрузки

Правило сбора данных (DCR) и конечная точка сбора данных (DCE) для рабочей области Azure Monitor подвергаются ограничениям приема, перечисленным в ограничениях службы Azure Monitor. Вы больше всего подвержены этим ограничениям при настройке удаленной записи для нескольких кластеров, отправляющих данные в одну конечную точку.

Рассмотрите возможность настройки удаленной записи , чтобы настроить параметры конфигурации для повышения производительности. Если вы по-прежнему замечаете пропуски данных, попробуйте создать дополнительные требования к анализу данных (DCR) и средства сбора данных (DCE), чтобы распределить приемную нагрузку между несколькими конечными точками. Этот подход помогает оптимизировать производительность и обеспечивает эффективную обработку данных. См. инструкции по созданию пользовательской конечной точки сбора данных (DCE) и пользовательского правила сбор данных (DCR) для существующей рабочей области Azure Monitor (AMW) с целью приема метрик Prometheus.

Дальнейшие шаги