Suivez les instructions de cette section pour configurer votre serveur de journaux centralisés.
Configurer un bucket de stockage
Créez un bucket de stockage pour stocker les journaux de l'appliance :
gcloud storage buckets create gs://BUCKET_NAME
Activez l'API IAM si ce n'est pas déjà fait :
gcloud services enable iam.googleapis.com
Créez un compte de service pour accéder au bucket :
gcloud iam service-accounts create GSA_NAME --description="DESCRIPTION" --display-name="DISPLAY_NAME"
Transférer des données depuis GDC vers un bucket de stockage
Transférez les données pour les exporter vers des buckets de stockage.
Copier les charts Helm Grafana et Loki depuis l'appliance GDC isolée vers un ordinateur local
Sur le programme d'amorçage de l'appliance GDC sous air gap, les graphiques Helm pour Grafana et Loki se trouvent dans RELEASE_DIR/appliance/observability
. Copiez-les sur l'ordinateur local sur lequel vous exécutez cette configuration :
scp
USERNAME@BOOTSTRAPPER:/RELEASE_DIR/appliance/observability/grafana.tgz WORKING_DIR/grafana.tgz
scp
USERNAME@BOOTSTRAPPER:/RELEASE_DIR/appliance/observability/loki.tgz WORKING_DIR/loki.tgz
Configurer Grafana et Loki dans un cluster GKE
Créez un cluster GKE : https://cloud.google.com/sdk/gcloud/reference/container/clusters/create. Si vous utilisez un cluster existant pour cette configuration, passez à l'étape suivante.
Installez et configurez kubectl pour interagir avec le cluster : https://cloud.google.com/kubernetes-engine/docs/how-to/cluster-access-for-kubectl
Activez Workload Identity sur le cluster : https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity#enable-existing-cluster.
Suivez les instructions de la page https://cloud.google.com/kubernetes-engine/docs/how-to/persistent-volumes/cloud-storage-fuse-csi-driver#enable pour activer le pilote CSI Cloud Storage FUSE dans votre cluster GKE.
Suivez https://cloud.google.com/kubernetes-engine/docs/how-to/persistent-volumes/cloud-storage-fuse-csi-driver#authentication pour configurer l'accès aux buckets Cloud Storage à l'aide de la fédération d'identité de charge de travail pour GKE. Choisissez
roles/storage.objectAdmin
lorsque vous configurez la liaison de stratégie IAM à l'étape 5.Suivez https://cloud.google.com/artifact-registry/docs/repositories/remote-repo pour créer un dépôt distant Artifact Registry qui servira de proxy pour Dockerhub, le registre externe contenant les images de conteneur utilisées par les charts Helm Grafana et Loki.
Téléchargez et décompressez les charts Helm Grafana et Loki :
tar -xzf WORKING_DIR/grafana.tgz tar -xzf WORKING_DIR/loki.tgz
Définissez les valeurs du chart Helm Loki dans WORKING_DIR/loki/values.yaml.in et installez le chart Helm dans le cluster :
helm install LOKI_RELEASE_NAME WORKING_DIR/loki --namespace NAMESPACE
Définissez les valeurs du chart Helm Grafana dans WORKING_DIR/grafana/values.yaml.in et installez le chart Helm dans le cluster :
helm install GRAFANA_RELEASE_NAME WORKING_DIR/grafana --namespace NAMESPACE
Exemple :
app: # name is the name that will used for creating kubernetes resources # like deployment, service, etc. associated with this grafana app. name: grafana # artifactRegistryRepository is the full name of the artifact registry remote # repository that proxies dockerhub. artifactRegistryRepository: us-east1-docker.pkg.dev/my-gcp-project/dockerhub loki: # serviceName is the name of the kubernetes service that exposes # the loki server. serviceName: loki # serviceNamespace is the namespace in which the loki service is present serviceNamespace: my-loki-namespace # tenantID is the tenant ID of the logs. tenantID: infra-obs
Accéder à l'interface utilisateur Grafana
Accédez à l'interface utilisateur Grafana en configurant le transfert de port entre votre ordinateur et le service Grafana du cluster Kubernetes :
kubectl port-forward service/GRAFANA_APP_NAME
-n NAMESPACE 3000:3000
Après avoir exécuté la commande précédente, vous pouvez accéder à l'interface utilisateur Grafana. Si vous devez exposer l'interface utilisateur Grafana à plusieurs utilisateurs de votre organisation, envisagez de configurer GKE Ingress : https://cloud.google.com/kubernetes-engine/docs/tutorials/http-balancer.
Exporter les journaux vers un stockage externe
Par défaut, l'instance Loki exécutée dans un cluster agrège et stocke tous les journaux. Toutefois, vous pouvez configurer une sortie Fluent Bit supplémentaire pour exporter les journaux vers d'autres destinations que cette instance Loki sur le cluster d'administrateur racine.
Cette section explique comment configurer un récepteur supplémentaire pour acheminer et exporter les journaux vers un stockage externe. Il fournit des instructions pour les types de journaux suivants en fonction de votre cas d'utilisation :
Pour obtenir la liste complète des destinations Fluent Bit acceptées, consultez https://docs.fluentbit.io/manual/pipeline/outputs.
Exporter les journaux opérationnels
Pour exporter les journaux opérationnels vers un espace de stockage externe, procédez comme suit :
Créez un objet
ConfigMap
dans l'espace de nomsobs-system
avec le libellélogmon: system_logs
. Ajoutez la configuration de sortie supplémentaire dans le fichieroutput.conf
de la sectiondata
. Il doit avoir la même syntaxe que les plug-ins de sortie Fluent Bit.Lorsque vous créez l'objet
ConfigMap
, assurez-vous de respecter les exigences suivantes :- Conservez le nom que vous attribuez à l'objet
ConfigMap
, car il doit correspondre à une valeur spécifiée lors d'une étape ultérieure. - Ajoutez les configurations de plug-in de sortie Fluent Bit personnalisées dans la section Output block (Bloc de sortie) de l'objet.
Le fichier YAML suivant présente un modèle de l'objet
ConfigMap
pour illustrer les exigences précédentes.apiVersion: v1 kind: ConfigMap metadata: # The name should match the configmap name specified in step 3. name: <descriptive configmap name> namespace: obs-system labels: # This label is required and must be system_logs for system logs logmon: system_logs data: # The file name must be output.conf output.conf: # ===== Output block ===== ### Add customized fluent-bit output plugin configurations here
- Conservez le nom que vous attribuez à l'objet
Ouvrez votre ressource personnalisée
ObservabilityPipeline
dans un éditeur de ligne de commande :kubectl --kubeconfig=ROOT_ADMIN_CLUSTER_KUBECONFIG -n obs-system edit observabilitypipelines.observability.gdc.goog default
Remplacez ORG_ADMIN_CLUSTER_KUBECONFIG par le chemin du fichier kubeconfig du cluster d'administrateur.
Dans la ressource personnalisée
ObservabilityPipeline
, ajoutez le tableaufluentbitConfigMaps
au champadditionalSinks
dans le champ de journalisation de la section "spec". L'entrée du tableaufluentbitConfigMaps
doit correspondre au nom que vous avez précédemment attribué à l'objet ConfigMap à l'étape 1.apiVersion: observability.gdc.goog/v1alpha1 kind: ObservabilityPipeline metadata: # Don't change anything in this section ... spec: logging: # This section is for system logs and only needs to be edited if system logs have a custom output. additionalSink: fluentbitConfigMaps: # The name should match the configmap name created in step 1. - "<system logs output configmap name>" # Scheme: []v1.VolumeMount. Add volumeMounts if necessary volumeMounts: - ... - ... # Scheme: []v1.Volume. Add volumes if necessary volumes: - ... - ...
Pour appliquer les modifications à la ressource personnalisée
ObservabilityPipeline
, enregistrez et quittez l'éditeur de ligne de commande.
En suivant ces étapes, vous lancez le déploiement de vos modifications et redémarrez le DaemonSet anthos-log-forwarder
.
Exporter des journaux d'audit
Pour exporter des journaux d'audit vers un stockage externe, procédez comme suit :
Créez un objet
ConfigMap
dans l'espace de nomsobs-system
avec le libellélogmon: audit_logs
. Ajoutez la configuration de sortie supplémentaire dans le fichieroutput.conf
de la sectiondata
. Il doit avoir la même syntaxe que les plug-ins de sortie Fluent Bit.Lorsque vous créez l'objet
ConfigMap
, assurez-vous de respecter les exigences suivantes :- Conservez le nom que vous attribuez à l'objet
ConfigMap
, car il doit correspondre à une valeur spécifiée lors d'une étape ultérieure. - Ajoutez les configurations de plug-in de sortie Fluent Bit personnalisées dans la section Output block (Bloc de sortie) de l'objet.
Le fichier YAML suivant présente un modèle de l'objet
ConfigMap
pour illustrer les exigences précédentes.apiVersion: v1 kind: ConfigMap metadata: # The name should match the configmap name specified in step 3. name: <descriptive configmap name> namespace: obs-system labels: # This label is required and must be audit_logs for audit logs logmon: audit_logs data: # The file name must be output.conf output.conf: | # ===== Output block ===== ### Add a customized fluent-bit output plugin configuration here
- Conservez le nom que vous attribuez à l'objet
Ouvrez votre ressource personnalisée
ObservabilityPipeline
dans un éditeur de ligne de commande :kubectl --kubeconfig=ORG_ADMIN_CLUSTER_KUBECONFIG -n obs-system edit observabilitypipelines.observability.gdc.goog default
Remplacez ORG_ADMIN_CLUSTER_KUBECONFIG par le chemin du fichier kubeconfig du cluster d'administrateur.
Dans la ressource personnalisée
ObservabilityPipeline
, ajoutez le tableaufluentbitConfigMaps
au champadditionalSinks
dans le champ de journalisation de la section "spec". L'entrée du tableaufluentbitConfigMaps
doit correspondre au nom que vous avez précédemment attribué à l'objet ConfigMap à l'étape 1.apiVersion: observability.gdc.goog/v1alpha1 kind: ObservabilityPipeline metadata: # Don't change anything in this section ... spec: auditLogging: # This section is for audit logs and only needs to be edited if audit logs have a custom output. additionalSink: fluentbitConfigMaps: # The name should match the configmap name created in step 1. - "<audit logs output configmap name>" # Scheme: []v1.VolumeMount. Add volumeMounts if necessary volumeMounts: - ... - ... # Scheme: []v1.Volume. Add volumes if necessary volumes:
Pour appliquer les modifications à la ressource personnalisée
ObservabilityPipeline
, enregistrez et quittez l'éditeur de ligne de commande.
En suivant ces étapes, vous lancez le déploiement de vos modifications et redémarrez le DaemonSet anthos-log-forwarder
.