Переход с 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:
- Перейдите в Connections > Data sources.
- Выберите ваш источник данных Prometheus.
- Найдите баннер миграции в верхней части страницы конфигурации.
Баннер отображает одно из следующих сообщений:
- «Migration Notice»: источник данных был мигрирован в плагин Azure Monitor Managed Service for Prometheus.
- «Deprecation Notice»: источник данных ещё не мигрирован.
- Нет баннера: миграция не требуется (источник данных не использует аутентификацию Azure AD).
Настройка источника данных Azure Monitor Managed Service for Prometheus
После миграции (или для новых настроек) настройте выделенный плагин:
- Перейдите в Connections > Data sources.
- Выберите ваш источник данных Azure Monitor Managed Service for Prometheus.
- В разделе Authentication выберите метод аутентификации:
Для аутентификации Managed Identity:
- Дополнительная конфигурация не требуется, если используется назначаемая системой идентичность.
- Для назначаемой пользователем идентичности укажите Client ID.
Для аутентификации App Registration:
Чтобы узнать больше об аутентификации Entra ID для Grafana, см. Настройка аутентификации Entra ID OAuth.
-
Установите Prometheus server URL в конечную точку вашей рабочей области Azure Monitor:
https://your-workspace.eastus2.prometheus.monitor.azure.com -
Нажмите Save & test, чтобы проверить подключение.
Провижининг источника данных
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 не установлен
Симптом: миграция не происходит, или тип источника данных отсутствует.
Решение:
- Перейдите в Connections > Add new connection и найдите «Azure Monitor Managed Service for Prometheus».
- Установите плагин, если он ещё не установлен.
- Для изолированных сред (air-gapped) загрузите плагин из каталога плагинов Grafana и установите его вручную.
«401 Unauthorized» после миграции
Симптом: мигрированный источник данных возвращает ошибки аутентификации.
Решение:
- Самостоятельно размещённая Grafana: убедитесь, что
grafana-azureprometheus-datasourceвключён вforward_settings_to_pluginsв разделе[azure]вашего файла конфигурации.ini. - Grafana Cloud: свяжитесь с поддержкой Grafana.
Откат миграции
Если вам нужно вернуть мигрированные источники данных обратно к основному типу Prometheus:
- Установите
prometheusTypeMigrationвfalseв флагах функций конфигурации Grafana. Дополнительную информацию см. в разделе Управление флагами функций. - Перезапустите Grafana.
- Получите bearer-токен с разрешениями
readиwriteдля API источников данных. Дополнительную информацию см. в разделе API источников данных. - Запустите следующий скрипт отката, указав ваш URL Grafana и bearer-токен:
#!/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.