La collecte de journaux dans l'appliance Google Distributed Cloud (GDC) air gap vous permet d'agréger les événements opérationnels de vos workflows à des fins de surveillance et de dépannage. Déployez une ressource personnalisée LoggingTarget dans l'espace de noms de votre projet sur le serveur de l'API Management pour extraire, indexer et étiqueter les journaux de vos composants de service.
Après avoir configuré la collecte des journaux, vous pouvez interroger et afficher les journaux dans l'interface utilisateur de Grafana. Pour obtenir des recommandations d'instrumentation, consultez les consignes de journalisation Kubernetes.
Avant de commencer
Pour obtenir les autorisations nécessaires pour gérer les ressources personnalisées LoggingTarget, demandez à l'administrateur IAM de votre organisation ou de votre projet de vous accorder l'un des rôles LoggingTarget associés.
En fonction du niveau d'accès et des autorisations dont vous avez besoin, vous pouvez obtenir les rôles de créateur, d'éditeur ou de lecteur pour cette ressource dans une organisation ou un projet. Pour en savoir plus, consultez Préparer les autorisations IAM.
Opérateurs d'application : pour obtenir les autorisations nécessaires pour gérer les ressources personnalisées
LoggingTargetdans un projet sur le serveur d'API de gestion, demandez à votre administrateur IAM de projet de vous accorder l'un des rôles suivants dans l'espace de noms de votre projet :- Créateur LoggingTarget : crée des ressources personnalisées
LoggingTarget. Demandez le rôle Créateur de LoggingTarget (loggingtarget-creator). - Éditeur LoggingTarget : modifie les ressources personnalisées
LoggingTarget. Demandez le rôle Éditeur LoggingTarget (loggingtarget-editor). - Lecteur LoggingTarget : affiche les ressources personnalisées
LoggingTarget. Demandez le rôle Lecteur LoggingTarget (loggingtarget-viewer).
- Créateur LoggingTarget : crée des ressources personnalisées
Administrateurs de plate-forme : pour obtenir les autorisations nécessaires pour gérer les ressources personnalisées
LoggingTargetdans l'espace de nomsplatform-obsdu serveur d'API de gestion, demandez à l'administrateur IAM de votre organisation de vous accorder l'un des rôles de cluster suivants dans l'espace de nomsplatform-obs:- Créateur de PA LoggingTarget : crée des ressources personnalisées
LoggingTarget. Demandez le rôle de cluster Créateur de PA LoggingTarget (loggingtarget-pa-creator). - Éditeur LoggingTarget PA : modifie les ressources personnalisées
LoggingTarget. Demandez le rôle de cluster Éditeur d'AP LoggingTarget (loggingtarget-pa-editor). - Lecteur d'analyse de l'emplacement de journalisation : affiche les ressources personnalisées
LoggingTarget. Demandez le rôle de cluster Lecteur d'AP LoggingTarget (loggingtarget-pa-viewer).
- Créateur de PA LoggingTarget : crée des ressources personnalisées
Collecter les journaux opérationnels
Les journaux opérationnels enregistrent les conditions, les modifications et les actions lorsque vous gérez les opérations en cours dans les applications et les services sur GDC. Déployez la ressource personnalisée LoggingTarget sur le serveur d'API Management pour configurer le pipeline de journalisation système afin de collecter les journaux opérationnels de services spécifiques au niveau du projet.
Pour collecter les journaux opérationnels d'un service, procédez comme suit :
- Configurez la ressource personnalisée
LoggingTargetdans le serveur d'API Management, en spécifiant les pods sélectionnés pour collecter vos journaux opérationnels, l'espace de noms du projet et tout paramètre supplémentaire. Pour savoir à quoi doit ressemblerLoggingTarget, consultez Configurer la ressource personnaliséeLoggingTarget. Déployez la ressource personnalisée
LoggingTargetdans l'espace de noms de votre projet sur le serveur de l'API Management :kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f LOGGING_TARGET_NAMERemplacez les éléments suivants :
MANAGEMENT_API_SERVER: chemin d'accès kubeconfig du serveur d'API Management zonal.LOGGING_TARGET_NAME: nom de la ressource personnaliséeLoggingTarget, par exemplemy-service-logging-target.yaml.
Le pipeline commence à collecter les journaux des composants supplémentaires de votre projet.
Interrogez vos journaux à partir de l'instance Grafana de votre projet. Pour en savoir plus, consultez Interroger et afficher les journaux.
Utilisez la fonctionnalité de codage couleur intégrée de Grafana pour les différents niveaux de journalisation du service. Pour en savoir plus sur la définition des valeurs de niveau de journal, consultez https://grafana.com/docs/grafana/latest/explore/logs-integration/.
Configurer la ressource personnalisée LoggingTarget
La ressource personnalisée LoggingTarget indique au pipeline de journalisation de collecter les journaux de services spécifiques de votre projet GDC. Vous pouvez spécifier les cibles pour lesquelles vous collectez des journaux, un analyseur de journaux, des niveaux d'accès et d'autres paramètres.
Cette ressource définit les configurations suivantes :
- Cibles : critères de sélection des pods et des conteneurs à partir desquels vous souhaitez collecter des journaux. Vous pouvez spécifier des noms de cluster, des préfixes de nom de pod et des préfixes de nom de conteneur.
- Analyseur de journaux : analyseur prédéfini permettant d'interpréter les entrées de journal, de mapper les sorties de journal aux étiquettes et d'extraire les champs pertinents.
- Identification du service : nom du service appliqué en tant qu'étiquette aux entrées de journal pour faciliter l'identification et le filtrage.
Autorisation : niveau d'accès des entrées de journal, qui contrôle qui peut afficher les journaux collectés.
En configurant ces paramètres dans la ressource personnalisée LoggingTarget, vous pouvez contrôler précisément la collecte et l'organisation des journaux de vos services.
Pour collecter les journaux opérationnels d'un service, procédez comme suit :
- Déterminez le projet GDC à partir duquel vous souhaitez collecter les journaux.
Dans votre configuration
LoggingTarget, spécifiez les pods pour collecter vos journaux opérationnels, l'espace de noms du projet et tous les paramètres supplémentaires.Le fichier YAML suivant montre un exemple de configuration
LoggingTargetdansmy-project-namespace, où le préfixe du nom du pod à partir duquel collecter les journaux estmy-pod-prefix, le niveau d'accès aux entrées de journal est accordé aux opérateurs d'application (ao), le nom du service estmy-service-nameet le format de journal est JSON :# Configures a log scraping job apiVersion: logging.gdc.goog/v1 kind: LoggingTarget metadata: # Choose a namespace that matches the namespace of the workload pods. namespace: my-project-namespace name: my-service-logging-target spec: selector: matchPodNames: - my-pod-prefix parser: json logAccessLevel: ao serviceName: my-service-namePour en savoir plus sur les champs et options supplémentaires, consultez la spécification
LoggingTargetcomplète et la documentation de référence de l'API.Appliquez la configuration
LoggingTargetau serveur d'API Management dans le même espace de noms que vos pods cibles :kubectl --kubeconfig KUBECONFIG_PATH apply -f LOGGING_TARGET_NAME.yamlRemplacez les éléments suivants :
KUBECONFIG_PATH: chemin d'accès au fichier kubeconfig du serveur d'API Management.LOGGING_TARGET_NAME: nom du fichier de définitionLoggingTarget, tel quemy-service-logging-target.
Le pipeline de journalisation commence à collecter les journaux des composants supplémentaires de votre projet.
Vous pouvez interroger les journaux collectés à l'aide de l'interface utilisateur Grafana ou de l'API Log Query. Pour en savoir plus, consultez Interroger et afficher les journaux.
Si vous utilisez Grafana pour interroger vos journaux, vous pouvez utiliser la fonctionnalité de codage couleur intégrée pour les différents niveaux de journaux du service. Pour en savoir plus sur la définition des valeurs de niveau de journal, consultez https://grafana.com/docs/grafana/latest/explore/logs-integration/.
Spécification LoggingTarget complète
Le fichier YAML suivant montre un exemple de spécification complète de la ressource personnalisée LoggingTarget. Pour en savoir plus et obtenir une description complète des champs, consultez la documentation de référence de l'API.
# Configures a log scraping job
apiVersion: logging.gdc.goog/v1
kind: LoggingTarget
metadata:
# Choose a namespace that matches the namespace of the workload pods.
namespace: PROJECT_NAMESPACE
name: LOGGING_TARGET_NAME
spec:
# Choose a matching pattern that identifies the pods for this job.
# Optional.
# Relationship between different selectors: 'AND'
selector:
# The clusters to collect logs from.
# The default configuration is to collect logs from all clusters.
# The relationship between different clusters is an 'OR' relationship.
# Optional
matchClusters:
- my-cluster
- another-cluster
# The pod name prefixes to collect logs from.
# The logging platform scrapes all pods with names
# that start with the specified prefixes.
# The values must contain '[a-z0-9-]' characters only.
# The relationship between different list elements is an 'OR' relationship.
# Optional.
matchPodNames:
- my-pod-prefix
- another-pod-prefix
# The container name prefixes to collect logs from.
# The logging platform scrapes all containers with names
# that start with the specified prefixes.
# The values must contain '[a-z0-9-]' characters only.
# The relationship between different list elements is an 'OR' relationship.
# Optional.
matchContainerNames:
- my-container-prefix
- another-container-prefix
# Choose the predefined parser for log entries.
# Use parsers to map the log output to labels and extract fields.
# Specify the log format.
# Optional.
# Options: klog_text, klog_json, klogr, gdch_json, json
parser: klog_text
# Specify an access level for log entries.
# The default value is 'ao'.
# Optional.
# Options: ao, pa, io
logAccessLevel: ao
# Specify a service name to be applied as a label.
# For user workloads consider this field as a workload name.
# Required.
serviceName: my-service-name
# The additional static fields to apply to log entries.
# The field is a key-value pair, where the field name is the key and
# the field value is the value.
# Optional.
additionalFields:
app: workload2
key: value
Remplacez les éléments suivants :
PROJECT_NAMESPACE: l'espace de noms de votre projet.LOGGING_TARGET_NAME: nom du fichier de définitionLoggingTarget.