Configura la logica e gli avvisi di fatturazione avanzati

Sebbene gli avvisi sul budget siano un modo relativamente semplice per ricevere aggiornamenti sulla fatturazione, a volte potresti voler creare avvisi più sofisticati che includano una logica più personalizzata. Ecco due approcci da prendere in considerazione:

  • Utilizza Cloud Monitoring per creare avvisi più sofisticati e tempestivi

  • Utilizza una notifica di fatturazione Pub/Sub insieme a una funzione Cloud corrispondente per creare un comportamento personalizzato in risposta alle modifiche alla tua spesa

Sebbene entrambe queste tecniche richiedano un maggiore impegno da parte tua, ti danno la possibilità di controllare esattamente i tipi di avvisi che ricevi e come rispondere.

Questa pagina offre una panoramica di ciascuno di questi approcci.

Crea avvisi più sofisticati con Cloud Monitoring

Le email di avviso semplice sul budget ti informano quando la fatturazione complessiva ha raggiunto determinate soglie. Tuttavia, potresti anche essere interessato a sapere se i singoli servizi stanno aumentando in modo imprevisto, prima che abbiano la possibilità di influire in modo significativo sul tuo budget. Per casi d'uso più sofisticati come questo, ti consigliamo di scoprire di più su Cloud Monitoring, uno strumento Google Cloud disponibile per il tuo progetto Firebase.

Cloud Monitoring è utile per diversi tipi di avvisi:

  • Se una risorsa da cui dipende il tuo progetto non è disponibile (sia per i servizi Firebase che per quelli Google Cloud, ma anche per servizi esterni come AWS)

  • Se servizi come Cloud Functions impiegano più tempo del previsto a rispondere

  • Se il bucket Cloud Storage, l'istanza Realtime Database o l'istanza Cloud Firestore rifiuta troppe richieste (un'indicazione che Firebase Security Rules potrebbe essere errato).

  • Se la quantità di risorse utilizzate da alcuni dei tuoi prodotti Firebase è aumentata oltre una determinata soglia

Gli avvisi creati tramite Cloud Monitoring vengono in genere inviati più rapidamente rispetto alle email di avviso di budget di base, che vengono in genere inviate una volta al giorno. Gli avvisi possono assumere la forma di messaggi SMS, messaggi del canale Slack, notifiche PagerDuty, webhook e altro ancora. Queste opzioni ti consentono di inviare avvisi con livelli di visibilità più elevati e più utili.

Uso: Cloud Monitoring

Per iniziare a utilizzare Cloud Monitoring, ti consigliamo di iniziare con Metrics Explorer, che ti consente di creare grafici di metriche personalizzate all'interno del tuo progetto Firebase/Google Cloud e visualizzarne l'utilizzo.

In particolare, puoi esaminare risorse come Cloud Firestore, Realtime Database o istanze Cloud Functions. Puoi visualizzare le informazioni sull'utilizzo di questi prodotti (ad esempio il numero di letture di documenti, i byte inviati o le chiamate di funzioni) che influiscono sulla fatturazione.

Dopo aver acquisito familiarità con la visualizzazione dell'utilizzo delle risorse in Metrics Explorer, ti consigliamo di creare un policy di avviso per le metriche che ti interessano di più. Ecco alcuni esempi di criteri di avviso:

  • Se il numero di letture di documenti in un periodo di tempo di 30 minuti è superiore a un determinato valore

  • Se l'utilizzo di una risorsa specifica (ad esempio una chiamata di funzione) sembra aumentare troppo rapidamente in un determinato periodo di tempo

Crea logica di fatturazione aggiuntiva

Gli avvisi relativi al budget inviano automaticamente email quando il budget raggiunge determinate soglie, ma per avvisi più sofisticati o reazioni programmatiche agli aumenti della spesa, potresti prendere in considerazione la configurazione di una logica personalizzata aggiuntiva basata sui messaggi Google Cloud Pub/Sub.

Ad esempio, puoi inviare avvisi ai canali Slack o tramite messaggio di testo oppure apportare modifiche programmatiche alla tua app o al tuo progetto a seconda dei livelli di spesa.

Pub/Sub è un servizio di passaggio di messaggi che consente ad altri servizi di inviare messaggi, in genere sotto forma di dati JSON, in modo asincrono tramite canali noti come argomenti Pub/Sub. Puoi configurare servizi autorizzati, come Cloud Functions, per ascoltare i messaggi in questi argomenti e agire sui dati in modo appropriato.

Tieni presente che le notifiche Pub/Sub per la fatturazione vengono inviate circa una volta ogni 20 minuti, indipendentemente dal fatto che l'utilizzo della fatturazione sia cambiato o meno, e sono senza stato (il che significa che non forniscono alcun contesto su ciò che le ha precedute). Se vuoi monitorare gli aumenti insoliti della spesa nel tempo o confrontare la tua spesa con il ciclo precedente, dovrai gestire autonomamente questi dati storici utilizzando un database come Cloud Firestore o Realtime Database.

Utilizzare gli argomenti di Pub/Sub con Cloud Functions

Puoi configurare un argomento Pub/Sub per i tuoi dati di fatturazione visitando il budget associato al tuo progetto Firebase nella console Google Cloud (in Fatturazione > Budget e avvisi), quindi facendo clic sulla casella di controllo Collega un argomento Pub/Sub a questo budget. Verrà creato un argomento Pub/Sub che potrai ascoltare in un secondo momento. Per la procedura dettagliata, consulta la documentazione completa.

Dopo aver creato l'argomento di fatturazione Pub/Sub, puoi scrivere una funzione Cloud per ascoltare l'argomento di fatturazione e agire di conseguenza sui dati. I dati vengono inviati in formato JSON e includono informazioni utili come l'importo speso finora, l'importo del budget e la data di inizio del ciclo di fatturazione corrente.

La documentazione di Google Cloud fornisce tutti i dettagli su come ricevere questi dati utilizzando una Cloud Function. Tuttavia, se utilizzi Cloud Functions for Firebase per eseguire il deployment delle funzioni, la procedura generale è un po' più semplice (consulta la documentazione di Firebase). Puoi anche consultare questo video per una procedura dettagliata di esempio.

Una volta ricevuti questi dati, puoi rispondere in diversi modi. Ecco alcune possibilità a disposizione: