Estimativa dos custos do plano de consumoEstimating Consumption plan costs

Existem atualmente três tipos de planos de hospedagem para uma app que funciona em Azure Functions, com cada plano tendo o seu próprio modelo de preços:There are currently three types of hosting plans for an app that runs in Azure Functions, with each plan having its own pricing model:

PlanearPlan DescriptionDescription
ConsumoConsumption Só é cobrado pelo tempo que a sua aplicação de função for executado.You're only charged for the time that your function app runs. Este plano inclui uma página de[preços] [de subvenção gratuita]por subscrição.This plan includes a free grant on a per subscription basis.
PremiumPremium Fornece-lhe as mesmas funcionalidades e mecanismo de escala que o plano de Consumo, mas com um desempenho melhorado e acesso VNET.Provides you with the same features and scaling mechanism as the Consumption plan, but with enhanced performance and VNET access. O custo baseia-se no seu nível de preços escolhido.Cost is based on your chosen pricing tier. Para saber mais, consulte o plano Azure Functions Premium.To learn more, see Azure Functions Premium plan.
Dedicado (Serviço de Aplicações)Dedicated (App Service)
(nível básico ou superior)(basic tier or higher)
Quando precisar de correr em VMs dedicados ou isoladamente, use imagens personalizadas ou queira utilizar a sua capacidade de plano de serviço de aplicações em excesso.When you need to run in dedicated VMs or in isolation, use custom images, or want to use your excess App Service plan capacity. Utiliza faturação regular do plano de aplicações.Uses regular App Service plan billing. O custo baseia-se no seu nível de preços escolhido.Cost is based on your chosen pricing tier.

Escolheu o plano que melhor suporta o desempenho da sua função e os requisitos de custos.You chose the plan that best supports your function performance and cost requirements. Para saber mais, consulte a escala e hospedagem de Funções Azure.To learn more, see Azure Functions scale and hosting.

Este artigo trata apenas do plano de Consumo, uma vez que este plano resulta em custos variáveis.This article deals only with the Consumption plan, since this plan results in variable costs. Este artigo substitui o plano de consumo custo de faturação do artigo FAQ.This article supersedes the Consumption plan cost billing FAQ article.

As funções duradouras também podem funcionar num plano de consumo.Durable Functions can also run in a Consumption plan. Para saber mais sobre as considerações de custos ao utilizar funções duradouras, consulte a faturação de Funções Duradouras.To learn more about the cost considerations when using Durable Functions, see Durable Functions billing.

Custos do plano de consumoConsumption plan costs

O custo de execução de uma única função é medido em GB-segundos.The execution cost of a single function execution is measured in GB-seconds. O custo de execução é calculado combinando o seu uso de memória com o seu tempo de execução.Execution cost is calculated by combining its memory usage with its execution time. Uma função que funciona por mais tempo custa mais, assim como uma função que consome mais memória.A function that runs for longer costs more, as does a function that consumes more memory.

Considere um caso em que a quantidade de memória utilizada pela função permanece constante.Consider a case where the amount of memory used by the function stays constant. Neste caso, calcular o custo é uma simples multiplicação.In this case, calculating the cost is simple multiplication. Por exemplo, digamos que a sua função consumiu 0,5 GB durante 3 segundos.For example, say that your function consumed 0.5 GB for 3 seconds. Então o custo de execução 0.5GB * 3s = 1.5 GB-seconds é.Then the execution cost is 0.5GB * 3s = 1.5 GB-seconds.

Uma vez que o uso da memória muda ao longo do tempo, o cálculo é essencialmente a parte integrante do uso da memória ao longo do tempo.Since memory usage changes over time, the calculation is essentially the integral of memory usage over time. O sistema faz este cálculo através da amostragem do uso da memória do processo (juntamente com os processos infantis) em intervalos regulares.The system does this calculation by sampling the memory usage of the process (along with child processes) at regular intervals. Como mencionado na [página de preços,]o uso da memória é arredondado para o balde de 128-MB mais próximo.As mentioned on the pricing page, memory usage is rounded up to the nearest 128-MB bucket. Quando o seu processo está a usar 160 MB, é cobrado por 256 MB.When your process is using 160 MB, you're charged for 256 MB. O cálculo tem em conta a concordância, que é múltiplas execuções de funções simultâneas no mesmo processo.The calculation takes into account concurrency, which is multiple concurrent function executions in the same process.

Nota

Embora o uso do CPU não seja considerado diretamente no custo de execução, pode ter um impacto no custo quando afeta o tempo de execução da função.While CPU usage isn't directly considered in execution cost, it can have an impact on the cost when it affects the execution time of the function.

Para uma função desencadeada por HTTP, quando ocorre um erro antes do seu código de função começar a executar, não é cobrado para uma execução.For an HTTP-triggered function, when an error occurs before your function code begins to execute you aren't charged for an execution. Isto significa que 401 respostas da plataforma devido à validação da chave API ou à funcionalidade de Autenticação/Autorização do Serviço de Aplicações não contam com o custo de execução.This means that 401 responses from the platform due to API key validation or the App Service Authentication / Authorization feature don't count against your execution cost. Da mesma forma, as respostas do código de estado 5xx não são contadas quando ocorrem na plataforma antes de uma função de processamento do pedido.Similarly, 5xx status code responses aren't counted when they occur in the platform prior to a function processing the request. Uma resposta de 5xx gerada pela plataforma após o início do seu código de função ainda é contada como uma execução, mesmo que o erro não seja levantado pelo seu código de função.A 5xx response generated by the platform after your function code has started to execute is still counted as an execution, even if the error isn't raised by your function code.

Ao estimar o custo global de execução das suas funções em qualquer plano, lembre-se que o tempo de execução de Funções utiliza vários outros serviços Azure, que são faturados separadamente.When estimating the overall cost of running your functions in any plan, remember that the Functions runtime uses several other Azure services, which are each billed separately. Ao calcular os preços das aplicações de função, quaisquer gatilhos e encadernações que tenha que se integrem com outros serviços Azure exigem que crie e pague por esses serviços adicionais.When calculating pricing for function apps, any triggers and bindings you have that integrate with other Azure services require you to create and pay for those additional services.

Para funções em execução num plano de Consumo, o custo total é o custo de execução das suas funções, acrescido do custo da largura de banda e serviços adicionais.For functions running in a Consumption plan, the total cost is the execution cost of your functions, plus the cost of bandwidth and additional services.

Ao estimar os custos globais da sua aplicação de função e serviços conexos, utilize a calculadora de preços Azure.When estimating the overall costs of your function app and related services, use the Azure pricing calculator.

Custo relacionadoRelated cost DescriçãoDescription
Conta de armazenamentoStorage account Cada aplicação de função requer que tenha uma conta de Armazenamento Azurepara fins gerais associada, que é faturada separadamente.Each function app requires that you have an associated General Purpose Azure Storage account, which is billed separately. Esta conta é utilizada internamente pelo tempo de execução de Funções, mas também pode usá-la para desímes de armazenamento e encadernações.This account is used internally by the Functions runtime, but you can also use it for Storage triggers and bindings. Se não tiver uma conta de armazenamento, uma é criada para si quando a aplicação de função é criada.If you don't have a storage account, one is created for you when the function app is created. Para saber mais, consulte os requisitos da conta de Armazenamento.To learn more, see Storage account requirements.
Application InsightsApplication 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ção.Functions relies on Application Insights to provide a high-performance monitoring experience for your function apps. Embora não seja necessário, deve ativar a integração de Insights de Aplicação.While not required, you should enable Application Insights integration. Todos os meses são incluídos dados de telemetria gratuitos.A free grant of telemetry data is included every month. Para saber mais, consulte a página de preços do Azure Monitor.To learn more, see the Azure Monitor pricing page.
Largura de banda de redeNetwork bandwidth Não se paga a transferência de dados entre os serviços da Azure na mesma região.You don't pay for data transfer between Azure services in the same region. No entanto, pode incorrer em custos para transferências de dados de saída para outra região ou fora de Azure.However, you can incur costs for outbound data transfers to another region or outside of Azure. Para saber mais, consulte os detalhes dos preços da largura de banda.To learn more, see Bandwidth pricing details.

Comportamentos que afetam o tempo de execuçãoBehaviors affecting execution time

Os seguintes comportamentos das suas funções podem ter impacto no tempo de execução:The following behaviors of your functions can impact the execution time:

  • Gatilhos e encadernações: O tempo necessário para ler a entrada e escrever a saída para as encadernações da sua função é contado como tempo de execução.Triggers and bindings: The time taken to read input from and write output to your function bindings is counted as execution time. Por exemplo, quando a sua função utiliza uma ligação de saída para escrever uma mensagem para uma fila de armazenamento Azure, o seu tempo de execução inclui o tempo necessário para escrever a mensagem para a fila, que está incluída no cálculo do custo da função.For example, when your function uses an output binding to write a message to an Azure storage queue, your execution time includes the time taken to write the message to the queue, which is included in the calculation of the function cost.

  • Execução assíncrona: O tempo que a sua função aguarda pelos resultados de um pedido de assínio await (em C#) é contado como tempo de execução.Asynchronous execution: The time that your function waits for the results of an async request (await in C#) is counted as execution time. O cálculo gb-segundo baseia-se no tempo de início e fim da função e na utilização da memória durante esse período.The GB-second calculation is based on the start and end time of the function and the memory usage over that period. O que está a acontecer ao longo desse tempo em termos de atividade da CPU não é contabilizado no cálculo.What is happening over that time in terms of CPU activity isn't factored into the calculation. Poderá reduzir os custos durante as operações assíncronos utilizando funções duradouras.You may be able to reduce costs during asynchronous operations by using Durable Functions. Não estás cobrado pelo tempo que passa nas esperas em funções de orquestrador.You're not billed for time spent at awaits in orchestrator functions.

Na sua fatura,pode consultar os dados relacionados com o custo das Execuções Totais - Funções e Tempo de Execução - Funções, juntamente com os custos reais cobrados.In your invoice, you can view the cost-related data of Total Executions - Functions and Execution Time - Functions, along with the actual billed costs. No entanto, estes dados da fatura são um agregado mensal para um período de faturação anterior.However, this invoice data is a monthly aggregate for a past invoice period.

Métricas de nível de aplicação de funçãoFunction app-level metrics

Para entender melhor o impacto de custos das suas funções, pode utilizar o Azure Monitor para visualizar métricas relacionadas com os custos atualmente geradas pelas suas aplicações de função.To better understand the cost impact of your functions, you can use Azure Monitor to view cost-related metrics currently being generated by your function apps. Pode utilizar o explorador de métricas Azure Monitor no portal [Azure] ou NAS DERES PARA obter estes dados.You can use either Azure Monitor metrics explorer in the Azure portal or REST APIs to get this data.

Explorador de métricas de monitorizaçãoMonitor metrics explorer

Utilize o explorador de métricas Azure Monitor para visualizar dados relacionados com o custo para as aplicações de função do seu plano de consumo num formato gráfico.Use Azure Monitor metrics explorer to view cost-related data for your Consumption plan function apps in a graphical format.

  1. No topo do [portal Azure] em serviços de pesquisa, recursos e docs procure monitor e selecione Monitor em Serviços.At the top of the Azure portal in Search services, resources, and docs search for monitor and select Monitor under Services.

  2. À esquerda, selecione Métricas > Selecione um recurso e, em seguida, use as definições abaixo da imagem para escolher a sua aplicação de função.At the left, select Metrics > Select a resource, then use the settings below the image to choose your function app.

    Selecione o seu recurso de aplicação de função

    DefiniçãoSetting Valor sugeridoSuggested value DescriçãoDescription
    SubscriçãoSubscription A sua subscriçãoYour subscription A subscrição com a sua aplicação de função.The subscription with your function app.
    Grupo de recursosResource group O seu grupo de recursosYour resource group O grupo de recursos que contém a sua aplicação de função.The resource group that contains your function app.
    Tipo de recursoResource type Serviços AplicacionaisApp Services As aplicações de função são mostradas como instâncias de Serviços de Aplicação no Monitor.Function apps are shown as App Services instances in Monitor.
    RecursoResource O seu aplicativo de funçãoYour function app A aplicação de função para monitorizar.The function app to monitor.
  3. Selecione Aplicar para escolher a sua aplicação de função como o recurso a monitorizar.Select Apply to choose your function app as the resource to monitor.

  4. A partir de Metric, escolha Contagem de Execução de Função e Soma para Agregação.From Metric, choose Function Execution Count and Sum for Aggregation. Isto adiciona a soma das contagens de execução durante o período escolhido ao gráfico.This adds the sum of the execution counts during chosen period to the chart.

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

  5. Selecione Adicione os passos métricos e repita os passos 2-4 para adicionar Unidades de Execução de Função à tabela.Select Add metric and repeat steps 2-4 to add Function Execution Units to the chart.

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.The resulting chart contains the totals for both execution metrics in the chosen time range, which in this case is two hours.

Gráfico de contagem 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ção, o gráfico apenas mostra unidades de execução.As the number of execution units is so much greater than the execution count, the chart just shows execution units.

Este gráfico mostra um total de 1,11 mil milhões Function Execution Units consumidos num período de duas horas, medido em MB-milissegundos.This chart shows a total of 1.11 billion Function Execution Units consumed in a two-hour period, measured in MB-milliseconds. Para converter em GB-segundos, divida por 1024000.To convert to GB-seconds, divide by 1024000. Neste exemplo, a aplicação de função consumiu 1110000000 / 1024000 = 1083.98 GB-segundos.In this example, the function app consumed 1110000000 / 1024000 = 1083.98 GB-seconds. Pode pegar neste valor e multiplicar-se pelo preço atual do tempo de execução na página de preços da [página de preços das Funções][], o que lhe dá o custo destas duas horas, assumindo que já utilizou quaisquer subsídios gratuitos de tempo de execução.You can take this value and multiply by the current price of execution time on the Functions pricing page, which gives you the cost of these two hours, assuming you've already used any free grants of execution time.

CLI do AzureAzure CLI

O CLI Azure tem comandos para recuperar métricas.The Azure CLI has commands for retrieving metrics. Pode utilizar o CLI a partir de um ambiente de comando local ou diretamente do portal utilizando a Azure Cloud Shell.You can use the CLI from a local command environment or directly from the portal using Azure Cloud Shell. Por exemplo, o comando de lista de métricas az monitor aguis retorna os dados de hora em hora durante o mesmo período de tempo utilizado anteriormente.For example, the following az monitor metrics list command returns hourly data over same time period used before.

Certifique-se de que substitui <AZURE_SUBSCRIPTON_ID> o ID de subscrição Azure que executa o comando.Make sure to replace <AZURE_SUBSCRIPTON_ID> with your Azure subscription ID running the command.

az monitor metrics list --resource /subscriptions/<AZURE_SUBSCRIPTION_ID>/resourceGroups/metrics-testing-consumption/providers/Microsoft.Web/sites/metrics-testing-consumption --metric FunctionExecutionUnits,FunctionExecutionCount --aggregation Total --interval PT1H --start-time 2019-09-11T21:46:00Z --end-time 2019-09-11T23:18:00Z

Este comando devolve uma carga JSON que se parece com o seguinte exemplo:This command returns a JSON payload that looks like the following example:

{
  "cost": 0.0,
  "interval": "1:00:00",
  "namespace": "Microsoft.Web/sites",
  "resourceregion": "centralus",
  "timespan": "2019-09-11T21:46:00Z/2019-09-11T23:18:00Z",
  "value": [
    {
      "id": "/subscriptions/XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX/resourceGroups/metrics-testing-consumption/providers/Microsoft.Web/sites/metrics-testing-consumption/providers/Microsoft.Insights/metrics/FunctionExecutionUnits",
      "name": {
        "localizedValue": "Function Execution Units",
        "value": "FunctionExecutionUnits"
      },
      "resourceGroup": "metrics-testing-consumption",
      "timeseries": [
        {
          "data": [
            {
              "average": null,
              "count": null,
              "maximum": null,
              "minimum": null,
              "timeStamp": "2019-09-11T21:46:00+00:00",
              "total": 793294592.0
            },
            {
              "average": null,
              "count": null,
              "maximum": null,
              "minimum": null,
              "timeStamp": "2019-09-11T22:46:00+00:00",
              "total": 316576256.0
            }
          ],
          "metadatavalues": []
        }
      ],
      "type": "Microsoft.Insights/metrics",
      "unit": "Count"
    },
    {
      "id": "/subscriptions/XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX/resourceGroups/metrics-testing-consumption/providers/Microsoft.Web/sites/metrics-testing-consumption/providers/Microsoft.Insights/metrics/FunctionExecutionCount",
      "name": {
        "localizedValue": "Function Execution Count",
        "value": "FunctionExecutionCount"
      },
      "resourceGroup": "metrics-testing-consumption",
      "timeseries": [
        {
          "data": [
            {
              "average": null,
              "count": null,
              "maximum": null,
              "minimum": null,
              "timeStamp": "2019-09-11T21:46:00+00:00",
              "total": 33538.0
            },
            {
              "average": null,
              "count": null,
              "maximum": null,
              "minimum": null,
              "timeStamp": "2019-09-11T22:46:00+00:00",
              "total": 13040.0
            }
          ],
          "metadatavalues": []
        }
      ],
      "type": "Microsoft.Insights/metrics",
      "unit": "Count"
    }
  ]
}

Esta resposta em particular mostra que, a partir 2019-09-11T21:46 2019-09-11T23:18 de, a aplicação consumiu 11100000000 MB-milissegundos (1083,98 GB-segundos).This particular response shows that from 2019-09-11T21:46 to 2019-09-11T23:18, the app consumed 1110000000 MB-milliseconds (1083.98 GB-seconds).

Métricas de nível de funçãoFunction-level metrics

As unidades de execução de funções são uma combinação do tempo de execução e do uso da sua memória, o que torna difícil a compreensão do uso da memória.Function execution units are a combination of execution time and your memory usage, which makes it a difficult metric for understanding memory usage. Os dados de memória não são uma métrica atualmente disponível através do Azure Monitor.Memory data isn't a metric currently available through Azure Monitor. No entanto, se pretender otimizar o uso da memória da sua app, pode utilizar os dados do contador de desempenho recolhidos pela App Insights.However, if you want to optimize the memory usage of your app, can use the performance counter data collected by Application Insights.

Se ainda não o fez, ative o Application Insights na sua aplicação de função.If you haven't already done so, enable Application Insights in your function app. Com esta integração ativada, pode consultar estes dados de telemetria no portal.With this integration enabled, you can query this telemetry data in the portal.

Determinar o uso da memóriaDetermine memory usage

Em Monitorização, selecione Logs (Analytics), em seguida, copie a seguinte consulta de telemetria e cole-a na janela de consulta e selecione Executar.Under Monitoring, select Logs (Analytics), then copy the following telemetry query and paste it into the query window and select Run. Esta consulta devolve o uso total da memória em cada tempo amostrado.This query returns the total memory usage at each sampled time.

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

Os resultados parecem ser o seguinte exemplo:The results look like the following example:

[timetamp UTC]timestamp [UTC] namename valorvalue
9/12/2019, 1:05:14 . 947 AM9/12/2019, 1:05:14.947 AM Bytes privadosPrivate Bytes 209,932,288209,932,288
9/12/2019, 1:06:14 . 994 AM9/12/2019, 1:06:14.994 AM Bytes privadosPrivate Bytes 212,189,184212,189,184
9/12/2019, 1:06:30 . 0109/12/2019, 1:06:30.010 AM Bytes privadosPrivate Bytes 231,714,816231,714,816
9/12/2019, 1:07:15 . 040 AM9/12/2019, 1:07:15.040 AM Bytes privadosPrivate Bytes 210,591,744210,591,744
9/12/2019, 1:12:16 . 285 AM9/12/2019, 1:12:16.285 AM Bytes privadosPrivate Bytes 216,285,184216,285,184
9/12/2019, 1:12:31 . 376 AM9/12/2019, 1:12:31.376 AM Bytes privadosPrivate Bytes 235,806,720235,806,720

Determinar a duraçãoDetermine duration

O Azure Monitor rastreia métricas ao nível do recurso, que para funções é a aplicação de função.Azure Monitor tracks metrics at the resource level, which for Functions is the function app. A integração de Insights de Aplicação emite métricas por função.Application Insights integration emits metrics on a per-function basis. Aqui está um exemplo de consulta de análise para obter a duração média de uma função:Here's an example analytics query to get the average duration of a function:

customMetrics
| where name contains "Duration"
| extend averageDuration = valueSum / valueCount
| summarize averageDurationMilliseconds=avg(averageDuration) by name
namename médiaDurationMillisecondsaverageDurationMilliseconds
QueueTrigger AvgDurationMsQueueTrigger AvgDurationMs 16 . 08716.087
FilaTrigger MaxDurationMsQueueTrigger MaxDurationMs 90 . 24990.249
FilaTrigger MinDurationMsQueueTrigger MinDurationMs 8 . 5228.522

Passos seguintesNext steps