Vous pouvez utiliser Cloud Logging pour acheminer les entrées de journal des services Google Cloud , de vos applications et d'autres fournisseurs de services cloud vers des destinations de stockage, d'analyse et d'exportation tierce.
Par défaut, Cloud Logging achemine toutes les entrées de journal vers des buckets de journaux dans le projet, le dossier ou l'organisation d'où elles proviennent. Toutefois, vous pouvez configurer des récepteurs de journaux pour acheminer les données de journalisation vers des buckets personnalisés ou Pub/Sub. Pub/Sub permet d'exporter vos données vers des outils tiers.
Routage ou exportation des entrées de journal
Le routage est le processus qui consiste à déplacer les entrées de journal reçues par un projet, un dossier ou une organisation Google Cloud vers une destination. Une destination est un service qui traite les entrées de journal reçues et effectue une action. Par exemple, vous pouvez acheminer les entrées de journal vers un bucket de journaux. Cette destination analyse les entrées de journal pour obtenir des informations sur les erreurs, puis les écrit dans l'espace de stockage.
L'exportation consiste à déplacer des entrées de journal de Google Cloud vers un emplacement externe. Par exemple, vous pouvez acheminer des entrées de journal vers Pub/Sub, puis les exporter vers des outils tiers.
Cloud Logging utilise des récepteurs de journaux pour acheminer les entrées de journal vers des destinations. Par défaut, vos entrées de journal sont acheminées vers l'un des deux buckets de journaux de votre projet, dossier ou organisationGoogle Cloud . Vous pouvez créer des récepteurs de journaux pour acheminer vos données de journaux vers d'autres destinations. Vous pouvez également modifier l'un des récepteurs de journaux créés par le système. Ce document décrit ces options.
L'explorateur de journaux vous permet de télécharger les entrées de journal stockées dans des buckets de journaux vers un espace de stockage local. Toutefois, l'option de téléchargement est limitée à 10 000 entrées de journal. Pour exporter vos entrées de journal depuisGoogle Cloud, configurez un récepteur de journaux afin de router les entrées de journal entrantes vers Pub/Sub, puis exportez ces données depuis Google Cloud.
À propos des routeurs de journaux
Chaque projet, compte de facturation, dossier et organisation Google Cloud dispose d'un routeur de journaux, qui gère le flux des entrées de journal via des récepteurs au niveau des ressources. Un routeur de journaux gère également le flux d'une entrée de journal via des récepteurs qui se trouvent dans la hiérarchie des ressources de l'entrée. Les récepteurs contrôlent la manière dont les entrées de journal sont acheminées vers les destinations.
Un routeur de journaux stocke temporairement une entrée de journal. Ce comportement permet de se prémunir contre les interruptions et les pannes temporaires qui peuvent se produire lorsqu'une entrée de journal transite par des récepteurs. Le stockage temporaire ne protège pas contre les erreurs de configuration.
L'espace de stockage temporaire d'un routeur de journaux est distinct de l'espace de stockage à plus long terme fourni par les buckets Logging.
Les entrées de journal entrantes dont l'horodatage est antérieur à la durée de conservation des journaux ou postérieur à plus de 24 heures sont supprimées.
À propos des récepteurs de journaux
Lorsqu'un récepteur de journaux reçoit une entrée de journal, il détermine s'il doit l'ignorer ou l'acheminer vers la destination du récepteur. Le récepteur de journaux compare l'entrée de journal à ses filtres pour prendre cette décision. La destination d'un récepteur peut être un projet, un emplacement de stockage ou un service tel que Pub/Sub. Par exemple, un récepteur peut acheminer des entrées de journal vers un bucket de journaux.
Les récepteurs de journaux appartiennent à une ressource Google Cloud donnée : Google Cloud projets, comptes de facturation, dossiers et organisations. Ces ressources contiennent également plusieurs récepteurs de journaux. Lorsqu'une ressource reçoit une entrée de journal, chaque récepteur de journaux de cette ressource l'évalue indépendamment. Par conséquent, plusieurs récepteurs de journaux peuvent acheminer la même entrée de journal.
Par défaut, les données de journaux sont stockées dans le projet d'où elles proviennent. Toutefois, vous pouvez modifier cette configuration pour plusieurs raisons :
- Pour centraliser le stockage de vos données de journaux.
- Pour joindre vos données de journaux à d'autres données d'entreprise.
- Pour organiser vos données de journaux de manière à ce qu'elles vous soient utiles.
- Diffuser vos journaux vers d'autres applications, d'autres dépôts, ainsi que vers des organisations tierces. Par exemple, vous pouvez exporter vos journaux depuis Google Cloud afin de pouvoir les afficher sur une plate-forme tierce. Pour exporter vos entrées de journal, créez un récepteur de journaux qui les achemine vers Pub/Sub.
Un récepteur de journaux mal configuré n'achemine pas les entrées de journal. Lorsqu'un récepteur est mal configuré, des entrées de journal signalant les détails de l'erreur sont écrites. De plus, un e-mail est envoyé aux contacts essentiels de la ressource. Pour en savoir plus, consultez Dépannage : afficher les erreurs.
Les récepteurs de journaux ne peuvent pas acheminer les entrées de journal de manière rétroactive. En d'autres termes, un récepteur de journaux ne peut pas acheminer une entrée de journal reçue avant sa création. De même, si un récepteur est mal configuré, il n'achemine que les entrées de journal qui arrivent après la résolution de l'erreur de configuration.
Compatibilité avec les organisations et les dossiers
Pour vous aider à gérer les données de journaux d'une organisation ou d'un dossier, vous pouvez effectuer les opérations suivantes :
Vous pouvez créer des sinks agrégés, qui acheminent les entrées de journal d'une organisation ou d'un dossier et de leurs enfants vers la destination spécifiée par le sink. Il existe deux types de récepteurs agrégés :
- Récepteurs agrégés sans interception
- Récepteurs agrégés d'interception
Les récepteurs d'interception peuvent remplacer le comportement de routage des ressources situées plus bas dans la hiérarchie. Les récepteurs sans interception n'affectent pas le routage des autres ressources. Lorsqu'un récepteur d'interception d'une ressource correspond à une entrée de journal, celle-ci n'est pas envoyée aux récepteurs des ressources enfants, à l'exception du fait que l'entrée de journal est toujours envoyée au récepteur de journaux
_Requiredde la ressource d'où provient l'entrée de journal.Vous pouvez configurer les paramètres de ressources par défaut pour Cloud Logging afin de spécifier la configuration du récepteur
_Defaultcréé par le système pour les nouvelles ressources d'une organisation ou d'un dossier. Par exemple, vous pouvez utiliser ces paramètres pour désactiver le récepteur_Defaultou spécifier les filtres dans ce récepteur.
Exemples de routage
Cette section illustre comment une entrée de journal provenant d'un projet peut transiter par les récepteurs de sa hiérarchie des ressources.
Exemple : Aucun récepteur agrégé n'existe
Lorsqu'il n'existe aucun récepteur agrégé dans la hiérarchie des ressources de l'entrée de journal, celle-ci est envoyée aux récepteurs de journaux du projet d'origine de l'entrée de journal. Un récepteur au niveau du projet achemine l'entrée de journal vers la destination du récepteur lorsque l'entrée de journal correspond au filtre "Inclure" du récepteur, mais ne correspond à aucun des filtres "Exclure" du récepteur.
Exemple : Un récepteur agrégé non interceptant existe
Supposons qu'un récepteur agrégé sans interception existe dans la hiérarchie des ressources pour une entrée de journal. Une fois que le routeur de journaux a envoyé l'entrée de journal au récepteur agrégé sans interception, les événements suivants se produisent :
Le récepteur agrégé sans interception achemine l'entrée de journal vers la destination du récepteur lorsque l'entrée de journal correspond au filtre "Inclure", mais ne correspond à aucun filtre "Exclure".
Le routeur de journaux envoie l'entrée de journal aux récepteurs de journaux du projet d'où provient l'entrée de journal.
Un récepteur au niveau du projet achemine l'entrée de journal vers la destination du récepteur lorsque l'entrée de journal correspond au filtre "Inclure" du récepteur, mais ne correspond à aucun des filtres "Exclure" du récepteur.
Exemple : Un récepteur agrégé d'interception existe
Supposons qu'un récepteur agrégé d'interception existe dans la hiérarchie des ressources pour une entrée de journal. Une fois que le routeur de journaux a envoyé l'entrée de journal au récepteur agrégé d'interception, l'un des événements suivants se produit :
L'entrée de journal correspond au filtre "Inclure", mais pas au filtre "Exclure" :
- L'entrée de journal est acheminée vers la destination du récepteur agrégé d'interception.
- L'entrée de journal est envoyée au récepteur
_Requireddu projet d'où elle provient.
L'entrée de journal ne correspond pas au filtre "Inclure" ou correspond à au moins un filtre "Exclure" :
- L'entrée de journal n'est pas acheminée par le récepteur agrégé d'interception.
Le routeur de journaux envoie l'entrée de journal aux récepteurs de journaux du projet d'où provient l'entrée de journal.
Un récepteur au niveau du projet achemine l'entrée de journal vers la destination du récepteur lorsque l'entrée de journal correspond au filtre "Inclure" du récepteur, mais ne correspond à aucun des filtres "Exclure" du récepteur.
Filtres de récepteur de journaux
Chaque récepteur de journaux contient un filtre d'inclusion et peut contenir plusieurs filtres d'exclusion. Ces filtres déterminent si le récepteur de journaux achemine une entrée de journal vers la destination du récepteur. Si vous ne spécifiez aucun filtre, chaque entrée de journal est acheminée vers la destination du récepteur.
Une entrée de journal est acheminée par un récepteur de journaux en fonction des règles suivantes :
Si l'entrée de journal ne correspond pas au filtre d'inclusion, elle n'est pas acheminée. Lorsqu'un récepteur ne spécifie pas de filtre d'inclusion, chaque entrée de journal correspond à ce filtre.
Si l'entrée de journal correspond au filtre "Inclure" et à au moins un filtre "Exclure", elle n'est pas acheminée.
Si l'entrée de journal correspond au filtre "Inclure" et ne correspond à aucun filtre "Exclure", elle est acheminée vers la destination du récepteur.
Les filtres d'un récepteur de journaux sont spécifiés à l'aide du langage de requête Logging.
Vous ne pouvez pas utiliser de filtres "Exclure" pour réduire la consommation de votre quota d'API entries.write ou le nombre d'appels d'API entries.write. Les filtres d'exclusion sont appliqués après la réception des entrées de journal par l'API Logging.
Récepteurs de journaux créés par le système
Pour chaque projet, compte de facturation, dossier et organisation Google Cloud , Cloud Logging crée deux récepteurs de journaux, l'un nommé _Required et l'autre nommé _Default. Les filtres d'inclusion et d'exclusion de ces récepteurs garantissent que chaque entrée de journal provenant de la ressource est acheminée par l'un de ces récepteurs. Les deux récepteurs acheminent les données de journaux vers un bucket de journaux situé dans la même ressource que le récepteur de journaux.
Le reste de cette section fournit des informations sur les filtres et les destinations des récepteurs de journaux créés par le système.
Récepteur de journaux _Required
Le récepteur de journaux _Required d'une ressource achemine un sous-ensemble de journaux d'audit vers le bucket de journaux _Required de la ressource.
Ce récepteur ne spécifie aucun filtre d'exclusion, et le filtre d'inclusion est le suivant :
LOG_ID("cloudaudit.googleapis.com/activity") OR
LOG_ID("externalaudit.googleapis.com/activity") OR
LOG_ID("cloudaudit.googleapis.com/system_event") OR
LOG_ID("externalaudit.googleapis.com/system_event") OR
LOG_ID("cloudaudit.googleapis.com/access_transparency") OR
LOG_ID("externalaudit.googleapis.com/access_transparency")
Le récepteur de journaux _Required ne correspond qu'aux entrées de journal provenant de la ressource dans laquelle le récepteur de journaux _Required est défini. Par exemple, supposons qu'un récepteur de journaux achemine une entrée de journal d'activité du projet A vers le projet B.
Comme l'entrée de journal ne provient pas du projet B, le récepteur de journaux _Required du projet B n'achemine pas cette entrée de journal vers le bucket de journaux _Required.
Vous ne pouvez pas modifier ni supprimer le récepteur de journaux _Required.
Récepteur de journaux _Default
Le récepteur de journaux _Default d'une ressource achemine les entrées de journal vers le bucket de journaux _Default de la ressource.
Comme le filtre d'inclusion de ce récepteur est vide, il correspond à toutes les entrées de journal. Cependant, le filtre d'exclusion est configuré comme suit :
NOT LOG_ID("cloudaudit.googleapis.com/activity") AND
NOT LOG_ID("externalaudit.googleapis.com/activity") AND
NOT LOG_ID("cloudaudit.googleapis.com/system_event") AND
NOT LOG_ID("externalaudit.googleapis.com/system_event") AND
NOT LOG_ID("cloudaudit.googleapis.com/access_transparency") AND
NOT LOG_ID("externalaudit.googleapis.com/access_transparency")
Vous pouvez modifier et désactiver le récepteur de journaux _Default. Par exemple, vous pouvez modifier le récepteur de journaux _Default et changer la destination. Vous pouvez également modifier n'importe quel filtre existant et ajouter des filtres d'exclusion.
Destinations des récepteurs
La destination d'un récepteur peut se trouver dans une ressource différente de celle du récepteur. Par exemple, vous pouvez utiliser un récepteur de journaux pour acheminer les entrées de journal d'un projet vers un bucket de journaux stocké dans un autre projet.
Les destinations suivantes sont acceptées :
- ProjetGoogle Cloud
Sélectionnez cette destination lorsque vous souhaitez que les récepteurs de journaux du projet de destination réacheminent vos entrées de journal, ou lorsque vous avez créé un récepteur agrégé d'interception. Les récepteurs de journaux du projet de destination peuvent rediriger les entrées de journal vers n'importe quelle destination compatible, à l'exception d'un projet.
Les récepteurs de journaux créés par le système dans le projet de destination excluent les entrées de journal acheminées vers le bucket de journaux
_Requireddu projet source. Par exemple, si vous acheminez les journaux d'activité d'administration vers un autre projet, les récepteurs de journaux_Requiredet_Defaultdu projet de destination excluent ces entrées de journal. Pour stocker ces entrées de journal, mettez à jour le récepteur de journaux_Defaultdans le projet de destination ou créez un récepteur de journaux personnalisé.
- Bucket de journaux
- Sélectionnez cette destination lorsque vous souhaitez stocker vos données de journaux dans des ressources gérées par Cloud Logging. Les données de journal stockées dans des buckets de journaux peuvent être consultées et analysées à l'aide de services tels que l'explorateur de journaux.
- Sujet Pub/Sub
- Sélectionnez cette destination lorsque vous souhaitez exporter vos données de journaux depuisGoogle Cloud , puis utilisez une intégration tierce. Les entrées de journal sont formatées au format JSON, puis acheminées vers un sujet Pub/Sub.
Limites des destinations
Cette section décrit les limites spécifiques à chaque destination :
- Lorsque vous configurez une destination de récepteur, indiquez le chemin d'accès complet et utilisez le point de terminaison global du service.
Les points de terminaison de service régionaux (REP), tels que
pubsub.LOCATION.rep.googleapis.com, ne sont pas compatibles.
Le routage des journaux vers un sujet Pub/Sub qui applique des restrictions en transit n'est pas possible. Logging ne peut pas garantir que les requêtes de publication proviennent d'une région autorisée, ce qui entraîne des erreurs de configuration
topic_region_not_allowedet des pertes de journaux.Les limites suivantes s'appliquent lorsque la destination d'un récepteur de journaux est un projet Google Cloud :
- Il existe une limite d'un saut.
- Le récepteur de journaux
_Requireddu projet de destination achemine les entrées de journal vers le bucket de journaux_Requireddu projet lorsque les entrées de journal correspondent au filtre du récepteur et proviennent du projet de destination. - Le récepteur de journaux
_Defaultdu projet de destination achemine les entrées de journal qui correspondent à son filtre "Inclure" et qui ne correspondent à aucun filtre "Exclure". Le récepteur de journaux_Defaultexclut certaines entrées de journal. Par exemple, ce récepteur n'achemine pas les entrées de journal des activités d'administration et des événements système. Vous pouvez modifier ce récepteur. - Seuls les récepteurs agrégés qui se trouvent dans la hiérarchie des ressources d'une entrée de journal traitent l'entrée.
Par exemple, supposons que la destination d'un récepteur de journaux dans le projet
Asoit le projetB. Dans ce cas, les règles suivantes s'appliquent :- En raison de la limite d'un seul saut, les récepteurs de journaux du projet
Bne peuvent pas rediriger les entrées de journal vers un autre projet Google Cloud . - Le bucket de journaux
_Requireddu projetBne stocke que les entrées de journal provenant du projetB. Ce bucket de journaux ne stocke aucune entrée de journal provenant d'une autre ressource, y compris celles provenant du projetA. - Si le projet
Aet le projetBont des hiérarchies de ressources différentes, une entrée de journal qu'un récepteur de journaux du projetAachemine vers le projetBn'est pas envoyée aux récepteurs agrégés de la hiérarchie des ressources du projetB. - Si le projet
Aet le projetBont la même hiérarchie de ressources, les entrées de journal sont envoyées aux récepteurs agrégés de cette hiérarchie. Si une entrée de journal n'est pas interceptée par un récepteur agrégé, le routeur de journaux l'envoie aux récepteurs du projetA.
Bonnes pratiques
Gérez vos récepteurs de journaux lorsque vous gérez votre stockage de journaux. Par exemple, si vous supprimez la destination d'un récepteur de journaux, supprimez également le récepteur de journaux correspondant.
Pour connaître les bonnes pratiques d'utilisation du routage pour la gouvernance des données ou pour les cas d'utilisation courants, consultez les documents suivants :
Exemples : Centraliser le stockage de vos journaux
Cette section explique comment configurer un stockage centralisé. Le stockage centralisé fournit un emplacement unique pour interroger les données de journaux, ce qui simplifie vos requêtes lorsque vous recherchez des tendances ou examinez des problèmes. Du point de vue de la sécurité, vous disposez également d'un emplacement de stockage unique, ce qui peut simplifier les tâches de vos analystes de sécurité.
Si vous centralisez le stockage de vos journaux, déterminez si vous devez placer un privilège sur le projet qui stocke vos données de journaux. Un privilège peut empêcher la suppression accidentelle d'un projet. Pour en savoir plus, consultez Protéger les projets à l'aide de privilèges.
Centraliser le stockage des journaux pour les projets d'un dossier
Supposons que vous gérez un dossier et que vous souhaitez centraliser le stockage de vos entrées de journal. Pour ce cas d'utilisation, vous pouvez procéder comme suit :
- Dans votre dossier, vous créez un projet nommé
CentralStorage. - Créez un récepteur agrégé d'interception pour votre dossier et configurez-le pour acheminer toutes les entrées de journal. Vous définissez la destination du récepteur sur le projet nommé
CentralStorage.
Lorsqu'une entrée de journal provenant du dossier ou de l'une de ses ressources enfants arrive, elle est envoyée au récepteur agrégé d'interception que vous avez créé. Ce récepteur achemine les entrées de journal vers le projet nommé CentralStorage. Les récepteurs de journaux de ce projet traitent les entrées de journal :
Le récepteur de journaux
_Defaultachemine vers le bucket de journaux_Defaulttoutes les entrées de journal qui correspondent au filtre du récepteur. Ce bucket de journaux est votre emplacement de stockage centralisé.Le récepteur de journaux
_Requiredachemine vers le bucket de journaux_Requiredles entrées de journal qui correspondent aux filtres du récepteur et qui proviennent du projetCentralStorage. Ce bucket de journaux n'est pas un emplacement de stockage centralisé. Toutefois, vous pouvez stocker toutes vos données de journaux de manière centralisée. Pour obtenir un exemple, consultez Stocker les journaux d'audit dans un emplacement centralisé.
Une fois le traitement du récepteur agrégé terminé, l'entrée de journal est envoyée au récepteur de journaux _Required dans la ressource d'où provient l'entrée de journal. Lorsque l'entrée de journal correspond au filtre du récepteur de journaux _Required, elle est acheminée vers le bucket de journaux _Required de la ressource. Par conséquent, chaque projet Google Cloud de votre dossier stocke les entrées de journal dans son bucket de journaux _Required.
Centraliser le stockage des journaux pour un ensemble de projets
Vous pouvez également stocker les entrées de journal dans un seul emplacement lorsque vous n'avez pas d'organisation ni de dossier. Par exemple, vous pouvez effectuer les opérations suivantes :
- Créez un projet nommé
CentralStorage. - Pour chaque projet, à l'exception de
CentralStorage, vous modifiez le récepteur de journaux_Defaultet définissez la destination sur le projet nomméCentralStorage.
Vous vous demandez peut-être pourquoi l'exemple précédent définit la destination des récepteurs de journaux _Default sur un projet, plutôt que sur le bucket de journaux _Default de ce projet. Les principales raisons sont la simplicité et la cohérence.
Lorsque vous acheminez des entrées de journal vers un projet, les récepteurs de journaux du projet de destination contrôlent les entrées de journal stockées et leur emplacement de stockage.
Autrement dit, vous centralisez les fonctionnalités de filtre et de destination. Si vous souhaitez modifier les entrées de journal stockées ou leur emplacement de stockage, il vous suffit de modifier les récepteurs de journaux dans un seul projet.
Centraliser le stockage des journaux d'audit
Vous pouvez stocker de manière centralisée les entrées de journal qui correspondent au récepteur de journaux _Required. Pour stocker ces entrées de journal de manière centralisée, effectuez l'une des opérations suivantes :
Créez des récepteurs de journaux qui acheminent les entrées de journal correspondant au récepteur de journaux
_Requiredvers un bucket de journaux centralisé.Configurez les récepteurs de journaux comme dans les deux exemples précédents, puis ajoutez un récepteur de journaux dans le projet de destination qui achemine les entrées de journal correspondant au récepteur de journaux
_Requiredvers un bucket de journaux. Vous pouvez également modifier les filtres dans le récepteur de journaux_Default.
Avant d'implémenter une telle stratégie, consultez les consignes de tarification.
Étapes suivantes
Pour vous aider à acheminer et à stocker les données Cloud Logging, consultez les documents suivants :
Pour créer des récepteurs afin d'acheminer les entrées de journal vers des destinations compatibles, consultez Acheminer les journaux vers des destinations compatibles.
Pour savoir comment créer des récepteurs agrégés capables d'acheminer les entrées de journal des ressources dans des dossiers ou des organisations, consultez Présentation des récepteurs agrégés.
Pour en savoir plus sur le format des entrées de journal acheminées et sur l'organisation des journaux dans les destinations, consultez les documents suivants :