Переход с Prometheus SigV4 на Amazon Managed Service for Prometheus
Warning
Использование аутентификации SigV4 с основным источником данных Prometheus для Amazon Managed Service for Prometheus устарело. В Grafana 13 переход на выделенный источник данных Amazon Managed Service for Prometheus выполняется автоматически. Существующие источники данных, использующие SigV4, мигрируются при запуске.
Предысторию этого изменения см. в статье Prometheus data source update: Redefining our big tent philosophy.
Что изменилось в Grafana 13
В Grafana 13 флаг функции prometheusTypeMigration включён по умолчанию и устарел. Это означает:
- Источники данных Prometheus, настроенные с аутентификацией SigV4, автоматически мигрируются в выделенный плагин Amazon Managed Service for Prometheus при запуске Grafana.
- Вам больше не нужно вручную включать флаг функции.
- Пользователи Grafana Cloud мигрируются автоматически без каких-либо действий.
- Дашборды, алерты и запросы продолжают работать после миграции без изменений.
Проверка статуса миграции
Чтобы определить, были ли мигрированы ваши источники данных Prometheus:
- Перейдите в Connections > Data sources.
- Выберите ваш источник данных Prometheus.
- Найдите баннер миграции в верхней части страницы конфигурации.
Баннер отображает одно из следующих сообщений:
- «Migration Notice»: источник данных был мигрирован в плагин Amazon Managed Service for Prometheus.
- «Deprecation Notice»: источник данных ещё не мигрирован.
- Нет баннера: миграция не требуется (источник данных не использует SigV4).
Настройка источника данных Amazon Managed Service for Prometheus
После миграции (или для новых настроек) настройте выделенный плагин:
- Перейдите в Connections > Data sources.
- Выберите ваш источник данных Amazon Managed Service for Prometheus.
- В разделе Auth настройте аутентификацию SigV4:
-
Установите HTTP URL в конечную точку вашей рабочей области Amazon Managed Service for Prometheus:
https://aps-workspaces.us-west-2.amazonaws.com/workspaces/ws-12345678-1234-1234-1234-123456789012/ -
Нажмите Save & test, чтобы проверить подключение.
Провижининг источника данных
apiVersion: 1
datasources:
- name: Amazon Managed Prometheus
type: grafana-amazonprometheus-datasource
url: https://aps-workspaces.us-west-2.amazonaws.com/workspaces/ws-12345678-1234-1234-1234-123456789012/
jsonData:
httpMethod: POST
sigV4Auth: true
sigV4AuthType: keys
sigV4Region: us-east-2
secureJsonData:
sigV4AccessKey: <ACCESS_KEY>
sigV4SecretKey: <SECRET_KEY>
Замените <ACCESS_KEY> и <SECRET_KEY> на ваши учётные данные AWS.
Устранение проблем миграции
Следующие разделы охватывают распространённые проблемы, с которыми вы можете столкнуться во время или после миграции, и способы их решения.
Плагин Amazon Managed Service for Prometheus не установлен
Симптом: миграция не происходит, или тип источника данных отсутствует.
Решение:
- Перейдите в Connections > Add new connection и найдите «Amazon Managed Service for Prometheus».
- Установите плагин, если он ещё не установлен.
- Для изолированных сред (air-gapped) загрузите плагин из каталога плагинов Grafana и установите его вручную.
«401 Unauthorized» после миграции
Симптом: мигрированный источник данных возвращает ошибки аутентификации.
Решение:
- Самостоятельно размещённая Grafana: убедитесь, что
grafana-amazonprometheus-datasourceвключён вforward_settings_to_pluginsв разделе[aws]вашего файла конфигурации.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_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 AMP to 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-amazonprometheus-datasource")] | length')
log_message "Found $total data sources to revert"
echo "$response_body" | jq -c '.[] | select(.jsonData["prometheus-type-migration"] == true and .type == "grafana-amazonprometheus-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.