С 20.05 сервис quota-manager перестал отдавать сервис billing
и соответственно метрики квот по нему. В логах функции соответствующая ошибка. На работу скрипта никак не влияет.
-
Установить и инициализировать YC CLI. Утилита потребуется далее для получения IAM-токена. Подробную инструкцию можно найти по этой ссылке в нашей документации.
-
Настроить terraform для работы с Yandex Cloud по инструкции;
-
Пользователь или сервисный аккаунт от имени которого применяется terraform-манифест имеет роль для выдачи ролей на уровне организации и создания ресурсов каталоге, где разворачивается решение. Не ниже
organization-manager.admin
;
.
├── README.md
├── vars.tf
├── main.tf
├── provider.tf
├── index.py
-
Сервисный аккаунт
quota-monitor-sa
; -
IAM binding с ролью
monitoring.editor
для сервисного аккаунтаquota-monitor-sa
на уровне каталога; -
IAM binding с ролью
quota-manager.viewer
для сервисного аккаунтаquota-monitor-sa
на уровне организации; -
Функция
quota_monitor_function
; -
IAM binding с ролью
serverless.functions.invoker
для сервисного аккаунтаquota-monitor-sa
на функциюquota_monitor_function
; -
Триггер
quota_monitor_function_trigger
для вызова функцииquota_monitor_function
по cron-расписанию; -
Дашборды
quota_monitor_clouds
,quota_monitor_billing
иquota_monitor_organization_manager
.
- Триггер
quota_monitor_function_trigger
вызывает функциюquota_monitor_function
от имени сервисного аккаунтаquota-monitor-sa
; - При вызове функции
quota_monitor_function
получаем IAM-токен привязанного сервисного аккаунтаquota-monitor-sa
используя сервис метаданных; - В переменные окружения функции передаются
FOLDER_ID
иBILLING_ID
; - Для каждого ресурса: организация, облако, биллинг аккаунт делаем API запрос квот
quota_limits
; - Все доступные метрики по квотам записываются в виде
quota.{id}._limit
/quota.{id}._value
; - Новые облака автоматически добавляются в мониторинг;
- Собранные метрики записываются в
custom
сервис Yandex Monitoring заранее определенного каталога; - Логи работы функции по-умолчанию записываются в лог-группу
default
в сервисеCloung Logging
.
Некоторые ресурсы платные и тарифицируются согласно следующим правилам:
-
Serverless Functions - https://yandex.cloud/ru/docs/functions/pricing
-
Yandex Monitoring (запись метрик) - https://yandex.cloud/ru/docs/monitoring/pricing
-
Cloud Logging (запись логов функции) - https://yandex.cloud/ru/docs/logging/pricing
- Клонировать код из репозитория:
$ git clone https://github.com/yandex-cloud-examples/yc-support-quota-monitoring.git
$ cd yc-support-quota-monitoring
-
В конфигурации
provider.tf
изменить параметр авторизацииtoken
на полученный IAM-токен с помощью yc CLIyc iam create-token
(или заменить на свой способ) и значенияcloud_id
,folder_id
иzone
; -
В конфигурации
main.tf
изменить значение параметраexecution_timeout
для ресурсаyandex_function
.quota_monitor_function
из расчета: 10 облаков в организации 60 секунд таймаута; -
В конфигурации
vars.tf
заменить значения для переменных:-
monitoring_folder_id
- каталог, в котором будет развернута инфраструктура с Serverless Function, сервисным аккаунтом и дашбордами Yandex Monitoring. Метрики квот будут записаны в сервисcustom
этого каталога. Рекомендуем использовать уникальный каталог для этого проекта. -
monitoring_organization_id
- идентификатор организации для которой разворачивается мониторинг. Если вы используете больше 1 организации, то для настройки мониторинга квот, проект необходимо устанавливать для каждой организации; -
monitoring_billing_account_id
- идентификатор Billing Account в котором скрипт будет проверять квоты. Если вы используете >1 Billing Account в организации, в значение переменной можно указать несколько идентификаторов, разделенных символом,
(прим.dn2************,dn2************
).
-
- Архивировать скрипт
index.py
$ zip quota-monitor.zip index.py
- Инициализация Terraform
$ terraform init
- Посмотреть план и применить конфигурацию
$ terraform plan
$ terraform apply
-
В каталоге
monitoring_folder_id
должны появиться созданные ресурсы. Метрики квот и дашборды будут доступны в сервисе Yandex Monitoring. Посмотреть можно по ссылке: https://monitoring.yandex.cloud/folders/{monitoring_folder_id}/dashboards -
По желанию, вы можете настроить:
- Алерты для оперативного реагирования на приближение квот к лимитам по документации;
- Изменить расписание (
cron_expression
) срабатывания триггераquota_monitor_function_trigger
в конфигурацииmain.tf
(по-умолчанию каждые 30 минут).
- Зеркало Terraform-провайдера Yandex Cloud.
- Управление доступом в Resource Manager.
- Роли Identity and Access Management.
Актуальные версии провайдера и Terraform на момент тестирования:
$ terraform -version
Terraform v1.4.2
on darwin_amd64
+ provider registry.terraform.io/yandex-cloud/yandex v0.140.1