I resource monitor sono una funzionalità di Snowflake pensata per aiutare i clienti a tenere sotto controllo la spesa. In questo articolo trovi tutto ciò che serve sapere per configurarli e sfruttarli al meglio nel tuo account. Partiamo dalle ragioni per cui conviene utilizzarli.
A cosa servono i resource monitor di Snowflake?
Il modello di pricing a consumo di Snowflake e la facilità con cui è possibile scalare permettono ai clienti di pagare solo le risorse effettivamente utilizzate, scalando rapidamente per rispondere alla domanda. Il rovescio della medaglia è che, senza controlli adeguati, i costi di Snowflake possono crescere in modo inatteso. I resource monitor aiutano a monitorare e contenere i costi inviando notifiche al raggiungimento di soglie di spesa predefinite. Possono inoltre essere configurati per evitare il rinnovo anticipato del contratto, contenendo il consumo imprevisto di crediti.
Cosa fanno i resource monitor di Snowflake?
I resource monitor consentono di definire un limite di crediti Snowflake per una determinata risorsa in un dato intervallo di tempo. Ad esempio, a un warehouse o a un gruppo di warehouse si può assegnare un limite giornaliero di 50 crediti. Quando viene raggiunta la percentuale specificata di tale limite nell'intervallo previsto, i resource monitor possono innescare diverse azioni. Le tre azioni disponibili sono:
- Inviare una notifica via email all'utente
- Sospendere il warehouse (o i warehouse) al termine dell'esecuzione di tutte le query
- Sospendere immediatamente il warehouse (o i warehouse) interrompendo le query in corso
Oltre che sui singoli warehouse, i resource monitor possono essere configurati anche a livello di intero account.
Lo screenshot qui sotto mostra un esempio di notifica email generata da un resource monitor.

Come si crea un resource monitor in Snowflake?
I resource monitor possono essere creati dall'interfaccia di Snowflake oppure in modo programmatico tramite SQL. Vediamo entrambi gli approcci.
Creare un resource monitor dall'interfaccia
Per creare un nuovo resource monitor dall'interfaccia di Snowflake, vai nella sezione Admin > Resource Monitors. Dopo aver cliccato sul pulsante "+ Resource Monitor" in alto a destra, dovrai compilare i seguenti campi:

- Name: scegli il nome che preferisci, ricordando che non sono ammessi spazi
- Credit Quota: la quota di crediti che vuoi assegnare al monitor
- Monitor Type: "Account" oppure "Warehouse". Con "Account" la quota di crediti si applica all'intero account; con "Warehouse" si applica solo ai warehouse specificati.
- Warehouse(s): se hai scelto "Warehouse" come tipo di monitor, dovrai selezionare uno o più warehouse da associare al monitor.
- Schedule: qui puoi configurare l'orario di inizio e (facoltativamente) di fine dell'operatività del resource monitor. Puoi anche impostare la frequenza con cui il monitor azzera il conteggio dei crediti. Le opzioni supportate sono: giornaliera, mensile, annuale e mai.
- Actions: per creare il monitor occorre configurare almeno un'azione.
Creare un resource monitor con SQL
Di seguito un esempio di comando per creare un resource monitor in 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 ;
Per assegnare il monitor al warehouse COMPUTE, esegui:
alter warehouse compute set resource_monitor = compute_warehouse_monitor
La sintassi completa di questo comando è disponibile nella documentazione di Snowflake.
Quali resource monitor conviene creare?
Un primo suggerimento è creare un resource monitor a livello di account basato sull'importo del tuo contratto Snowflake. In questo modo eviti di esaurire il budget contrattuale prima del previsto.
Ad esempio, se il budget residuo del contratto Snowflake è di 240.000 $ per i prossimi 6 mesi, puoi impostare un resource monitor mensile a livello di account con una quota di 16.000 crediti (ipotizzando un prezzo di 2,5 $ per credito). Puoi scegliere di ricevere una notifica via email se il consumo di crediti dell'account supera il 100% di tale quota.
Un secondo consiglio è creare un resource monitor che segnali eventuali picchi nel consumo di crediti. Per farlo, puoi configurare un resource monitor che invii un alert ogni volta che la spesa giornaliera supera di 1,5 volte la media giornaliera. Consigliamo di calibrare questo moltiplicatore in base alle tue esigenze, per evitare notifiche troppo frequenti.

Come si visualizzano i resource monitor?
I resource monitor sono consultabili nell'interfaccia di Snowflake in Admin -> Resource Monitors:

In alternativa, puoi eseguire l'istruzione SQL show resource monitors:

Chi può creare i resource monitor o accedervi?
I resource monitor possono essere creati solo dagli amministratori dell'account. Una volta creato un resource monitor, è possibile concedere ai ruoli l'accesso per visualizzarlo o modificarlo. L'accesso va assegnato individualmente a ciascun resource monitor.
Qualsiasi utente di Snowflake può ricevere notifiche email dai resource monitor. Per farlo, si imposta via SQL il parametro NOTIFY USERS sul resource monitor. Per maggiori dettagli, consulta la documentazione di Snowflake.
Quali sono i limiti dei resource monitor di Snowflake?
Sebbene i resource monitor siano un ottimo punto di partenza per controllare il consumo di crediti Snowflake ed evitare addebiti imprevisti, ad oggi presentano alcuni limiti.
Innanzitutto, è possibile impostarli solo a livello di account o di warehouse. Funzionalità serverless come l'automatic clustering o le materialized view possono generare costi improvvisi ma non sono coperte dai resource monitor.
I resource monitor supportano notifiche esclusivamente via email. La maggior parte dei team preferisce invece ricevere le notifiche direttamente su Slack o Teams, insieme agli altri alert e alle comunicazioni interne.
Inoltre, come si vede nello screenshot precedente, le notifiche email contengono poche informazioni sulle cause del superamento della soglia di crediti. Gli utenti sono quindi costretti a scavare nei dati di utilizzo dell'account per individuare l'origine del picco.
Se cerchi un'esperienza più ricca, ti consigliamo SELECT: offre queste funzionalità avanzate out of the box, con uno sforzo di configurazione minimo.
Risoluzione dei problemi: nessuna email dal resource monitor
Se non ricevi email da un resource monitor, è possibile che le notifiche non siano state abilitate per l'amministratore Snowflake. Trovi le istruzioni per farlo a questa pagina.
Ian Whitestone·Co-founder & CEO di SELECT
Ian è Co-founder e CEO di SELECT, una piattaforma SaaS per la gestione e l'ottimizzazione dei costi di Snowflake. Prima di fondare SELECT, ha guidato per 6 anni team full stack di data science ed engineering in Shopify e Capital One. In Shopify si è occupato dell'ottimizzazione del data warehouse e dell'aumento della cost observability.