Последнее обновление: августа 4, 2026

Переход с Prometheus Azure AD на Azure Monitor Managed Service for Prometheus

Warning

Использование аутентификации Azure AD с основным источником данных Prometheus для Azure Monitor Managed Service for Prometheus устарело. В Grafana 13 переход на выделенный источник данных Azure Monitor Managed Service for Prometheus выполняется автоматически. Существующие источники данных, использующие аутентификацию Azure AD, мигрируются при запуске.

Предысторию этого изменения см. в статье Prometheus data source update: Redefining our big tent philosophy.

Что изменилось в Grafana 13

В Grafana 13 флаг функции prometheusTypeMigration включён по умолчанию и устарел. Это означает:

  • Источники данных Prometheus, настроенные с аутентификацией Azure AD, автоматически мигрируются в выделенный плагин Azure Monitor Managed Service for Prometheus при запуске Grafana.
  • Вам больше не нужно вручную включать флаг функции.
  • Пользователи Grafana Cloud мигрируются автоматически без каких-либо действий.
  • Дашборды, алерты и запросы продолжают работать после миграции без изменений.

Проверка статуса миграции

Чтобы определить, были ли мигрированы ваши источники данных Prometheus:

  1. Перейдите в Connections > Data sources.
  2. Выберите ваш источник данных Prometheus.
  3. Найдите баннер миграции в верхней части страницы конфигурации.

Баннер отображает одно из следующих сообщений:

  • «Migration Notice»: источник данных был мигрирован в плагин Azure Monitor Managed Service for Prometheus.
  • «Deprecation Notice»: источник данных ещё не мигрирован.
  • Нет баннера: миграция не требуется (источник данных не использует аутентификацию Azure AD).

Настройка источника данных Azure Monitor Managed Service for Prometheus

После миграции (или для новых настроек) настройте выделенный плагин:

  1. Перейдите в Connections > Data sources.
  2. Выберите ваш источник данных Azure Monitor Managed Service for Prometheus.
  3. В разделе Authentication выберите метод аутентификации:
Метод Случай использования Требуется дополнительная конфигурация
Managed Identity Размещённые в Azure экземпляры Grafana Нет (назначаемая системой) или Client ID (назначаемая пользователем)
App Registration Аутентификация субъекта-службы Directory ID, Application ID, Client secret
Current User Учётные данные Entra ID текущего пользователя Нет

Для аутентификации Managed Identity:

  • Дополнительная конфигурация не требуется, если используется назначаемая системой идентичность.
  • Для назначаемой пользователем идентичности укажите Client ID.

Для аутентификации App Registration:

Настройка Описание Пример
Directory (tenant) ID ID вашего клиента Entra ID 12345678-1234-1234-1234-123456789012
Application (client) ID ID клиента вашей регистрации приложения 87654321-4321-4321-4321-210987654321
Client secret Секрет вашей регистрации приложения your-client-secret

Чтобы узнать больше об аутентификации Entra ID для Grafana, см. Настройка аутентификации Entra ID OAuth.

  1. Установите Prometheus server URL в конечную точку вашей рабочей области Azure Monitor:

    https://your-workspace.eastus2.prometheus.monitor.azure.com
  2. Нажмите Save & test, чтобы проверить подключение.

Провижининг источника данных

YAML
apiVersion: 1
datasources:
  - name: Azure Monitor Prometheus
    type: grafana-azureprometheus-datasource
    url: https://your-workspace.eastus2.prometheus.monitor.azure.com
    jsonData:
      azureCredentials:
        authType: clientsecret
        azureCloud: AzureCloud
        clientId: <CLIENT_ID>
        tenantId: <TENANT_ID>
      httpMethod: POST
    secureJsonData:
      azureClientSecret: <CLIENT_SECRET>

Замените <CLIENT_ID>, <TENANT_ID> и <CLIENT_SECRET> на ваши учётные данные Azure.

Устранение проблем миграции

Следующие разделы охватывают распространённые проблемы, с которыми вы можете столкнуться во время или после миграции, и способы их решения.

Плагин Azure Monitor Managed Service for Prometheus не установлен

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

Решение:

  1. Перейдите в Connections > Add new connection и найдите «Azure Monitor Managed Service for Prometheus».
  2. Установите плагин, если он ещё не установлен.
  3. Для изолированных сред (air-gapped) загрузите плагин из каталога плагинов Grafana и установите его вручную.

«401 Unauthorized» после миграции

Симптом: мигрированный источник данных возвращает ошибки аутентификации.

Решение:

  1. Самостоятельно размещённая Grafana: убедитесь, что grafana-azureprometheus-datasource включён в forward_settings_to_plugins в разделе [azure] вашего файла конфигурации .ini.
  2. Grafana Cloud: свяжитесь с поддержкой Grafana.

Откат миграции

Если вам нужно вернуть мигрированные источники данных обратно к основному типу Prometheus:

  1. Установите prometheusTypeMigration в false в флагах функций конфигурации Grafana. Дополнительную информацию см. в разделе Управление флагами функций.
  2. Перезапустите Grafana.
  3. Получите bearer-токен с разрешениями read и write для API источников данных. Дополнительную информацию см. в разделе API источников данных.
  4. Запустите следующий скрипт отката, указав ваш URL Grafana и bearer-токен:
sh
#!/bin/bash

GRAFANA_URL=""
BEARER_TOKEN=""
LOG_FILE="grafana_azure_migration_rollback_$(date +%Y%m%d_%H%M%S).log"

log_message() {
    local message="$1"
    local timestamp=$(date '+%Y-%m-%d %H:%M:%S')
    echo "[$timestamp] $message" | tee -a "$LOG_FILE"
}

update_data_source() {
    local uid="$1"
    local data="$2"

    response=$(curl -s -w "\n%{http_code}" -X PUT \
        -H "Content-Type: application/json" \
        -H "Authorization: Bearer $BEARER_TOKEN" \
        -d "$data" \
        "$GRAFANA_URL/api/datasources/uid/$uid")

    http_code=$(echo "$response" | tail -n1)
    response_body=$(echo "$response" | sed '$d')

    if [[ "$http_code" -ge 200 && "$http_code" -lt 300 ]]; then
        log_message "$uid reverted successfully"
    else
        log_message "$uid error: HTTP $http_code - $response_body"
    fi
}

if ! command -v jq &> /dev/null; then
    echo "Error: jq is required but not installed."
    exit 1
fi

if [[ -z "$GRAFANA_URL" || -z "$BEARER_TOKEN" ]]; then
    echo "Error: Set GRAFANA_URL and BEARER_TOKEN variables at the top of the script."
    exit 1
fi

log_message "Starting Azure Prometheus to core Prometheus rollback"

response=$(curl -s -w "\n%{http_code}" -X GET \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer $BEARER_TOKEN" \
    "$GRAFANA_URL/api/datasources/")

http_code=$(echo "$response" | tail -n1)
response_body=$(echo "$response" | sed '$d')

if [[ "$http_code" -lt 200 || "$http_code" -ge 300 ]]; then
    log_message "Error fetching data sources: HTTP $http_code"
    exit 1
fi

total=$(echo "$response_body" | jq '[.[] | select(.jsonData["prometheus-type-migration"] == true and .type == "grafana-azureprometheus-datasource")] | length')
log_message "Found $total data sources to revert"

echo "$response_body" | jq -c '.[] | select(.jsonData["prometheus-type-migration"] == true and .type == "grafana-azureprometheus-datasource")' | while read -r data; do
    uid=$(echo "$data" | jq -r '.uid')
    read_only=$(echo "$data" | jq -r '.readOnly // false')

    if [[ "$read_only" == "true" ]]; then
        log_message "$uid is readOnly; edit the type to 'prometheus' in the provisioning file instead."
        continue
    fi

    updated_data=$(echo "$data" | jq '.type = "prometheus" | .jsonData["prometheus-type-migration"] = false')
    update_data_source "$uid" "$updated_data"
done

log_message "Rollback complete. Log: $LOG_FILE"

Note

Провижининг источников данных (readOnly) не может быть отменён через API. Вместо этого обновите поле type до prometheus в вашем файле YAML провижининга.

Если проблемы сохраняются, проверьте журналы сервера Grafana на предмет подробных сообщений об ошибках и свяжитесь с поддержкой Grafana.