Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo mostra como estimar os custos do plano para o plano de consumo flex e o plano de consumo herdado.
Escolha a opção de hospedagem que melhor dê suporte aos requisitos de recurso, desempenho e custo para execuções de função. Para obter mais informações, consulte a escala e a hospedagem do Azure Functions.
Este artigo se concentra nos dois planos de consumo porque a cobrança nesses planos depende de períodos ativos de execuções dentro de cada instância.
Fornece dimensionamento horizontal rápido, com opções de computação flexíveis, integração de rede virtual e suporte total para conexões usando a autenticação da ID do Microsoft Entra. Neste plano, as instâncias são dimensionadas dinamicamente com base na simultaneidade configurada por instância, nos eventos de entrada e nas cargas de trabalho por função para obter a eficiência ideal. O Consumo Flex é o plano recomendado para hospedagem sem servidor. Para obter mais informações, consulte a hospedagem do Plano Flex de Consumo do Azure Functions.
As Durable Functions também podem ser executadas em ambos os planos. Para obter mais informações sobre as considerações de custo ao usar As Funções Duráveis, consulte a cobrança de funções duráveis.
Custos baseados no consumo
A forma como os custos baseados no consumo são calculados, incluindo concessões gratuitas, depende do plano específico. Para as informações de custo e concessão mais atualizadas, veja a página de preços do Azure Functions.
Existem dois modos pelos quais seus custos são determinados ao executar seus aplicativos no plano de Consumo Flex. Cada modo é determinado por instância.
| Modo de cobrança | Descrição |
|---|---|
| Sob demanda | Quando executado no modo sob demanda, você é cobrado apenas pelo tempo que o código da sua função está executando nas suas instâncias disponíveis. No modo sob demanda, não é necessário um número mínimo de instâncias. Você é cobrado por: • A quantidade total de memória provisionada enquanto cada instância sob demanda está ativamente executando funções (em GB-segundos), menos uma concessão gratuita de GB-s por mês. • O número total de execuções, menos uma concessão gratuita (número) de execuções por mês. |
| Sempre pronto | Você pode configurar uma ou mais instâncias, atribuídas a tipos de gatilho específicos (HTTP/Durable/Blob) e funções individuais, que estão sempre disponíveis para lidar com solicitações. Quando você tem alguma instância sempre pronta habilitada, você será cobrado por: • A quantidade total de memória provisionada em todas as suas instâncias sempre prontas, conhecida como base (em GB-segundos). • A quantidade total de memória provisionada durante o tempo que cada instância sempre pronta está ativamente executando funções (em GB-segundos). • O número total de execuções. No faturamento sempre pronto, não há subsídios gratuitos. |
Para obter as informações mais atualizadas sobre preços de execução, custos de linha de base sempre prontos e concessões gratuitas para execuções sob demanda, veja a página de preços do Azure Functions.
Este diagrama mostra como os custos sob demanda são determinados neste plano:
Além do tempo de execução, ao usar uma ou mais instâncias sempre prontas, você paga uma taxa de linha de base mais baixa pelo número de instâncias sempre prontas que mantém. O tempo de execução para instâncias sempre prontas pode ser mais barato do que o tempo de execução em instâncias com execução sob demanda.
Importante
Este artigo usa preços sob demanda para ajudá-lo a entender os cálculos de exemplo. Sempre verifique os custos atuais na página de preços do Azure Functions ao estimar os custos que você pode incorrer ao executar suas funções no plano de Consumo Flex.
Considere um aplicativo de funções que tenha apenas gatilhos HTTP com estes fatos básicos:
- Os gatilhos HTTP lidam com 40 solicitações constantes por segundo.
- Os gatilhos HTTP lidam com 10 solicitações simultâneas.
- O tamanho da memória da instância é de 2.048 MB.
- Você configura nenhuma instância sempre pronta, o que significa que o aplicativo pode ser dimensionado para zero.
Em uma situação como essa, o preço depende mais do tipo de trabalho feito durante a execução do código. Vamos ver dois cenários de carga de trabalho:
Carga de trabalho limitada por CPU: Em uma carga de trabalho limitada por CPU, não há vantagem em processar várias solicitações em paralelo na mesma instância. Essa limitação significa que é melhor distribuir cada solicitação para sua própria instância para que as solicitações sejam concluídas o mais rápido possível sem contenção. Nesse cenário, defina uma baixa concorrência de gatilho HTTP de
1. Com 10 solicitações simultâneas, o aplicativo escala para um estado estável de aproximadamente 10 instâncias, e cada instância está continuamente ativa processando uma solicitação por vez.Como o tamanho de cada instância é de ~2 GB, o consumo de uma única instância continuamente ativa é de
2 GB * 3600 s = 7200 GB-s. Supondo uma taxa de execução sob demanda de $0,000026 GB-s (sem concessões gratuitas aplicadas), o custo torna-se$0.1872 USDpor hora por instância. Como o aplicativo com limite de CPU é dimensionado para 10 instâncias, a taxa total por hora para o tempo de execução é$1.872 USD.Da mesma forma, a cobrança por execução sob demanda (sem concessões gratuitas) de 40 solicitações por segundo é igual a
40 * 3600 = 144,000ou0.144 millionexecuções por hora. Supondo que uma taxa sob demanda de$0.40por milhão de execuções, o custo total (sem concessão) por hora das execuções é de0.144 * $0.40, que é de$0.0576por hora.Neste cenário, o custo horário total de execução sob demanda em 10 instâncias é
$1.872 + $0.0576s = $1.9296 USD.Carga de trabalho limitada por IO: Em uma carga de trabalho limitada por IO, a maior parte do tempo de aplicação é gasta esperando a solicitação de entrada, que pode ser limitada pela taxa de transferência da rede ou outros fatores upstream. Devido às entradas limitadas, o código pode processar várias operações simultaneamente sem impactos negativos. Neste cenário, suponha que você possa processar todas as 10 solicitações simultâneas na mesma instância.
Como os encargos de consumo são baseados apenas na memória de cada instância ativa, o cálculo do encargo de consumo é simplesmente
2 GB * 3600 s = 7200 GB-s, que na taxa de execução sob demanda assumida (sem concessões gratuitas aplicadas) é$0.1872 USDpor hora para a instância única.Como no cenário limitado por CPU, a cobrança por execução sob demanda (sem concessões gratuitas) de 40 solicitações por segundo é igual a
40 * 3600 = 144,000ou 0,144 milhões de execuções por hora. Nesse caso, isso faz com que o custo horário total (sem concessões) das execuções seja0.144 * $0.40, que é$0.0576por hora.Nesse cenário, o custo total por hora de execução sob demanda de uma única instância é
$0.1872 + $0.0576 = $0.245 USD.
Comportamentos que afetam o tempo de execução
Os seguintes comportamentos de suas funções podem afetar o tempo de execução:
Gatilhos e associações: o tempo necessário para ler a entrada e gravar a saída em suas associações de função conta 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, o tempo de execução inclui o tempo necessário para gravar a mensagem na fila, que está incluído no cálculo do custo da função.
Execução assíncrona: o tempo em que sua função aguarda os resultados de uma solicitação assíncrona (
awaitem C#) conta como tempo de execução. O cálculo de GB por segundo é baseado na hora de início e de término da função e no uso de memória nesse período. O que acontece ao longo desse tempo em termos de atividade de CPU não é levado em conta no cálculo. Pode ser possível reduzir os custos durante operações assíncronas usando as Durable Functions. Você não é cobrado pelo tempo gasto em espera em funções de orquestrador.
Exibindo e estimando custos a partir de métricas
Na fatura, você pode exibir os dados relacionados ao custo juntamente com os custos reais cobrados. No entanto, esses dados da fatura são uma agregação mensal de um período de fatura anterior.
Esta seção mostra como usar métricas, no nível do aplicativo e execuções de função, para estimar os custos para executar seus aplicativos de funções.
Métricas no nível do aplicativo de função
As métricas no nível do aplicativo disponíveis para seu aplicativo dependem do tipo de plano de consumo que você usa.
Essas métricas do Azure Monitor estão relacionadas à cobrança do plano de consumo flex:
| Métrica | Descrição | Cálculo do medidor |
|---|---|---|
| Contagem de execução de função sob demanda | Número total de execuções de funções em instâncias on-demand. |
OnDemandFunctionExecutionCount refere-se ao medidor de Execuções Totais sob Demanda . |
| Contagem de execução de função sempre pronta | Número total de execuções de função em instâncias sempre prontas. |
AlwaysReadyFunctionExecutionCount está relacionado ao medidor Total de Execuções Sempre Prontas. |
| Unidades de execução de função sob demanda | Total de milissegundos em MB provenientes de instâncias sob demanda durante a execução ativa de funções. |
OnDemandFunctionExecutionUnits / 1,024,000 é o medidor de Tempo de execução sob demanda, em GB-segundos. |
| Unidades de execução de função sempre prontas | Total de MB-milissegundos de instâncias sempre prontas durante a execução ativa de funções. |
AlwaysReadyFunctionExecutionUnits / 1,024,000 é o medidor de Tempo de execução sempre pronta, em GB-segundos. |
| Unidades Sempre Prontas | O total de MB-milissegundos de instâncias sempre prontas atribuídas ao aplicativo, independentemente de as funções estarem sendo executadas ativamente ou não. |
AlwaysReadyUnits / 1,024,000 é o medidor de Linha de base sempre pronta, em GB-segundos. |
Para obter mais informações, consulte a referência de dados de monitoramento do Azure Functions.
Para entender melhor os custos de suas funções, use o Azure Monitor para exibir métricas relacionadas ao custo geradas pelos aplicativos de funções. Você pode exibir as métricas do Monitor usando uma destas ferramentas:
Use o Gerenciador de métricas do Azure Monitor para exibir dados relacionados ao custo para seus aplicativos de função de plano de consumo flex em um formato gráfico.
No portal do Azure, acesse seu aplicativo de funções.
No painel esquerdo, role para baixo até Monitoramento e selecione Métricas.
Na Métrica, selecione Contagem de Execução de Função sob Demanda e Soma para Agregação. Essa seleção adiciona a soma das contagens de execução durante o período escolhido ao gráfico.
Selecione Adicionar métrica e adicionar Unidades de Execução de Função Sob Demanda, Contagem de Execução de Função Sempre Pronta, Unidades de Execução de Função Sempre Prontas e Unidades Sempre Prontas ao gráfico.
O gráfico resultante contém os totais de todas as métricas de execução de Consumo Flex no intervalo de tempo escolhido, que neste exemplo é um intervalo de tempo personalizado.
Como o número de Unidades de Execução de Função sob Demanda é maior do que a Contagem de Execução de Função sob Demanda e não havia instâncias sempre prontas no aplicativo, o gráfico apenas mostra unidades de execução de função sob demanda.
Este gráfico mostra um total de 3,54 bilhões On Demand Function Execution Units consumidos em um período de 16 minutos, medido em MB-milissegundos. Para converter em gb-seconds, divida por 1.024.000. Neste exemplo, o aplicativo de funções consumiu 3,540,000,000 / 1,024,000 = 3,457.03 GB-segundos. Você pode pegar esse valor e multiplicá-lo pelo preço atual do Tempo de Execução Sob Demanda na página de preços do Functions, o que lhe dá o custo desses 16 minutos, supondo que você já tenha usado quaisquer concessões gratuitas de tempo de execução. Você pode usar esse mesmo cálculo com a métrica Unidades de Execução de Função Sempre Prontas e o custo do medidor de cobrança Tempo de Execução Sempre Pronto, bem como com a métrica Unidades Sempre Prontas e o custo do medidor de cobrança Linha de Base Sempre Pronta, para descobrir os custos de GB-segundos para instâncias sempre prontas.
Para calcular o custo Total de Execuções Sob Demanda, pegue a soma da Contagem de Execuções de Função Sob Demanda para o mesmo período, converta para milhões e, em seguida, multiplique pelo preço Total de Execuções Sob Demanda na página de preços do Functions. Por exemplo, 2.100 execuções no exemplo acima são convertidas 0.0021 em milhões de execuções. Você pode usar esse mesmo cálculo com a métrica Contagem de Execuções de Função Sempre Prontas e o medidor de cobrança Total de Execuções Sempre Prontas para saber o custo das execuções tratadas pela instância sempre pronta.
Métricas no nível da função
O uso de memória é importante ao estimar os custos das execuções de função. No entanto, a maneira como o uso de memória afeta seus custos depende do tipo de plano específico:
No plano consumo flex, você paga pelo tempo em que a instância é executada com base no tamanho da instância escolhida, que tem um limite de memória definido. Para obter mais informações, confira Cobrança.
Se você ainda não tiver feito isso, habilite o Application insights em seu aplicativo de funções. Com essa integração habilitada, você pode consultar esses dados de telemetria no portal.
Você pode usar o Azure Monitor Metrics Explorer no portal do Azure ou APIs REST para obter dados de Métrica do Monitor.
Determinar o uso de memória flash
Em Monitoramento, selecione Logs (análise), em seguida, copie a seguinte consulta de telemetria e cole-a na janela de consulta e selecione Executar. Essa consulta retorna o uso de memória total em cada tempo de amostra.
performanceCounters
| where name == "Private Bytes"
| project timestamp, name, value
Os resultados são similares ao exemplo a seguir:
| carimbo de data/hora [UTC] | nome | value |
|---|---|---|
| 12/09/2019, 1:05:14.947 AM | Bytes Particulares | 209.932.288 |
| 12/09/2019, 01:06:14.994 | Bytes Particulares | 212.189.184 |
| 12/09/2019, 01:06:30.010 | Bytes Particulares | 231.714.816 |
| 12/09/2019, 01:07:15.040 | Bytes Particulares | 210.591.744 |
| 12/09/2019, 1:12:16.285 AM | Bytes Particulares | 216.285.184 |
| 12/09/2019, 1:12:31.376 AM | Bytes Particulares | 235.806.720 |
Determinar duração
Azure Monitor acompanha as métricas no nível de recurso, o que, para Functions, é o aplicativo de funções. A integração do Application Insights emite métricas de acordo com a 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 | averageDurationMilliseconds |
|---|---|
| QueueTrigger AvgDurationMs | 16,087 |
| QueueTrigger MaxDurationMs | 90,249 |
| QueueTrigger MinDurationMs | 8,522 |
Outros custos relacionados
Ao estimar o custo geral da execução de suas funções em algum plano, lembre-se de que o tempo de execução do Functions usa vários outros serviços do Azure, cada um cobrado separadamente. Ao estimar os preços para aplicativos de função, quaisquer gatilhos e associações que você tenha que se integrem com 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, além do custo da largura de banda e outros serviços.
Ao estimar os custos gerais do seu aplicativo de funções e dos serviços relacionados, use a calculadora de preços do Azure.
| Custo relacionado | Descrição |
|---|---|
| Conta de armazenamento | Cada aplicativo de funções requer que você tenha uma conta de Armazenamento do Microsoft 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 do Armazenamento. Se não tiver uma conta de armazenamento, uma será criada para você quando o aplicativo de funções for criado. Para saber mais, confira Requisitos de uma conta de armazenamento. |
| Application Insights | As funções dependem do Application insights para fornecer uma experiência de monitoramento de alto desempenho em seus aplicativos de funções. 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, confira a página de preços do Azure Monitor. |
| argura de banda de 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, confira Detalhes de preços de Largura de Banda. |