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

Переход с 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:

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

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

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

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

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

  1. Перейдите в Connections > Data sources.
  2. Выберите ваш источник данных Amazon Managed Service for Prometheus.
  3. В разделе Auth настройте аутентификацию SigV4:
Настройка Описание Пример
Authentication Provider Выберите ваш метод аутентификации AWS SDK Default, Access & secret key или Credentials file
Default Region Регион AWS для вашей рабочей области us-west-2
Access Key ID Ваш ключ доступа AWS (при аутентификации по ключу) AKIA...
Secret Access Key Ваш секретный ключ AWS (при аутентификации по ключу) wJalrXUtn...
Assume Role ARN ARN роли IAM (необязательно) arn:aws:iam::123456789:role/GrafanaRole
  1. Установите HTTP URL в конечную точку вашей рабочей области Amazon Managed Service for Prometheus: https://aps-workspaces.us-west-2.amazonaws.com/workspaces/ws-12345678-1234-1234-1234-123456789012/

  2. Нажмите Save & test, чтобы проверить подключение.

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

YAML
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 не установлен

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

Решение:

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

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

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

Решение:

  1. Самостоятельно размещённая Grafana: убедитесь, что grafana-amazonprometheus-datasource включён в forward_settings_to_plugins в разделе [aws] вашего файла конфигурации .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_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.