Оценка затрат на основе потребления

В этой статье показано, как оценить затраты на планирование использования и планы размещения Flex потребления.

Функции Azure в настоящее время предлагает четыре различных плана размещения для приложений-функций, причем каждый план имеет собственную модель ценообразования:

Планирование Description
Потребление Оплачивается только время выполнения приложения-функции. В этот план входит бесплатное предоставление разрешения для каждой подписки.
План потребления Flex Вы оплачиваете время выполнения на экземплярах, на которых выполняются функции, а также все всегда готовые экземпляры. Экземпляры динамически добавляются и удаляются на основе количества входящих событий. Также поддерживает интеграцию виртуальной сети.
Премиум Предоставляет те же функции и механизм масштабирования, что и план потребления, но с улучшенной производительностью и интеграцией виртуальной сети. Стоимость зависит от выбранной ценовой категории. Подробнее см. в статье План Функций Azure ценовой категории “Премиум”.
Выделенный (Служба приложений)
(уровень "Базовый" или выше)
Если нужно работать на выделенных виртуальных машинах или в изоляции, использовать настраиваемые образы или избыточные возможности плана службы приложений. Использует обычное выставление счетов для плана службы приложений. Стоимость зависит от выбранной ценовой категории.

Внимание

План потребления Flex в настоящее время находится в предварительной версии.

Вы всегда должны выбрать план, который лучше всего поддерживает требования к функциям, производительности и затратам для выполнения функций. Дополнительные сведения см. в статье Масштабирование и размещение Функций Azure.

Эта статья посвящена планам потребления и потребления Flex, так как в этих планах выставление счетов зависит от активных периодов выполнения внутри каждого экземпляра.

Устойчивые функции также может выполняться в обоих этих планах. Дополнительные сведения о затратах при использовании устойчивых функций см. в статье Выставление счетов за устойчивые функции.

Затраты на основе потребления

Способ вычисления затрат на основе потребления, включая бесплатные гранты, зависит от конкретного плана. Сведения о самых текущих затратах и предоставлении предоставления см. на странице цен на Функции Azure.

Стоимость выполнения для одного выполнения функции измеряется в ГБ-с. Затраты на выполнение рассчитываются путем объединения используемой памяти с временем выполнения. Функция, выполняемая дольше, стоит больше, как и функция, потребляющая больше памяти.

Рассмотрим случай, когда объем памяти, используемый функцией, остается постоянным. В этом случае затраты вычисляются простым умножением. Например, предположим, что функция занимала 0,5 ГБ в течение 3 секунд. Тогда стоимость выполнения — 0.5GB * 3s = 1.5 GB-seconds.

Так как использование памяти меняется со временем, вычисление фактически представляет собой интеграл использования памяти по времени. Система вычисляет это значение, измеряя использование памяти процессом (вместе с дочерними процессами) через регулярные промежутки времени. Как упоминалось на страница цен, использование памяти округляется до ближайшего блока размером 128 МБ. Если в процессе используется 160 МБ, счет выставляется за 256 МБ. При расчете учитывается параллелизм для учетной записи, то есть одновременное выполнение нескольких функций в одном процессе.

Примечание.

Хотя загрузка ЦП напрямую не учитывается в стоимости выполнения, она может повлиять на затраты, если влияет на время выполнения функции.

В случае функции, активируемой по HTTP, при возникновении ошибки до начала выполнения кода функции ее выполнение не оплачивается. Это означает, что ответы 401 от платформы, вызванные проверкой ключа API или функцией аутентификации / авторизации в службе приложений Azure не учитываются в затратах на выполнение. Аналогичным образом ответы кода состояния 5xx не учитываются, когда они происходят на платформе, прежде чем функция обрабатывает запрос. Ответ 5xx, созданный платформой после начала выполнения кода функции, по-прежнему считается выполнением, даже если ошибка не возникает из кода функции.

При оценке общей стоимости выполнения функций в любом плане помните, что среда выполнения Функций Azure использует несколько других служб Azure, каждая из которых оплачивается отдельно. При оценке цен на приложения-функции все триггеры и привязки, которые вы интегрируете с другими службами Azure, требуют создания и оплаты этих других служб.

Для функций, выполняемых в плане потребления, общая стоимость — это стоимость выполнения функций, а также стоимость пропускной способности и других служб.

При оценке суммарных затрат для приложения-функции и связанных службы используйте Калькулятор цен Azure.

Связанные затраты Description
Учетная запись хранения Для каждого приложения-функции требуется связанная учетная запись хранения Azure общего назначения, которая оплачивается отдельно. Эта учетная запись используется внутри среды выполнения Функций Azure, но ее также можно использовать для триггеров и привязок службы хранилища. Если у вас нет учетной записи хранения, она будет создана для вас при создании приложения-функции. Дополнительную информацию см. в статье Требования учетных записей хранения.
Application Insights Функции Azure используют Application Insights для обеспечения высокопроизводительного мониторинга приложений-функций. Хотя это и не является обязательным, следует включить интеграцию Application Insights. Включено бесплатное предоставление данных телеметрии за каждый месяц. Дополнительные сведения см. на странице цен для Azure Monitor.
Пропускная способность сети Вы можете нести расходы на передачу данных в зависимости от направления и сценария перемещения данных. Дополнительные сведения см. на странице Цены для пропускной способности.

Поведение, влияющее на время выполнения

Следующее поведение функций может повлиять на время выполнения:

  • Триггеры и привязки. Время, затрачиваемое на чтение входных данных из привязок функций и запись выходных данных в них, учитывается как время выполнения. Например, если функция использует выходную привязку для записи сообщения в очередь службы хранилища Azure, то время выполнения включает время, затраченное на запись сообщения в очередь, и это время учитывается при вычислении стоимости функции.

  • Асинхронное выполнение. Время, в течение которого функция ожидает результаты выполнения асинхронного запроса (await в C#), входит во время выполнения. Вычисление ГБ-с основано на времени начала и окончания функции и на использовании памяти за этот период. Что происходит в течение этого времени с точки зрения загрузки ЦП, на результат вычислений не влияет. Снизить затраты на использование асинхронных операций можно с помощью устойчивых функций. Время, потраченное на ожидание в функциях оркестратора, не учитывается при вычислении времени выполнения.

В счете можно просмотреть связанные с затратами данные Всего выполнений — функции и Время выполнения — функции, а также фактические оплачиваемые затраты. Однако эти данные счета представляют собой ежемесячное агрегирование данных за время, за которое выставляется счет.

Метрик уровня приложения-функции

Чтобы лучше понять влияние функций на затраты, для просмотра метрик, связанных в настоящее время с затратами на применение приложений-функций, можно использовать Azure Monitor.

Используйте Обозреватель метрик Azure Monitor для просмотра в графическом формате данных, связанных с затратами на применение приложений-функций в плане "Потребление".

  1. На портале Azure перейдите к своему приложению-функции.

  2. На панели слева прокрутите вниз до раздела Мониторинг и выберите элемент Метрики.

  3. В параметре Метрика выберите Function Execution Count (Число выполнений функций) и Сумма для параметра Агрегирование. В результате в диаграмму будет добавлена сумма числа выполнений за выбранный период.

    Определение метрики приложения-функции для добавления в диаграмму

  4. Выберите Добавить метрику и повторите шаги 2–4, чтобы добавить в диаграмму Function Execution Units (Единицы выполнения функции).

Полученная диаграмма содержит итоговые результаты для обеих метрик выполнения за выбранный интервал времени, в данном случае равный двум часам.

Диаграмма числа и единиц выполнения функций

Так как число единиц выполнения значительно превышает число выполнений, на диаграмме отображаются только единицы выполнения.

На этой диаграмме показано общее количество 1,11 млрд Function Execution Units, потребленное за два часа и измеряемое в МБ-миллисекундах. Чтобы преобразовать в ГБ-секунды, разделите на 1024000. В этом примере приложение-функция потребило 1110000000 / 1024000 = 1083.98 ГБ-с. Можно взять это значение и умножить его на текущую цену времени выполнения, приведенную на странице цен для Функций Azure. В результате вы узнаете стоимость этих двух часов при условии, что все бесплатно предоставляемое время вычисления уже использовано.

Метрики уровня функции

Единицы выполнения функции — это сочетание времени выполнения и использования памяти, что делает эту метрику сложной для понимания использования памяти. Данные памяти не являются метрикой, доступной в настоящее время в Azure Monitor. Но, если нужно оптимизировать использование памяти приложением, можно использовать данные счетчиков производительности, собранные Application Insights.

Включите Application Insights в приложении-функции, если это еще не сделано. Если эта интеграция включена, можно запросить эти данные телеметрии на портале.

Для получения данных Azure Monitor можно использовать Обозреватель метрик Azure Monitor на портале Azure или интерфейсы REST API.

Определение используемого объема памяти

В разделе Мониторингвыберите Журналы (Аналитика), затем скопируйте следующий запрос телеметрии и вставьте его в окно запроса, после чего нажмите Выполнить. Этот запрос возвращает общий объем использованной памяти для выбранного времени.

performanceCounters
| where name == "Private Bytes"
| project timestamp, name, value

Результаты должны выглядеть, как показано ниже:

Метка времени [UTC] name значение
12.09.2019, 1:05:14.947 байт исключительного пользования 209 932 288
12.09.2019, 1:06:14.994 байт исключительного пользования 212 189 184
12.09.2019, 1:06:30.010 байт исключительного пользования 231 714 816
12.09.2019, 1:07:15.040 байт исключительного пользования 210 591 744
12.09.2019, 1:12:16.285 байт исключительного пользования 216 285 184
12.09.2019, 1:12:31.376 байт исключительного пользования 235 806 720

Определение длительности

Azure Monitor отслеживает метрики на уровне ресурсов, что для функций соответствует уровню приложений-функций. Интеграция Application Insights обеспечивает предоставление метрик для каждой функции. Ниже приведен пример запроса аналитики для получения средней длительности выполнения функции:

customMetrics
| where name contains "Duration"
| extend averageDuration = valueSum / valueCount
| summarize averageDurationMilliseconds=avg(averageDuration) by name
name averageDurationMilliseconds
QueueTrigger AvgDurationMs 16.087
QueueTrigger MaxDurationMs 90.249
QueueTrigger MinDurationMs 8.522

Следующие шаги