Os resource monitors são um recurso do Snowflake que ajuda os clientes a controlar seus gastos. Neste post, abordamos tudo o que você precisa saber para configurar e tirar o máximo dos resource monitors na sua conta. Para começar, vamos entender por que vale a pena usá-los.
Para que servem os resource monitors do Snowflake?
O modelo de preços por uso e a facilidade de escalar do Snowflake permitem que você pague apenas pelos recursos necessários, escalando rapidamente conforme a demanda. O lado ruim é que, sem controles adequados, os custos do Snowflake podem disparar de forma inesperada. Os resource monitors ajudam a monitorar e controlar esses custos, enviando notificações quando determinados limites de gasto são atingidos. Também é possível configurá-los para evitar a renovação antecipada do contrato, reduzindo o risco de consumo inesperado de créditos.
O que os resource monitors do Snowflake fazem?
Os resource monitors permitem definir um limite de créditos Snowflake para um determinado recurso e período. Por exemplo, é possível atribuir a um warehouse ou a um grupo de warehouses um limite de 50 créditos por dia. Quando a porcentagem definida desse limite é atingida no período, os resource monitors podem disparar ações distintas. As três ações possíveis são:
- Notificar o usuário por e-mail
- Suspender o(s) warehouse(s) após o término das queries em execução
- Suspender imediatamente o(s) warehouse(s) e abortar qualquer query em andamento
Além dos warehouses, os resource monitors podem ser configurados para uma conta inteira.
A imagem abaixo mostra um exemplo de notificação por e-mail enviada por um resource monitor.

Como criar um resource monitor no Snowflake?
Os resource monitors podem ser criados pela interface do Snowflake ou via SQL. Vamos ver cada uma das abordagens.
Criando um resource monitor pela interface
Para criar um novo resource monitor na interface do Snowflake, acesse Admin > Resource Monitors. Depois de clicar no botão "+ Resource Monitor" no canto superior direito, você deverá preencher os seguintes campos:

- Nome: defina como quiser, mas lembre-se de que espaços não são permitidos
- Cota de créditos: a quantidade de créditos desejada para o monitor
- Tipo de monitor: "Account" ou "Warehouse". Em "Account", a cota se aplica à conta inteira. Em "Warehouse", a cota vale apenas para os warehouses que você especificar.
- Warehouse(s): se você escolheu "Warehouse" como tipo de monitor, será preciso selecionar um ou mais warehouses para associá-lo.
- Agendamento: aqui você configura o horário de início e (opcionalmente) o horário de término em que o resource monitor opera. Também é possível definir a frequência com que ele reinicia a contagem de créditos. As opções disponíveis são: diária, mensal, anual e nunca.
- Ações: pelo menos uma ação precisa ser configurada para criar o monitor.
Criando um resource monitor com SQL
Veja abaixo um exemplo de comando para criar um resource monitor com SQL:
1create or replace resource monitor compute_warehouse_monitor with credit_quota=5 frequency=daily start_timestamp=immediately triggers on 75 percent do notify on 100 percent do suspend on 110 percent do suspend_immediate ;
Para atribuir o monitor ao warehouse COMPUTE, execute o seguinte:
alter warehouse compute set resource_monitor = compute_warehouse_monitor
A sintaxe completa desse comando está na documentação do Snowflake.
Quais resource monitors vale a pena criar?
Considere criar um resource monitor no nível da conta com base no valor do seu contrato com o Snowflake. Isso ajuda a garantir que o orçamento contratado não acabe antes do previsto.
Por exemplo, se o saldo restante do contrato Snowflake for de US$ 240.000 para os próximos 6 meses, dá para configurar um resource monitor mensal no nível da conta com uma cota de 16.000 créditos (considerando um preço de US$ 2,50/crédito). Você pode optar por receber uma notificação por e-mail caso o uso de créditos da conta ultrapasse 100% dessa cota.
Outra recomendação é criar um resource monitor para te alertar sobre picos no uso de créditos. Para isso, você pode configurar um resource monitor que dispara um alerta sempre que o gasto diário ultrapassar 1,5x a média diária. Recomendamos ajustar esse múltiplo conforme necessário para não receber alertas com frequência excessiva.

Como visualizar os resource monitors?
Os resource monitors podem ser visualizados na interface do Snowflake em Admin -> Resource Monitors:

Outra opção é executar show resource monitors como comando SQL:

Quem pode criar ou acessar os resource monitors?
Os resource monitors só podem ser criados por administradores da conta. Depois que um resource monitor é criado, é possível conceder a roles permissão para visualizar ou modificar o monitor. O acesso precisa ser concedido individualmente a cada resource monitor.
Qualquer usuário do Snowflake pode receber notificações por e-mail dos resource monitors. Isso é feito via SQL, definindo o parâmetro NOTIFY USERS no resource monitor. Veja mais detalhes na documentação do Snowflake.
Quais são as desvantagens dos resource monitors do Snowflake?
Embora os resource monitors sejam um ótimo ponto de partida para controlar o uso de créditos do Snowflake e evitar cobranças inesperadas, eles têm algumas limitações hoje.
Primeiro, só é possível defini-los no nível da conta ou do warehouse. Recursos serverless, como automatic clustering ou materialized views, também podem gerar cobranças repentinas, mas não são cobertos pelos resource monitors.
Os resource monitors só enviam notificações por e-mail. A maioria dos times prefere receber alertas diretamente no Slack ou Teams, junto com o restante da comunicação.
Além disso, como mostrado na imagem anterior, as notificações por e-mail trazem pouca informação sobre o que causou a ultrapassagem da cota de créditos. Os usuários precisam vasculhar os dados de uso da conta para descobrir o motivo do pico.
Se você quiser uma experiência mais completa, recomendamos o SELECT, que entrega esses recursos avançados de forma nativa, com configuração mínima.
Solucionando o problema de não receber e-mail do resource monitor
Se você não está recebendo e-mails de um resource monitor, pode ser porque as notificações ainda não foram habilitadas para o admin do Snowflake. Veja esta página com as instruções para configurar.
Ian Whitestone·Cofundador e CEO do SELECT
Ian é cofundador e CEO do SELECT, uma plataforma SaaS de gestão e otimização de custos do Snowflake. Antes de fundar o SELECT, Ian passou 6 anos liderando times full stack de data science e engenharia no Shopify e no Capital One. No Shopify, Ian liderou os esforços para otimizar o data warehouse e ampliar a observabilidade de custos.