Estimar os custos do plano de Consumo

Atualmente, existem três tipos de planos de alojamento para uma aplicação que é executada no Funções do Azure, com cada plano a ter o seu próprio modelo de preços:

Planear Description
Consumo Só lhe é cobrado o tempo de execução da aplicação de funções. Este plano inclui uma concessão gratuita por subscrição.
Premium Fornece-lhe as mesmas funcionalidades e mecanismo de dimensionamento que o plano de Consumo, mas com desempenho melhorado e acesso à VNET. O custo baseia-se no escalão de preço escolhido. Para saber mais, veja Funções do Azure plano Premium.
Dedicado (Serviço de Aplicações)
(escalão básico ou superior)
Quando precisar de executar em VMs dedicadas ou isoladamente, utilize imagens personalizadas ou pretenda utilizar o excesso de capacidade do plano Serviço de Aplicações. Utiliza a faturação normal do plano de Serviço de Aplicações. O custo baseia-se no escalão de preço escolhido.

Escolheu o plano que melhor suporta o desempenho da função e os requisitos de custo. Para saber mais, veja Funções do Azure dimensionamento e alojamento.

Este artigo aborda apenas o plano de Consumo, uma vez que este plano resulta em custos variáveis. Este artigo substitui o artigo FAQ sobre os custos do plano de consumo.

Durable Functions também pode ser executado num plano de Consumo. Para saber mais sobre as considerações de custos ao utilizar Durable Functions, veja Durable Functions faturação.

Custos do plano de consumo

O custo de execução de uma única execução de função é medido em GB-segundos. O custo de execução é calculado ao combinar a utilização da memória com o respetivo tempo de execução. Uma função que é executada durante mais tempo custa mais, assim como uma função que consome mais memória.

Considere um caso em que a quantidade de memória utilizada pela função permanece constante. Neste caso, calcular o custo é uma multiplicação simples. Por exemplo, digamos que a função consumiu 0,5 GB durante 3 segundos. Em seguida, o custo de execução é 0.5GB * 3s = 1.5 GB-seconds.

Uma vez que a utilização da memória muda ao longo do tempo, o cálculo é essencialmente a parte integrante da utilização da memória ao longo do tempo. O sistema faz este cálculo ao amostrar a utilização da memória do processo (juntamente com os processos subordinados) em intervalos regulares. Conforme mencionado na página de preços, a utilização da memória é arredondada para o registo de 128 MB mais próximo. Quando o processo estiver a utilizar 160 MB, ser-lhe-ão cobrados 256 MB. O cálculo tem em conta a simultaneidade, que é múltiplas execuções simultâneas de funções no mesmo processo.

Nota

Embora a utilização da CPU não seja considerada diretamente no custo de execução, pode ter um impacto no custo quando afeta o tempo de execução da função.

Para uma função acionada por HTTP, quando ocorre um erro antes de o código de função começar a ser executado, não lhe é cobrada uma execução. Isto significa que as respostas 401 da plataforma devido à validação da chave de API ou à funcionalidade autenticação/autorização do Serviço de Aplicações não contam para o custo de execução. Da mesma forma, as respostas ao código de estado 5xx não são contadas quando ocorrem na plataforma antes de uma função processar o pedido. Uma resposta 5xx gerada pela plataforma depois de o código de função ter começado a ser executado continua a ser contabilizada como uma execução, mesmo que o erro não seja gerado pelo código da função.

Ao estimar o custo geral da execução das suas funções em qualquer plano, lembre-se de que o runtime das Funções utiliza vários outros serviços do Azure, que são faturados separadamente. Ao calcular os preços das aplicações de funções, todos os acionadores e enlaces que tenha integrados noutros serviços do Azure exigem que crie e pague por esses serviços adicionais.

Para as funções em execução num plano de Consumo, o custo total é o custo de execução das suas funções, além do custo da largura de banda e dos serviços adicionais.

Ao estimar os custos gerais da aplicação de funções e dos serviços relacionados, utilize a calculadora de preços do Azure.

Custo relacionado Descrição
Conta de armazenamento Cada aplicação de funções requer que tenha uma conta de armazenamento do Azure associada Fins Gerais, que é faturada separadamente. Esta conta é utilizada internamente pelo runtime das Funções, mas também pode utilizá-la para acionadores e enlaces de Armazenamento. Se não tiver uma conta de armazenamento, é criada uma quando a aplicação de funções é criada. Para saber mais, veja Requisitos da conta de armazenamento.
Application Insights As funções dependem do Application Insights para proporcionar uma experiência de monitorização de alto desempenho para as suas aplicações de funções. Embora não seja necessário, deve ativar a integração do Application Insights. É incluída uma concessão gratuita de dados telemétricos todos os meses. Para saber mais, veja a página de preços do Azure Monitor.
Largura de banda de rede Pode incorrer em custos de transferência de dados consoante a direção e o cenário do movimento de dados. Para saber mais, veja Detalhes dos preços da largura de banda.

Comportamentos que afetam o tempo de execução

Os seguintes comportamentos das suas funções podem afetar o tempo de execução:

  • Acionadores e enlaces: o tempo necessário para ler entradas e escrever saídas nos enlaces de função é contabilizado como tempo de execução. Por exemplo, quando a função utiliza um enlace de saída para escrever uma mensagem numa fila de armazenamento do Azure, o tempo de execução inclui o tempo necessário para escrever a mensagem na fila, que está incluída no cálculo do custo da função.

  • Execução assíncrona: o tempo que a função aguarda pelos resultados de um pedido assíncrono (await em C#) é contabilizado como tempo de execução. O cálculo GB-segundo baseia-se na hora de início e de fim da função e na utilização da memória durante esse período. O que está a acontecer ao longo desse tempo em termos de atividade da CPU não é contabilizado no cálculo. Poderá conseguir reduzir os custos durante operações assíncronas com Durable Functions. Não lhe é faturado o tempo despendido em esperas em funções de orquestrador.

Na fatura, pode ver os dados relacionados com os custos do Total de Execuções – Funções e Tempo de Execução – Funções, juntamente com os custos faturados reais. No entanto, estes dados da fatura são um agregado mensal para um período de faturação anterior.

Métricas ao nível da aplicação de funções

Para compreender melhor o impacto dos custos das suas funções, pode utilizar o Azure Monitor para ver as métricas relacionadas com os custos atualmente geradas pelas suas aplicações de funções.

Utilize o explorador de métricas do Azure Monitor para ver os dados relacionados com os custos das aplicações de funções do plano de Consumo num formato gráfico.

  1. Na portal do Azure, navegue para a sua aplicação de funções.

  2. No painel esquerdo, desloque-se para baixo até Monitorização e escolha Métricas.

  3. Em Métrica, selecione Contagem de Execução de Funções e Soma para Agregação. Esta ação adiciona a soma das contagens de execução durante o período escolhido ao gráfico.

    Definir uma métrica da aplicação de funções para adicionar ao gráfico

  4. Selecione Adicionar métrica e repita os passos 2 a 4 para adicionar Unidades de Execução de Funções ao gráfico.

O gráfico resultante contém os totais de ambas as métricas de execução no intervalo de tempo escolhido, que neste caso são duas horas.

Gráfico de contagens de execução de funções e unidades de execução

Como o número de unidades de execução é muito maior do que a contagem de execuções, o gráfico apenas mostra unidades de execução.

Este gráfico mostra um total de 1,11 mil milhões Function Execution Units consumidos num período de duas horas, medido em milissegundos de MB. Para converter em GB-segundos, divida por 1024000. Neste exemplo, a aplicação de funções consumiu 1110000000 / 1024000 = 1083.98 GB-seconds. Pode utilizar este valor e multiplicar pelo preço atual do tempo de execução na página preços das Funções, o que lhe dá o custo destas duas horas, partindo do princípio de que já utilizou quaisquer concessões gratuitas de tempo de execução.

Métricas ao nível da função

As unidades de execução de funções são uma combinação do tempo de execução e da utilização da memória, o que torna uma métrica difícil de compreender a utilização da memória. Os dados de memória não são uma métrica atualmente disponível através do Azure Monitor. No entanto, se quiser otimizar a utilização da memória da sua aplicação, pode utilizar os dados do contador de desempenho recolhidos pelo Application Insights.

Se ainda não o fez, ative o Application Insights na sua aplicação de funções. Com esta integração ativada, pode consultar estes dados telemétricos no portal.

Pode utilizar o explorador de métricas do Azure Monitor no portal do Azure ou nas APIs REST para obter dados de Métricas de Monitorização.

Determinar a utilização da memória

Em Monitorização, selecione Registos (Análise) e, em seguida, copie a seguinte consulta de telemetria e cole-a na janela de consulta e selecione Executar. Esta consulta devolve a utilização total da memória em cada hora de amostra.

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

Os resultados têm um aspeto semelhante ao seguinte exemplo:

carimbo de data/hora [UTC] name valor
12/09/2019, 1:05:14.947 Bytes Privados 209,932,288
12/09/2019, 1:06:14.994 Bytes Privados 212,189,184
12/09/2019, 1:06:30.010 Bytes Privados 231,714,816
12/09/2019, 1:07:15.040 Bytes Privados 210,591,744
12/09/2019, 1:12:16.285 Bytes Privados 216,285,184
12/09/2019, 1:12:31.376 Bytes Privados 235,806,720

Determinar a duração

O Azure Monitor monitoriza as métricas ao nível do recurso, que para as Funções é a aplicação de funções. A integração do Application Insights emite métricas por função. Eis um exemplo de consulta de análise para obter a duração média de uma função:

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

Passos seguintes