Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описывается, как настроить удаленную запись для отправки данных с самостоятельно управляемого сервера Prometheus, работающего в кластере службы Azure Kubernetes (AKS) или кластере Kubernetes с поддержкой Azure Arc, используя аутентификацию Microsoft Entra и боковой контейнер, который предоставляет Azure Monitor. Обратите внимание, что вы также можете напрямую настроить удаленную запись в конфигурации Prometheus для этой цели.
Примечание.
Мы рекомендуем напрямую настроить Prometheus, работающий в вашем кластере Kubernetes, для записи данных через удаленное подключение в рабочую область Azure Monitor. Дополнительные сведения см. в статье Отправка данных Prometheus в Azure Monitor с авторизацией Microsoft Entra Id. В приведенных ниже действиях используется побочный контейнер Azure Monitor.
Конфигурации кластера
Эта статья относится к следующим конфигурациям кластера:
- Кластер Службы Azure Kubernetes
- Кластер Kubernetes с поддержкой Azure Arc
- Кластер Kubernetes, работающий в другом облаке или локальной среде
Примечание.
Для кластера AKS или кластера Kubernetes с включенной поддержкой Azure Arc мы рекомендуем использовать аутентификацию с помощью управляемой идентичности. Дополнительные сведения см. в разделе об управляемой службе Azure Monitor для удаленной записи Prometheus с использованием управляемого удостоверения.
Предварительные условия
Поддерживаемые версии
- Версии Prometheus, превышающие версию 2.48, необходимы для проверки подлинности приложения Идентификатора Microsoft Entra.
Рабочая область Azure Monitor
В этой статье описывается отправка метрик Prometheus в рабочую область Azure Monitor. Сведения о создании рабочей области Azure Monitor см. в статье "Управление рабочей областью Azure Monitor".
Разрешения
Разрешения администратора для кластера или ресурса необходимы для выполнения действий, описанных в этой статье.
Настройка приложения для идентификатора Microsoft Entra
Процесс настройки удаленной записи Prometheus для приложения с помощью проверки подлинности Microsoft Entra включает выполнение следующих задач:
- Регистрация приложения с Microsoft Entra ID.
- Получите идентификатор клиента приложения Microsoft Entra.
- Назначьте приложению роль публикации метрик мониторинга в правиле сбора данных рабочей области.
- Создайте хранилище ключей Azure и создайте сертификат.
- Добавьте сертификат в приложение Microsoft Entra.
- Добавьте драйвер И хранилище CSI для кластера.
- Разверните побочный контейнер для настройки удаленной записи.
Задачи описаны в следующих разделах.
Регистрация приложения с помощью идентификатора Microsoft Entra
Выполните шаги для регистрации приложения в Microsoft Entra ID и создания учетной записи для службы.
Получение идентификатора клиента приложения Microsoft Entra
- В портал Azure перейдите в меню идентификатора Microsoft Entra ID и выберите Регистрация приложений.
- В списке приложений скопируйте значение для идентификатора приложения (клиента) для зарегистрированного приложения.
Назначьте приложению роль издателя метрик мониторинга в правиле сбора данных рабочей области
Приложение должно быть назначено роли издателя метрик мониторинга в правиле сбора данных, связанном с рабочей областью Azure Monitor.
В меню ресурсов для рабочей области Azure Monitor выберите "Обзор". Для правила сбора данных выберите ссылку.
В меню ресурсов для правила сбора данных выберите элемент управления доступом (IAM).
Выберите Добавить, затем выберите Добавить назначение ролей.
Выберите роль издателя метрик мониторинга и нажмите кнопку "Далее".
Выберите "Пользователь", "Группа" или "Субъект-служба", а затем выберите "Выбрать участников". Выберите созданное приложение и нажмите кнопку "Выбрать".
Чтобы завершить назначение роли, нажмите кнопку "Проверить и назначить".
Создание хранилища ключей Azure и создание сертификата
- Если у вас еще нет хранилища ключей Azure, создайте хранилище.
- Создайте сертификат с помощью руководства по добавлению сертификата в Key Vault.
- Скачайте сертификат в формате CER с помощью руководства по экспорту сертификата из Key Vault.
Добавление сертификата в приложение Microsoft Entra
В меню ресурсов для приложения Microsoft Entra выберите сертификаты и секреты.
На вкладке "Сертификаты" выберите "Отправить сертификат " и выберите скачанный сертификат.
Предупреждение
Сертификаты имеют дату окончания срока действия. Это ответственность пользователя за хранение сертификатов.
Добавление драйвера и хранилища CSI для кластера
Примечание.
Конфигурация драйвера CSI для Azure Key Vault — это только один из способов монтирования сертификата в поде. Контейнеру удаленной записи требуется локальный путь к сертификату в pod только для значения в шаге «Развернуть контейнер сайдкар для настройки удаленной записи».
Этот шаг необходим, только если при создании кластера вы не включили поставщика Azure Key Vault для CSI-драйвера хранилища секретов.
Чтобы включить поставщик Azure Key Vault для драйвера хранилища секретов CSI для кластера, выполните следующую команду Azure CLI:
az aks enable-addons --addons azure-keyvault-secrets-provider --name <aks-cluster-name> --resource-group <resource-group-name>
Чтобы предоставить удостоверению доступ к хранилищу ключей, выполните следующие команды:
# show client id of the managed identity of the cluster az aks show -g <resource-group> -n <cluster-name> --query addonProfiles.azureKeyvaultSecretsProvider.identity.clientId -o tsv # set policy to access keys in your key vault az keyvault set-policy -n <keyvault-name> --key-permissions get --spn <identity-client-id> # set policy to access secrets in your key vault az keyvault set-policy -n <keyvault-name> --secret-permissions get --spn <identity-client-id> # set policy to access certs in your key vault az keyvault set-policy -n <keyvault-name> --certificate-permissions get --spn <identity-client-id>
Создайте
SecretProviderClass
, сохранив следующий YAML в файл с именем secretproviderclass.yml. Замените значения дляuserAssignedIdentityID
,keyvaultName
,tenantId
, а также объекты, которые нужно извлечь из хранилища ключей. Для получения информации о значениях, которые нужно использовать, см. раздел "Предоставление удостоверения для доступа к Azure Key Vault для CSI-драйвера хранилища секретов".# This is a SecretProviderClass example using user-assigned identity to access your key vault apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClass metadata: name: azure-kvname-user-msi spec: provider: azure parameters: usePodIdentity: "false" useVMManagedIdentity: "true" # Set to true for using managed identity userAssignedIdentityID: <client-id> # Set the client ID of the user-assigned managed identity to use keyvaultName: <key-vault-name> # Set to the name of your key vault cloudName: "" # [OPTIONAL for Azure] if not provided, the Azure environment defaults to AzurePublicCloud objects: | array: - | objectName: <name-of-cert> objectType: secret # object types: secret, key, or cert objectFormat: pfx objectEncoding: base64 objectVersion: "" tenantId: <tenant-id> # The tenant ID of the key vault
Для применения
SecretProviderClass
выполните следующую команду в вашем кластере:kubectl apply -f secretproviderclass.yml
Развернуть контейнер-побочник для настройки удаленной записи
Скопируйте следующий YAML и сохраните его в файл. YAML использует порт 8081 в качестве порта прослушивания. При использовании другого порта измените это значение в YAML.
prometheus: prometheusSpec: externalLabels: cluster: <CLUSTER-NAME> ## Azure Managed Prometheus currently exports some default mixins in Grafana. ## These mixins are compatible with data scraped by Azure Monitor agent on your ## Azure Kubernetes Service cluster. These mixins aren't compatible with Prometheus ## metrics scraped by the Kube Prometheus stack. ## To make these mixins compatible, uncomment the 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 ## https://prometheus.io/docs/prometheus/latest/configuration/configuration/#remote_write remoteWrite: - url: 'http://localhost:8081/api/v1/write' # Additional volumes on the output StatefulSet definition. # Required only for Microsoft Entra ID based auth volumes: - name: secrets-store-inline csi: driver: secrets-store.csi.k8s.io readOnly: true volumeAttributes: secretProviderClass: azure-kvname-user-msi containers: - name: prom-remotewrite image: <CONTAINER-IMAGE-VERSION> imagePullPolicy: Always # Required only for Microsoft Entra ID based auth volumeMounts: - name: secrets-store-inline mountPath: /mnt/secrets-store readOnly: true 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: aadApplication - name: AZURE_CLIENT_ID value: '<APP-REGISTRATION-CLIENT-ID>' - name: AZURE_TENANT_ID value: '<TENANT-ID>' - name: AZURE_CLIENT_CERTIFICATE_PATH value: /mnt/secrets-store/<CERT-NAME> - name: CLUSTER value: '<CLUSTER-NAME>'
Замените следующие значения в ФАЙЛЕ YAML:
значение Описание <CLUSTER-NAME>
Имя кластера AKS. <CONTAINER-IMAGE-VERSION>
mcr.microsoft.com/azuremonitor/containerinsights/ciprod/prometheus-remote-write/images:prom-remotewrite-20250326.1
Версия образа контейнера для удаленной записи.<INGESTION-URL>
Значение конечной точки приема метрик на странице обзора рабочей области Azure Monitor. <APP-REGISTRATION -CLIENT-ID>
Идентификатор клиента приложения. <TENANT-ID>
Идентификатор клиента приложения Microsoft Entra. <CERT-NAME>
Имя сертификата. <CLUSTER-NAME>
Имя кластера, на котором работает Prometheus. Откройте Azure Cloud Shell и отправьте ФАЙЛ YAML.
Используйте Helm, чтобы применить YAML-файл и обновить конфигурацию Prometheus:
# set the 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 из кластера AKS
- Дополнительные сведения об управляемой службе Azure Monitor для Prometheus
- Удаленное архивирование в управляемой службе Azure Monitor Prometheus
- Отправка данных Prometheus в Azure Monitor с использованием аутентификации управляемой идентификацией
- Отправка данных Prometheus в Azure Monitor с использованием аутентификации Microsoft Entra Workload ID (предварительная версия)
- Отправка данных Prometheus в Azure Monitor с использованием проверки подлинности с управляемым идентификатором pod Microsoft Entra (предварительная версия)