La registrazione è uno strumento importante per il debug e il monitoraggio del codice. Cloud Functions ti offre la possibilità di utilizzare il suo SDK logger, il Google Cloud Logging personalizzato o lo standard degli oggetti console
per lo sviluppo per il Web.
Scrivere registri
Sebbene l'SDK del logger di Cloud Functions sia consigliato per la maggior parte delle situazioni, potresti scegliere una delle altre opzioni per questi motivi:
- Hai una base di codice esistente e preferisci non eseguire il refactoring da
console.log
. - Hai familiarità con Cloud Logging (precedentemente StackDriver logging) e preferisci usarlo per la registrazione personalizzata.
Utilizzo dell'SDK del logger di Cloud Functions
L'SDK logger di Cloud Functions fornisce un'interfaccia standard che ha un'API simile alle istruzioni console.log
e supporta altri livelli di log. Puoi utilizzare questo SDK per registrare eventi con dati strutturati , consentendo un'analisi e un monitoraggio più semplici.
L'SDK logger supporta le voci di registro come parte di un'importazione con caratteri jolly. Per esempio:
const functions = require("firebase-functions");
functions.logger.log("Hello from info. Here's an object:", someObj);
In alternativa, puoi utilizzare singole esportazioni. Questo esempio mostra i dati strutturati allegati al log come ultimo argomento:
const { warn } = require("firebase-functions/lib/logger");
// Attach structured data to the log as the last argument.
warn("This is a 'WARNING' severity message with some metadata.", {
key1: 'val1',
key2: 'val2'
});
- I comandi
logger.log()
hanno il livello di log INFO . - I comandi
logger.info()
hanno il livello di log INFO . - I comandi
logger.warn()
hanno il livello di registro ERRORE . - I comandi
logger.error()
hanno il livello di registro ERRORE . - I messaggi di sistema interni hanno il livello di registro DEBUG .
Con logger.write()
, puoi scrivere voci di registro oltre ai livelli di gravità del registro di CRITICAL
, ALERT
ed EMERGENCY
. Vedere LogSeverity .
Registri di registrazione cloud personalizzati
I log di Cloud Functions con l'SDK logger sono supportati da Cloud Logging . Puoi utilizzare la libreria Cloud Logging per Node.js per registrare eventi con dati strutturati, consentendo analisi e monitoraggio più semplici.
const { Logging } = require('@google-cloud/logging');
// ...
// Instantiate the logging SDK. The project ID will
// be automatically inferred from the Cloud Functions environment.
const logging = new Logging();
const log = logging.log('my-custom-log-name');
// This metadata is attached to each log entry. This specifies a fake
// Cloud Function called 'Custom Metrics' in order to make your custom
// log entries appear in the Cloud Functions logs viewer.
const METADATA = {
resource: {
type: 'cloud_function',
labels: {
function_name: 'CustomMetrics',
region: 'us-central1'
}
}
};
// ...
// Data to write to the log. This can be a JSON object with any properties
// of the event you want to record.
const data = {
event: 'my-event',
value: 'foo-bar-baz',
// Optional 'message' property will show up in the Firebase
// console and other human-readable logging surfaces
message: 'my-event: foo-bar-baz'
};
// Write to the log. The log.write() call returns a Promise if you want to
// make sure that the log was written successfully.
const entry = log.entry(METADATA, data);
log.write(entry);
Utilizzando console.log
La soluzione consigliata per la registrazione da una funzione consiste nell'utilizzare l' SDK logger . Puoi invece utilizzare chiamate di registrazione JavaScript standard come console.log
e console.error
, ma devi prima richiedere un modulo speciale per correggere i metodi standard per funzionare correttamente:
require("firebase-functions/lib/logger/compat");
Dopo aver richiesto il modulo di compatibilità del logger, puoi utilizzare i metodi console.log()
normalmente nel tuo codice:
exports.helloError = functions.https.onRequest((request, response) => {
console.log('I am a log entry!');
response.send('Hello World...');
});
- I comandi
console.log()
hanno il livello di log INFO . - I comandi
console.info()
hanno il livello di log INFO . - I comandi
console.warn()
hanno il livello di log ERRORE . - I comandi
console.error()
hanno il livello di registro ERRORE . - I messaggi di sistema interni hanno il livello di registro DEBUG .
Visualizzazione dei registri
I log per le funzioni cloud sono visualizzabili in Google Cloud Console , nell'interfaccia utente di Cloud Logging o tramite lo strumento da riga di comando di firebase
.
Utilizzo dell'interfaccia a riga di comando di Firebase
Per visualizzare i registri con lo strumento firebase
, utilizzare il comando functions:log
:
firebase functions:log
Per visualizzare i registri per una funzione specifica, fornire il nome della funzione come argomento:
firebase functions:log --only <FUNCTION_NAME>
Per la gamma completa delle opzioni di visualizzazione del registro, vedere la guida per functions:log
:
firebase help functions:log
Utilizzando Google Cloud Console
Puoi visualizzare i registri per le funzioni in Google Cloud Console .
Utilizzo dell'interfaccia utente di registrazione cloud
È possibile visualizzare i registri per le funzioni cloud nell'interfaccia utente di registrazione cloud.
Analisi dei log
Cloud Logging offre una potente suite di strumenti di analisi dei registri che puoi utilizzare per monitorare le tue funzioni cloud. Questi strumenti sono particolarmente potenti se combinati con la registrazione personalizzata .
Metriche basate sui log
Nell'interfaccia utente di Cloud Logging, utilizza il campo del filtro avanzato per restringere l'ambito del registro alla funzione che desideri analizzare, quindi fai clic su Invia filtro per filtrare i registri. Ad esempio, puoi analizzare solo i registri da una singola funzione:
resource.type="cloud_function"
resource.labels.function_name="myCloudFunction"
resource.labels.region="us-central1"
Se hai registrato eventi con payload JSON personalizzati, puoi filtrare utilizzando le chiavi e i valori che hai fornito:
resource.type="cloud_function"
resource.labels.function_name="CustomMetrics"
jsonPayload.event="my-event"
Dopo aver filtrato i log, puoi analizzarli utilizzando metriche basate sui log . Fare clic sul pulsante Crea metrica per aprire l'editor di metriche e selezionare un tipo di metrica:
- Metriche contatore: conta il numero di voci di registro che corrispondono a un filtro. Ad esempio, puoi contare il numero di volte in cui si verifica un determinato evento.
- Metriche di distribuzione: accumula dati numerici dalle voci di registro che corrispondono a un filtro. Ad esempio, potresti tenere traccia delle latenze di determinate operazioni all'interno delle tue funzioni.
Per i log basati su testo, come quelli risultanti da console.log()
nelle tue funzioni, puoi estrarre valori ed etichette dal campo textPayload
usando espressioni regolari. Per i log personalizzati con dati strutturati puoi accedere direttamente ai dati nel campo jsonPayload
.
Grafici e avvisi
Dopo aver creato le metriche basate sui log per monitorare le tue funzioni, puoi creare grafici e avvisi basati su queste metriche. Ad esempio, puoi creare un grafico per visualizzare la latenza nel tempo o creare un avviso per farti sapere se un determinato errore si verifica troppo spesso.
Vedere Creazione di grafici e avvisi per informazioni dettagliate su come utilizzare le metriche basate sui log nei grafici e nei criteri di avviso.