Управление затратами с помощью бюджетов
Управление расходами имеет огромное значение для повышения окупаемости инвестиций в облако. Есть несколько сценариев, где сведения о расходах, отчетность и оркестрация с учетом затрат очень важны для обеспечения непрерывных бизнес-операций. Среди API-интерфейсов службы "Управление затратами" есть набор API, подходящий для каждого из этих сценариев. API предоставляют сведения об использовании, позволяя просматривать детальные данные о расходах на уровне экземпляра.
Бюджеты обычно используются в рамках управления затратами. В Azure бюджеты можно ограничить. Например, представление бюджета можно сузить до подписки, группы ресурсов или коллекции ресурсов. Помимо использования API бюджетов для отправки Уведомления по электронной почте при достижении порогового значения бюджета, можно также использовать группы действий Azure Monitor. Группы действий активируют согласованный набор действий в ответ на событие бюджета.
Типичный сценарий бюджета для клиента, на котором выполняется некритическая рабочая нагрузка, заключается в управлении расходами по бюджету и достижению прогнозируемых затрат при проверке ежемесячного счета. Для этого сценария требуется выполнить оркестрацию с учетом расходов на ресурсы, которые являются частью среды Azure. В этом сценарии устанавливается ежемесячный бюджет в размере 1000 долларов для подписки. Кроме того, заданы пороги уведомлений для активации нескольких действий оркестрации. Этот сценарий начинается с порога затрат на 80 %, что останавливает все виртуальные машины в группе ресурсов Необязательно. Затем при пороге затрат на 100 % все экземпляры виртуальных машин остановлены.
Чтобы настроить этот сценарий, выполните следующие действия, выполнив действия, описанные в каждом разделе этого руководства.
Действия, приведенные в этом руководстве, позволят сделать следующее:
- Создать runbook службы автоматизации Azure, чтобы останавливать виртуальные машины с помощью веб-перехватчиков.
- Создать приложение логики Azure, которое будет активироваться при достижении значения порога бюджета и вызывать runbook с правильными параметрами.
- Создайте группу действий Azure Monitor, настроенную для активации приложения логики Azure при достижении порогового значения бюджета.
- Создайте бюджет с нужными порогами и подключите его к группе действий.
Создание runbook службы автоматизации Azure
Служба автоматизации Azure — это служба, позволяющая создавать сценарии большинства задач по управлению ресурсами и выполнять эти задачи по расписанию или по требованию. В рамках этого сценария создается модуль Runbook служба автоматизации Azure, который останавливает виртуальные машины. Для создания этого сценария используйте графический модуль Runbook для остановки виртуальных машин Azure версии 2 из коллекции служба автоматизации Azure. Импортировав этот runbook в учетную запись Azure и опубликовав его, вы сможете остановить виртуальные машины при достижении порога бюджета.
Примечание.
Вы можете создать бюджет в службе "Управление затратами Azure" и связать его с модулю Runbook служба автоматизации Azure, чтобы автоматически остановить ресурсы при достижении указанного порогового значения.
Создание учетной записи службы автоматизации Azure
- Войдите на портал Azure с учетными данными учетной записи Azure.
- Нажмите кнопку Создать ресурс в верхнем левом углу окна портала Azure.
- Выберите Средства управления>Автоматизация.
Примечание.
Если у вас нет учетной записи Azure, вы можете создать бесплатную учетную запись.
- Введите сведения об учетной записи. Для параметра Создать учетную запись запуска от имени Azure выберите Да, чтобы автоматически включить параметры, необходимые для упрощения аутентификации в Azure.
- По завершении выберите Создать, чтобы начать развертывание учетной записи службы автоматизации.
Импорт runbook для остановки виртуальных машин Azure версии 2
Используя runbook службы автоматизации Azure, импортируйте графический runbook остановки виртуальных машин Azure версии 2 из коллекции.
- Войдите на портал Azure с учетными данными учетной записи Azure.
- Откройте учетную запись службы автоматизации, выбрав Все службы>Учетные записи автоматизации. Затем выберите учетную запись службы автоматизации Azure.
- Выберите элемент Коллекция модулей Runbook в разделе Автоматизация процессов.
- Для параметра Источник коллекции задайте значение Центр сценариев и нажмите кнопку ОК.
- Найдите и выберите элемент коллекции Stop Azure V2 VMs (Остановка виртуальных машин Azure версии 2) на портале Azure.
- Выберите элемент Импорт, чтобы отобразить область Импорт, а затем нажмите кнопку ОК. Отображается область обзора модуля Runbook.
- После завершения процесса импорта модуля Runbook выберите "Изменить ", чтобы отобразить графический редактор runbook и параметр публикации.
- Выберите Опубликовать, чтобы опубликовать runbook, и нажмите кнопку Да в появившемся запросе. При публикации runbook имеющаяся опубликованная версия перезаписывается черновой версией. В этом случае у вас нет опубликованной версии, так как вы создали модуль Runbook. Дополнительные сведения о публикации runbook см. в статье Первый графический Runbook.
Создание веб-перехватчиков для runbook
С помощью графического модуля runbook Stop Azure V2 VMs вы создаете два веб-перехватчика, чтобы запустить runbook в службе автоматизации Azure с помощью одного HTTP-запроса. Первый веб-перехватчик вызывает runbook при достижении порога бюджета в 80 % с именем группы ресурсов в качестве параметра, что позволяет остановить дополнительные виртуальные машины. Затем второй веб-перехватчик вызывает runbook без параметров (при достижении 100 %), в результате чего останавливаются все остальные экземпляры виртуальных машин.
- На странице Модули Runbook на портале Azure выберите модуль runbook StopAzureV2Vm, который отображается в области обзора модулей runbook.
- Выберите Веб-перехватчик в верхней части страницы, чтобы открыть область Добавить веб-перехватчик.
- Выберите Создать новый веб-перехватчик, чтобы открыть область создания веб-перехватчика.
- Для параметра Имя веб-перехватчика задайте значение Дополнительно. Для свойства Включено необходимо выбрать значение Да. Значение параметра Срок действия можно не менять. Дополнительные сведения о свойствах веб-перехватчиков см. здесь.
- Возле значения URL-адреса щелкните значок копирования, чтобы скопировать URL-адрес веб-перехватчика.
Внимание
Сохраните URL-адрес веб-перехватчика с именем Дополнительно в надежном месте. Этот URL-адрес понадобится позже в этом руководстве. Из соображений безопасности после создания веб-перехватчика URL-адрес нельзя просмотреть или получить повторно.
- Нажмите кнопку ОК, чтобы создать новый веб-перехватчик.
- Выберите Настройка параметров и настроек запуска, чтобы просмотреть значения параметров runbook.
Примечание.
Если модуль Runbook содержит обязательные параметры, то его нельзя будет создать, не указав значения.
- Нажмите кнопку ОК, чтобы принять значения параметров веб-перехватчика.
- Выберите элемент Создать, чтобы создать веб-перехватчик.
- Затем выполните указанные выше действия, чтобы создать второй веб-перехватчик с именем Complete.
Внимание
Обязательно сохраните оба URL-адреса веб-перехватчиков для использования далее в этом руководстве. Из соображений безопасности после создания веб-перехватчика URL-адрес нельзя просмотреть или получить повторно.
Теперь у вас два настроенных веб-перехватчика, каждый из которых доступен по сохраненным URL-адресам.
Вы завершили настройку служба автоматизации Azure. Вы можете протестировать веб-перехватчики с помощью простого теста API, чтобы убедиться, что веб-перехватчик работает. Ниже приведены некоторые популярные способы запроса API:
- Visual Studio
- Insomnia
- Бруно
- Вызов PowerShell-RestMethod
- Curl
Далее необходимо создать приложение логики для оркестрации.
Создание приложения логики Azure для оркестрации
Logic Apps помогает создавать, планировать и автоматизировать рабочие процессы, что позволяет интегрировать приложения, данные, системы и службы на разных предприятиях или в организациях. В этом сценарии приложение логики, которое вы создаете, делает немного больше, чем просто вызовите созданный веб-перехватчик автоматизации.
Бюджеты можно настроить для запуска уведомления при достижении указанного порога. Вы можете предоставить несколько пороговых значений, которые будут получать уведомления, и приложение логики демонстрирует возможность выполнения различных действий на основе порогового значения. В этом примере вы настроили сценарий, в котором вы получите несколько уведомлений. Первое уведомление о достижении 80% бюджета. Второе уведомление заключается в достижении 100% бюджета. Приложение логики используется для завершения работы всех виртуальных машин в группе ресурсов. Во-первых, необязательный порог достигается на 80%, а второй порог достигается, когда все виртуальные машины в подписке получают завершение работы.
Приложения логики позволяют предоставить пример схемы для триггера HTTP, но для них требуется задать заголовок Content-Type. Так как группа действий не содержит пользовательские заголовки для веб-перехватчика, необходимо проанализировать полезные данные в рамках отдельного шага. Вы используете действие Синтаксического анализа и предоставляете его пример полезных данных.
Создание приложения логики
Приложение логики выполняет несколько действий. В следующем списке представлен высокоуровневый набор действий, выполняемых приложением логики:
- Распознавание получения HTTP-запроса.
- Анализ переданных данных JSON для определения порогового значения, достигнутого
- Используйте условный оператор, чтобы проверить, достигнут ли пороговое значение 80 % или больше диапазона бюджета, но не больше или равно 100 %.
- Если достигнуто это пороговое значение, отправьте HTTP POST с помощью веб-перехватчика с именем "Необязательный". Это действие завершает работу виртуальных машин в группе "Необязательно".
- Используйте условную инструкцию, чтобы проверить, достигнут ли пороговое значение или превысило 100 % от стоимости бюджета.
- Если достигнуто пороговое значение, отправьте HTTP POST с помощью веб-перехватчика с именем Complete. Это действие завершает работу всех оставшихся виртуальных машин.
Для создания приложения логики, выполняющего указанные выше действия, необходимо выполнить следующие действия:
- На портале Azure выберите Создать ресурс>Интеграция>Приложение логики.
- В области Создание приложения логики укажите сведения, необходимые для создания приложения логики, выберите Закрепить на панели мониторинга и нажмите кнопку Создать.
После развертывания приложения логики в Azure открывается конструктор Logic Apps и отображается область с ознакомительным видео и часто используемыми триггерами.
Добавление триггера
Каждое приложение логики должно запускаться по триггеру, который активируется, когда происходит определенное событие или если выполняются заданные условия. При каждом срабатывании триггера обработчик Logic Apps создает экземпляр приложения логики, запускающий и выполняющий рабочий процесс. Действия — это все шаги, выполняемые после срабатывания триггера.
- В разделе Шаблоны области Конструктор Logic Apps выберите Пустое приложение логики.
- Добавьте триггер, введя "HTTP-запрос" в поле поиска конструктора Logic Apps, чтобы найти и выбрать триггер с именем Request – When an HTTP request is received (Запрос — при получении HTTP-запроса).
- Выберите Новый шаг>Добавить действие.
- Выполните поиск по запросу "анализ JSON" в поле поиска конструктора Logic Apps, чтобы найти и выбрать действие Data Operations - Parse JSON (Операции с данными — анализ JSON).
- Введите Payload в качестве имени содержимого для полезных данных Parse JSON или используйте тег Body из динамического содержимого.
- Выберите Использовать пример полезной нагрузки, чтобы создать схему в диалоговом поле Анализ JSON.
- Вставьте следующий пример полезных данных JSON в текстовое поле:
{"schemaId":"AIP Budget Notification","data":{"SubscriptionName":"CCM - Microsoft Azure Enterprise - 1","SubscriptionId":"<GUID>","SpendingAmount":"100","BudgetStartDate":"6/1/2018","Budget":"50","Unit":"USD","BudgetCreator":"email@contoso.com","BudgetName":"BudgetName","BudgetType":"Cost","ResourceGroup":"","NotificationThresholdAmount":"0.8"}}
Текстовое поле отображается следующим образом:
- Нажмите кнопку Готово.
Добавление первого условного действия
Используйте условный оператор, чтобы проверить, достигнут ли пороговое значение 80 % или больше диапазона бюджета, но не больше или равно 100 %. Если достигнуто это пороговое значение, отправьте HTTP POST с помощью веб-перехватчика с именем "Необязательный". Это действие завершает работу виртуальных машин в необязательной группе.
Выберите Новый шаг>Добавить условие.
В поле Условие выберите текстовое поле с текстом
Choose a value
, чтобы отобразить список доступных значений.
Выберите Выражение в верхней части списка и введите следующее выражение в редакторе выражений:
float()
Выберите Динамическое содержимое, поместите курсор внутри скобок () и выберите NotificationThresholdAmount из списка, чтобы заполнить полное выражение. Выражение:
float(body('Parse_JSON')?['data']?['NotificationThresholdAmount'])
Нажмите кнопку ОК, чтобы задать выражение.
Выберите больше или равно в раскрывающемся списке поля Условие.
В поле Выберите значение условия введите
.8
.
Нажмите кнопку "Добавить строку">в поле условия, чтобы добавить другую часть условия.
В поле Условие выберите текстовое поле с текстом
Choose a value
.Выберите Выражение в верхней части списка и введите следующее выражение в редакторе выражений:
float()
Выберите Динамическое содержимое, поместите курсор внутри скобок () и выберите NotificationThresholdAmount из списка, чтобы заполнить полное выражение.
Нажмите кнопку ОК, чтобы задать выражение.
В раскрывающемся списке поля Условие выберите меньше.
В поле Выберите значение условия введите
1
.
В поле Если истинно выберите Добавить действие. Вы добавляете действие HTTP POST, которое завершает работу необязательных виртуальных машин.
Введите HTTP, чтобы найти действие HTTP, и выберите действие HTTP — HTTP.
Выберите значение Post для параметра Метод.
Введите URL-адрес для веб-перехватчика с именем Дополнительно, созданного ранее в этом руководстве, в качестве значения URI.
В поле Если истинно выберите Добавить действие. Вы добавляете действие электронной почты, которое отправляет сообщение электронной почты, уведомляющее получателя о завершении работы необязательных виртуальных машин.
Выполните поиск по запросу "отправка сообщения" и выберите действие отправки сообщения электронной почты в зависимости от используемой службы электронной почты.
Для личных учетных записей Майкрософт выберите Outlook.com. Для рабочих или учебных учетных записей Azure выберите Office 365 Outlook. Если у вас еще нет подключения, вам будет предложено войти в учетную запись электронной почты. Logic Apps создает подключение к учетной записи электронной почты. Необходимо разрешить приложению логики доступ к данным электронной почты.
Добавьте текст "To", "Тема" и "Текст" для сообщения электронной почты, уведомляющего получателя о завершении работы необязательных виртуальных машин. Используйте динамическое содержимое BudgetName и NotificationThresholdAmount, чтобы заполнить поля "Тема" и "Текст".
Добавление второго условного действия
Используйте условную инструкцию, чтобы проверить, достигнут ли пороговое значение или превысило 100 % от стоимости бюджета. Если достигнуто пороговое значение, отправьте HTTP POST с помощью веб-перехватчика с именем Complete. Это действие завершает работу всех оставшихся виртуальных машин.
- Выберите Новый шаг>Добавить условие.
- В поле Условие выберите текстовое поле с текстом
Choose a value
, чтобы отобразить список доступных значений. - Выберите Выражение в верхней части списка и введите следующее выражение в редакторе выражений:
float()
- Выберите Динамическое содержимое, поместите курсор внутри скобок () и выберите NotificationThresholdAmount из списка, чтобы заполнить полное выражение.
Выражение напоминает следующее:
float(body('Parse_JSON')?['data']?['NotificationThresholdAmount'])
- Нажмите кнопку ОК, чтобы задать выражение.
- Выберите больше или равно в раскрывающемся списке поля Условие.
- В поле Выберите значение для условия введите
1
.
- В поле Если истинно выберите Добавить действие. Вы добавляете действие HTTP POST, которое завершает работу всех оставшихся виртуальных машин.
- Введите HTTP, чтобы найти действие HTTP, и выберите действие HTTP — HTTP.
- Выберите значение Post для параметра Метод.
- Введите URL-адрес для веб-перехватчика с именем Завершить, созданного ранее в этом руководстве, в качестве значения URI.
- В поле Если истинно выберите Добавить действие. Вы добавляете действие электронной почты, которое отправляет сообщение электронной почты, уведомляющее получателя о том, что остальные виртуальные машины были выключены.
- Выполните поиск по запросу "отправка сообщения" и выберите действие отправки сообщения электронной почты в зависимости от используемой службы электронной почты.
- Добавьте текст "To", "Тема" и "Текст" для сообщения электронной почты, уведомляющего получателя о завершении работы необязательных виртуальных машин. Используйте динамическое содержимое BudgetName и NotificationThresholdAmount, чтобы заполнить поля "Тема" и "Текст".
- Выберите элемент Сохранить в верхней части области Конструктор Logic Apps.
Сводная информация о приложении логики
Вот как выглядит приложение логики. В базовых сценариях, где не нужна какая-либо оркестрация на основе порога, можно напрямую вызвать скрипт автоматизации из раздела Монитор и пропустить шаг Приложение логики.
При сохранении приложения логики создается URL-адрес, который можно вызвать. Этот URL-адрес используется в следующем разделе этого руководства.
Создание группы действий Azure Monitor
Группа действий — это коллекция параметров уведомлений, которые вы определяете. При активации оповещения определенная группа действий может получить оповещение в уведомлении. Оповещение Azure заранее создает уведомление в зависимости от конкретных условий и предоставляет возможность выполнить действие. Оповещение может использовать данные из нескольких источников, включая метрики и журналы.
Группы действий — единственная конечная точка, которую вы интегрируете с бюджетом. Вы можете настроить уведомления во многих каналах, но для этого сценария вы сосредоточитесь на приложении логики, созданном ранее в этом руководстве.
Создание группы действий в Azure Monitor
При создании группы действий наведите указатель на приложение логики, созданное ранее в этом руководстве.
- Если вы еще не вошли в портал Azure, войдите и выберите "Все службы>" Монитор.
- Выберите Оповещения, а затем Управление действиями.
- Выберите Add an action group (Добавить группу действий) в области Группы действий.
- Добавьте и проверьте следующие элементы:
- Имя группы действий
- Короткое имя
- Подписка
- Группа ресурсов
- На панели Добавить группу действий добавьте действие приложения логики. Присвойте действию имя Budget-BudgetLA. На панели Приложение логики выберите Подписка и Группа ресурсов. Выберите приложение логики, созданное ранее в этом руководстве.
- Нажмите кнопку ОК, чтобы задать приложение логики. Нажмите кнопку ОК на панели Добавить группу действий, чтобы создать группу действий.
Вы выполнили все вспомогательные компоненты, необходимые для эффективной оркестрации бюджета. Теперь все, что вам нужно, — всего лишь создать бюджет и настроить его для использования созданной группы действий.
Создание бюджета
Вы можете создать бюджет на портале Azure с помощью компонента "Бюджет" в службе "Управление затратами". Вы также можете создать бюджет с помощью интерфейсов REST API, командлетов PowerShell или CLI. В следующей процедуре используется REST API. Перед вызовом REST API требуется маркер авторизации. Чтобы создать маркер авторизации, можно использовать проект ARMClient. ARMClient позволяет пройти проверку подлинности в Azure Resource Manager и получить маркер для вызова API.
Создание маркера проверки подлинности
Перейдите к проекту ARMClient в GitHub.
Клонируйте репозиторий для получения локальной копии.
Откройте проект в Visual Studio и создайте его.
После успешного создания исполняемый файл должен находиться в папке \bin\debug.
Запустите ARMClient. Откройте командную строку и перейдите к папке \bin\debug из корневой папки проекта.
Чтобы войти в систему и пройти проверку подлинности, введите следующую команду в командной строке:
ARMClient login prod
Скопируйте GUID подписки из выходных данных.
Чтобы скопировать маркер авторизации в буфер обмена, введите следующую команду в командной строке, но обязательно используйте скопированный идентификатор подписки на предыдущем шаге:
ARMClient token <subscription GUID from previous step>
По завершении предыдущего шага вы увидите следующее:
Маркер успешно скопирован в буфер обмена.Сохраните маркер для выполнения шагов в следующем разделе данного руководства.
Создание бюджета
Затем вы создадите бюджет, вызвав REST API потребления Azure. Вам нужен способ взаимодействия с API. Ниже приведены некоторые популярные способы запроса API:
- Visual Studio
- Insomnia
- Бруно
- Вызов PowerShell-RestMethod
- Curl
Необходимо импортировать файлы среды и коллекции в клиент API. Коллекция содержит сгруппированные определения HTTP-запросов, которые вызывают REST API потребления Azure. Файл среды содержит переменные, которые используются коллекцией.
В клиенте API создайте новый запрос.
Сохраните новый запрос, чтобы он ничего не был в нем.
Измените запрос с
Get
на действиеPut
.Измените следующий URL-адрес, заменив
{subscriptionId}
на идентификатор подписки, использованный в предыдущем разделе этого руководства. Кроме того, добавьте в URL-адрес "SampleBudget" в качестве значения для{budgetName}
:https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Consumption/budgets/{budgetName}?api-version=2018-03-31
Выберите заголовки в клиенте API.
Добавьте новый ключ с именем "Authorization" в соответствующее поле.
Для параметра Value (Значение) задайте маркер, созданный с помощью ArmClient в конце последнего раздела.
Выберите текст в клиенте API.
Выберите необработанный параметр в клиенте API.
В текстовой области клиента API вставьте следующее пример определения бюджета. Необходимо заменить
subscriptionID
resourcegroupname
параметры иactiongroupname
параметры идентификатором подписки, уникальным именем группы ресурсов и именем группы действий, созданной в URL-адресе и тексте запроса:{ "properties": { "category": "Cost", "amount": 100.00, "timeGrain": "Monthly", "timePeriod": { "startDate": "2018-06-01T00:00:00Z", "endDate": "2018-10-31T00:00:00Z" }, "filters": {}, "notifications": { "Actual_GreaterThan_80_Percent": { "enabled": true, "operator": "GreaterThan", "threshold": 80, "contactEmails": [], "contactRoles": [], "contactGroups": [ "/subscriptions/{subscriptionid}/resourceGroups/{resourcegroupname}/providers/microsoft.insights/actionGroups/{actiongroupname}" ] }, "Actual_EqualTo_100_Percent": { "operator": "EqualTo", "threshold": 100, "contactGroups": [ "/subscriptions/{subscriptionid}/resourceGroups/{resourcegroupname}/providers/microsoft.insights/actionGroups/{actiongroupname}" ] } } } }
Отправьте запрос.
Теперь у вас есть все компоненты, необходимые для вызова API бюджетов. Справочник по API бюджетов содержит дополнительные сведения о конкретных запросах, в том числе:
- budgetName — поддерживаются несколько бюджетов. Имена бюджетов должны быть уникальными.
- category — должна быть либо Cost, либо Usage. API поддерживает бюджет как на основе затрат, так и на основе использования.
- timeGrain — бюджет за месяц, квартал или год. В конце периода сумма сбрасывается.
- filters — фильтры позволяют сузить бюджет до определенного набора ресурсов в выбранной области. Например, фильтром может быть коллекция групп ресурсов для бюджета уровня подписки.
- notifications — определяет сведения об уведомлении и пороги. Вы можете установить несколько порогов и указать адрес электронной почты или группу действий, чтобы получать уведомления.
Итоги
Из этого руководства вы узнали следующее:
- Как создать runbook службы автоматизации Azure для остановки виртуальных машин.
- Как создать приложение логики Azure, которое активируется при достижении значений порога бюджета и вызывает связанный runbook с правильными параметрами.
- Как создать группу действий Azure Monitor, настроенную для запуска приложения логики Azure при достижении порога бюджета.
- Как создать бюджет с требуемыми порогами и подключить его к группе действий.
Теперь у вас есть полностью функциональный бюджет для вашей подписки, которая завершает работу виртуальных машин при достижении заданных пороговых значений бюджета.
Следующие шаги
- Дополнительные сведения о сценариях выставления счетов Azure см. в разделе Сценарии автоматизации для выставления счетов и управления затратами.