Estimativa de custos baseados no consumo
Este artigo mostra como estimar os custos do plano para os planos de hospedagem Consumo e Consumo Flex.
Atualmente, o Azure Functions oferece quatro planos de hospedagem diferentes para seus aplicativos funcionais, com cada plano tendo seu próprio modelo de preço:
Plano | Descrição |
---|---|
Consumo | Você só será cobrado pelo tempo que seu aplicativo de função for executado. Este plano inclui uma subvenção gratuita por subscrição. |
Plano de consumo Flex | Você paga pelo tempo de execução nas instâncias em que suas funções estão sendo executadas, além de todas as instâncias sempre prontas . As instâncias são adicionadas e removidas dinamicamente com base no número de eventos de entrada. Também suporta integração de rede virtual. |
Premium | Fornece os mesmos recursos e mecanismo de dimensionamento do plano de consumo, mas com desempenho aprimorado e integração de rede virtual. O custo é baseado no nível de preço escolhido. Para saber mais, consulte Plano Premium do Azure Functions. |
Dedicado (Serviço de Aplicativo) (nível básico ou superior) |
Quando precisar executar em VMs dedicadas ou isoladamente, use imagens personalizadas ou queira usar a capacidade excedente do plano do Serviço de Aplicativo. Usa a cobrança regular do plano do Serviço de Aplicativo. O custo é baseado no nível de preço escolhido. |
Importante
O plano Flex Consumption está atualmente em pré-visualização.
Você deve sempre escolher o plano que melhor suporta os requisitos de recursos, desempenho e custo para suas execuções de função. Para saber mais, consulte Dimensionamento e hospedagem do Azure Functions.
Este artigo se concentra nos planos de Consumo e Consumo Flexível porque nesses planos o faturamento depende de períodos ativos de execuções dentro de cada instância.
As funções duráveis também podem ser executadas em ambos os planos. Para saber mais sobre as considerações de custo ao usar funções duráveis, consulte Faturamento de funções duráveis.
Custos baseados no consumo
A forma como os custos baseados no consumo são calculados, incluindo as subvenções gratuitas, depende do plano específico. Para obter as informações mais atuais sobre custos e concessão, consulte a página de preços do Azure Functions.
O custo de execução de uma única função é medido em GB-segundos. O custo de execução é calculado combinando o uso da memória com o tempo de execução. Uma função que é executada por mais tempo custa mais, assim como uma função que consome mais memória.
Considere um caso em que a quantidade de memória usada pela função permanece constante. Neste caso, o cálculo do custo é uma simples multiplicação. Por exemplo, digamos que sua função consumiu 0,5 GB por 3 segundos. Então o custo de execução é 0.5GB * 3s = 1.5 GB-seconds
.
Como o uso da memória muda ao longo do tempo, o cálculo é essencialmente a integral do uso da memória ao longo do tempo. O sistema faz esse cálculo por amostragem do uso de memória do processo (juntamente com processos filho) em intervalos regulares. Conforme mencionado na página de preços, o uso de memória é arredondado para o bucket de 128 MB mais próximo. Quando o seu processo estiver a utilizar 160 MB, ser-lhe-ão cobrados 256 MB. O cálculo leva em conta a simultaneidade, que são várias execuções de função simultâneas no mesmo processo.
Nota
Embora o uso da CPU não seja diretamente considerado no custo de execução, ele 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 do código da função começar a ser executado, você não é cobrado por uma execução. Isso significa que 401 respostas da plataforma devido à validação de chave de API ou ao recurso de Autenticação/Autorização do Serviço de Aplicativo não contam para o seu custo de execução. Da mesma forma, as respostas do código de status 5xx não são contadas quando ocorrem na plataforma antes que sua função processe a solicitação. Uma resposta 5xx gerada pela plataforma depois que seu código de função começou a ser executado ainda é contada como uma execução, mesmo quando o erro não é gerado a partir do seu código de função.
Outros custos conexos
Ao estimar o custo geral da execução de suas funções em qualquer plano, lembre-se de que o tempo de execução do Functions usa vários outros serviços do Azure, cada um cobrado separadamente. Quando você estima preços para aplicativos de função, quaisquer gatilhos e associações que você tenha que se integrem a outros serviços do Azure exigem que você crie e pague por esses outros serviços.
Para funções executadas em um plano de consumo, o custo total é o custo de execução de suas funções, mais o custo de largura de banda e outros serviços.
Ao estimar os custos gerais do seu aplicativo de função e serviços relacionados, use a calculadora de preços do Azure.
Custos relacionados | Description |
---|---|
Conta de armazenamento | Cada aplicativo de função requer que você tenha uma conta de Armazenamento do Azure de Uso Geral associada, que é cobrada separadamente. Essa conta é usada internamente pelo tempo de execução do Functions, mas você também pode usá-la para gatilhos e associações de armazenamento. Se você não tiver uma conta de armazenamento, uma será criada para você quando o aplicativo de função for criado. Para saber mais, consulte Requisitos da conta de armazenamento. |
Application Insights | O Functions depende do Application Insights para fornecer uma experiência de monitoramento de alto desempenho para seus aplicativos funcionais. Embora não seja necessário, você deve habilitar a integração do Application Insights. Uma concessão gratuita de dados de telemetria é incluída todos os meses. Para saber mais, consulte a página de preços do Azure Monitor. |
Largura de banda da rede | Você pode incorrer em custos de transferência de dados dependendo da direção e do cenário da movimentação de dados. Para saber mais, consulte Detalhes de preços de largura de banda. |
Comportamentos que afetam o tempo de execução
Os seguintes comportamentos de suas funções podem afetar o tempo de execução:
Gatilhos e ligações: O tempo necessário para ler a entrada e gravar a saída para suas ligações de função é contado como tempo de execução. Por exemplo, quando sua função usa uma associação de saída para gravar uma mensagem em uma fila de armazenamento do Azure, seu tempo de execução inclui o tempo necessário para gravar a mensagem na fila, que é incluído no cálculo do custo da função.
Execução assíncrona: o tempo que sua função aguarda os resultados de uma solicitação assíncrona (
await
em C#) é contado como tempo de execução. O cálculo de GB-segundo é baseado na hora de início e término da função e no uso de memória durante esse período. O que está acontecendo ao longo desse tempo em termos de atividade da CPU não é levado em conta no cálculo. Talvez seja possível reduzir custos durante operações assíncronas usando funções duráveis. Você não é cobrado pelo tempo gasto em funções de orquestrador.
Visualização de dados relacionados a custos
Na sua fatura, você pode visualizar os dados relacionados ao custo de Total de Execuções - Funções e Tempo de Execução - Funções, juntamente com os custos reais faturados. No entanto, esses dados de fatura são um agregado mensal de um período de fatura passado.
Métricas de nível de aplicativo de função
Para entender melhor o impacto de custo de suas funções, você pode usar o Azure Monitor para exibir métricas relacionadas a custos que estão sendo geradas atualmente por seus aplicativos de função.
Use o explorador de métricas do Azure Monitor para exibir dados relacionados a custos para seus aplicativos de função Plano de consumo em um formato gráfico.
No portal do Azure, navegue até seu aplicativo de função.
No painel esquerdo, role para baixo até Monitoramento e escolha Métricas.
Em Metric, escolha Contagem de execução de função e Soma para agregação. Isso adiciona a soma das contagens de execução durante o período escolhido ao gráfico.
Selecione Adicionar métrica e repita as etapas 2 a 4 para adicionar Unidades de Execução de Função ao gráfico.
O gráfico resultante contém os totais para ambas as métricas de execução no intervalo de tempo escolhido, que neste caso é de duas horas.
Como o número de unidades de execução é muito maior do que a contagem de execução, o gráfico mostra apenas as unidades de execução.
Este gráfico mostra um total de 1,11 bilhão Function Execution Units
consumido em um período de duas horas, medido em MB-milissegundos. Para converter em GB-segundos, divida por 1024000. Neste exemplo, o aplicativo de função consumiu 1110000000 / 1024000 = 1083.98
GB-segundos. Você pode pegar esse valor e multiplicar pelo preço atual do tempo de execução na página de preços Funções, que lhe dá o custo dessas duas horas, supondo que você já tenha usado quaisquer concessões gratuitas de tempo de execução.
Métricas de nível de função
As unidades de execução de função são uma combinação de tempo de execução e seu uso de memória, o que torna uma métrica difícil para entender o uso de 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 você quiser otimizar o uso de memória do seu aplicativo, pode usar os dados do contador de desempenho coletados pelo Application Insights.
Se você ainda não tiver feito isso, habilite o Application Insights em seu aplicativo de função. Com essa integração habilitada, você pode consultar esses dados de telemetria no portal.
Você pode usar o explorador de métricas do Azure Monitor no portal do Azure ou APIs REST para obter dados do Monitor Metrics.
Determinar o uso da memória
Em Monitoramento, selecione Logs (Analytics), copie a seguinte consulta de telemetria e cole-a na janela de consulta e selecione Executar. Esta consulta retorna o uso total de memória em cada momento amostrado.
performanceCounters
| where name == "Private Bytes"
| project timestamp, name, value
Os resultados são semelhantes ao exemplo a seguir:
carimbo de data/hora [UTC] | nome | valor |
---|---|---|
12/09/2019, 01:05:14.947 | Bytes privados | 209,932,288 |
12/09/2019, 01:06:14.994 | Bytes privados | 212,189,184 |
12/09/2019, 01:06:30.010 | Bytes privados | 231,714,816 |
12/09/2019, 01:07:15.040 | Bytes privados | 210,591,744 |
12/09/2019, 01:12:16.285 | Bytes privados | 216,285,184 |
12/09/2019, 01:12:31.376 | Bytes privados | 235,806,720 |
Determinar a duração
O Azure Monitor rastreia métricas no nível de recurso, que para o Functions é o aplicativo de função. A integração do Application Insights emite métricas por função. Aqui está 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
nome | médiaDuraçãoMilésimos de segundo |
---|---|
QueueTrigger AvgDurationMs | 16.087 |
QueueTrigger MaxDurationMs | 90.249 |
QueueTrigger MinDurationMs | 8.522 |