Afficher et écrire des journaux Cloud Run Functions
Écrire des journaux d'exécution
Par défaut, Cloud Run Functions inclut la journalisation d'exécution simple. Les journaux écrits dans stdout
ou stderr
s'affichent automatiquement dans la console Google Cloud.
Pour une journalisation plus avancée, utilisez les bibliothèques clientes Cloud Logging.
Par défaut, la charge utile du journal est une simple chaîne de texte, comme illustré dans les extraits ci-dessous. La chaîne est stockée dans le champ textPayload
de l'entrée de journal.
Node.js
La plupart des entrées de journal ne sont pas associées à un niveau de journalisation. Exemples :- Les journaux générés avec
console.log()
,console.info()
,console.warn()
ouconsole.error()
- Les journaux générés directement dans
stdout
oustderr
Les messages système internes ont le niveau de journalisation DEBUG
.
Python
- Les journaux de sortie standard ou d'erreur standard n'ont pas de niveau de journalisation associé.
- Les messages système internes ont le niveau de journalisation
DEBUG
.
Go
- Les journaux de
stdout
oustderr
n'ont pas de niveau de journalisation associé. - Les messages système internes ont le niveau de journalisation
DEBUG
.
Java
- Les journaux de
stdout
oustderr
n'ont pas de niveau de journalisation associé. - Les messages système internes ont le niveau de journalisation
DEBUG
.
C#
- Le texte écrit dans
stdout
(par exemple, viaConsole.WriteLine
) etstderr
(par exemple, viaConsole.Error.WriteLine
) n'a pas de niveau de journalisation. - Les niveaux de journalisation ASP.NET Core sont mappés avec les niveaux Cloud Logging comme suit :
LogLevel.Trace
etLogLevel.Debug map
sont mappés avecDEBUG
de Cloud Logging.LogLevel.Information
est mappé avecINFO
de Cloud Logging.LogLevel.Warning
est mappé avecWARNING
de Cloud Logging.LogLevel.Error
est mappé avecERROR
de Cloud Logging.LogLevel.Critical
est mappé avecCRITICAL
de Cloud Logging.
Ruby
Les entrées de journal ne sont pas associées à un niveau de journalisation.
PHP
Écrire des journaux structurés
Les journaux texte par défaut décrits ci-dessus ne sont associés à aucun niveau de journalisation.
Si vous souhaitez inclure des niveaux de journalisation ou d'autres champs spécifiques dans vos entrées de journal, vous pouvez écrire des journaux dans stdout
ou stderr
sous la forme d'une seule ligne de données JSON sérialisées. Cette ligne est récupérée et analysée par Cloud Run Functions, puis placée dans le champ jsonPayload
au lieu de textPayload
. Les extraits ci-dessous illustrent l'écriture de ces journaux structurés.
Node.js
Python
La journalisation structurée est disponible dans Python 3.8 et versions ultérieures.
Go
La structure de chaque entrée de journal est fournie par un type Entry
:
Lorsqu'une structure Entry est journalisée, la méthode String
est appelée pour la convertir au format JSON attendu par Cloud Logging :
Java
Activez la journalisation JSON avec Logback et SLF4J en activant l'encodeur JSON Logstash dans votre configuration logback.xml
.
Traiter des champs JSON spéciaux dans des messages
Lorsque vous fournissez des données structurées sous forme de dictionnaire JSON, certains champs spéciaux sont supprimés de jsonPayload
et écrits dans le champ correspondant de l'entrée LogEntry
générée, comme décrit dans la documentation sur les champs spéciaux.
Par exemple, si vos données JSON incluent une propriété severity
, celle-ci est supprimée de jsonPayload
et apparaît en tant que propriété severity
de l'entrée de journal. La propriété message
est utilisée comme texte d'affichage principal de l'entrée de journal, le cas échéant.
Écrire des journaux à l'aide de bibliothèques clientes
Les bibliothèques clientes Cloud Logging offrent un autre moyen d'écrire des journaux. Ces bibliothèques vous permettent d'utiliser les mécanismes de journalisation standards de votre langage de programmation et de les intégrer à divers frameworks de journalisation compatibles. Les bibliothèques clientes simplifient également la population des champs JSON spéciaux en capturant automatiquement certaines informations et en fournissant des interfaces pour remplir les champs de manière appropriée.
Vous pouvez utiliser des bibliothèques clientes pour écrire des journaux avec l'API Cloud Logging de manière synchrone ou asynchrone. Certaines bibliothèques clientes sont également compatibles avec l'écriture de journaux structurés directement dans stdout
ou stderr
. Notez que si vous écrivez des journaux de manière asynchrone, l'arrêt inattendu de la fonction peut entraîner la perte d'entrées de journal.
Notez également que la journalisation synchrone avec l'API Logging augmente le temps d'exécution des fonctions, car elle nécessite l'attente des appels d'API.
Afficher les journaux d'exécution
Utiliser l'outil de ligne de commande
Les journaux Cloud Run Functions sont visibles dans l'UI de Cloud Logging et via Google Cloud CLI.
Pour afficher les journaux à l'aide de la gcloud CLI, exécutez la commande gcloud functions logs read
:
gcloud functions logs read --gen2
Pour afficher les journaux d'une fonction spécifique, indiquez le nom de la fonction en tant qu'argument :
gcloud functions logs read FUNCTION_NAME --gen2
Pour les fonctions dans d'autres langages, les journaux peuvent être mis en corrélation à partir de la même exécution de fonction à l'aide de l'en-tête de requête x-cloud-trace-context
.
Pour obtenir la liste complète des options d'affichage des journaux, consultez la documentation sur gcloud functions logs read
.
Utiliser le tableau de bord Logging
Vous pouvez également afficher les journaux d'exécution de Cloud Run Functions dans la console Google Cloud.
Utiliser l'API Logging
Les journaux d'exécution peuvent également être écrits et récupérés via l'API Cloud Logging. Les bibliothèques clientes de Cloud Logging fournissent une interface idiomatique à l'API Logging :
Node.js
Pour plus d'informations, consultez la documentation de référence sur la bibliothèque cliente Node.js.Python
Pour en savoir plus, consultez la documentation de référence sur la bibliothèque cliente Python.Go
Pour en savoir plus, consultez la documentation de référence sur la bibliothèque cliente Go.Java
Pour en savoir plus, consultez la documentation de référence sur la bibliothèque cliente Java.C#
Ruby
PHP
Pour connaître les autres options de journalisation pour Java, consultez la page Journalisation Java.
Comprendre les journaux de mise à l'échelle des instances
Lorsque de nouvelles instances sont démarrées pour votre fonction, Cloud Logging inclut des entrées de journal sous le nom de journal varlog/system
pour indiquer pourquoi chaque instance a été créée. L'entrée de journal suit le format suivant :
Starting new instance. Reason: REASON - DESCRIPTION
Le tableau suivant fournit une répartition des descriptions d'instance :
Motif | Description |
---|---|
CUSTOMER_MIN_INSTANCE |
Instance minimale configurée par le client pour la fonction. |
SCHEDULED |
L'instance a démarré en raison des facteurs de scaling configurés (par exemple, utilisation du processeur, débit des requêtes, etc.) et de leurs cibles. |
OVERFLOW |
L'instance a démarré, car aucune capacité n'a été trouvée pour le trafic actuel. |
Répondre aux journaux d'exécution
Vous pouvez répondre aux événements Cloud Logging en transférant leurs journaux vers une fonction Cloud Run. Pour en savoir plus, consultez la page Déclencheurs secondaires avec Cloud Logging.
Afficher les journaux des images de compilation
Vous pouvez également consulter les journaux de l'étape image de compilation du processus de déploiement. Cliquez sur le lien pour obtenir plus d'informations.