Configurer le serveur de journaux centralisés

Suivez les instructions de cette section pour configurer votre serveur de journaux centralisés.

Configurer un bucket de stockage

  1. Créez un bucket de stockage pour stocker les journaux de l'appliance :

    gcloud storage buckets create gs://BUCKET_NAME
    
  2. Activez l'API IAM si ce n'est pas déjà fait :

    gcloud services enable iam.googleapis.com
    
  3. 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

  1. 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.

  2. Installez et configurez kubectl pour interagir avec le cluster : https://cloud.google.com/kubernetes-engine/docs/how-to/cluster-access-for-kubectl

  3. Activez Workload Identity sur le cluster : https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity#enable-existing-cluster.

  4. 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.

  5. 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.

  6. 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.

  7. Téléchargez et décompressez les charts Helm Grafana et Loki :

     tar -xzf WORKING_DIR/grafana.tgz
     tar -xzf WORKING_DIR/loki.tgz
    
  8. 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
    
  9. 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 :

  1. Créez un objet ConfigMap dans l'espace de noms obs-system avec le libellé logmon: system_logs. Ajoutez la configuration de sortie supplémentaire dans le fichier output.conf de la section data. 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
    
  2. 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.

  3. Dans la ressource personnalisée ObservabilityPipeline, ajoutez le tableau fluentbitConfigMaps au champ additionalSinks dans le champ de journalisation de la section "spec". L'entrée du tableau fluentbitConfigMaps 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:
          - ...
          - ...
    
  4. 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 :

  1. Créez un objet ConfigMap dans l'espace de noms obs-system avec le libellé logmon: audit_logs. Ajoutez la configuration de sortie supplémentaire dans le fichier output.conf de la section data. 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
    
    
  2. 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.

  3. Dans la ressource personnalisée ObservabilityPipeline, ajoutez le tableau fluentbitConfigMaps au champ additionalSinks dans le champ de journalisation de la section "spec". L'entrée du tableau fluentbitConfigMaps 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:
    
  4. 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.