Segui le istruzioni riportate in questa sezione per configurare il server dei log centralizzati.
Configurare il bucket di archiviazione
Crea un nuovo bucket di archiviazione per archiviare i log dell'appliance:
gcloud storage buckets create gs://BUCKET_NAMEAbilita l'API IAM se non è già abilitata:
gcloud services enable iam.googleapis.comCrea un account di servizio per accedere al bucket:
gcloud iam service-accounts create GSA_NAME --description="DESCRIPTION" --display-name="DISPLAY_NAME"
Trasferire dati da GDC a un bucket di archiviazione
Trasferisci dati per esportare i dati nei bucket di archiviazione.
Copia i grafici Helm di Grafana e Loki dall'appliance GDC air-gapped a un computer locale
Nel bootstrapper dell'appliance GDC con air gap, i grafici Helm per Grafana e Loki si trovano in RELEASE_DIR/appliance/observability. Copiali sul computer locale su cui stai eseguendo questa configurazione:
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
Configura Grafana e Loki in un cluster GKE
Crea un nuovo cluster GKE: https://cloud.google.com/sdk/gcloud/reference/container/clusters/create. Se utilizzi un cluster esistente per questa configurazione, procedi al passaggio successivo.
Installa e configura kubectl per interagire con il cluster: https://cloud.google.com/kubernetes-engine/docs/how-to/cluster-access-for-kubectl
Abilita Workload Identity sul cluster: https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity#enable-existing-cluster
Segui le istruzioni riportate all'indirizzo https://cloud.google.com/kubernetes-engine/docs/how-to/persistent-volumes/cloud-storage-fuse-csi-driver#enable per abilitare il driver CSI di Cloud Storage FUSE nel cluster GKE.
Segui le istruzioni riportate all'indirizzo https://cloud.google.com/kubernetes-engine/docs/how-to/persistent-volumes/cloud-storage-fuse-csi-driver#authentication per configurare l'accesso ai bucket Cloud Storage utilizzando la federazione delle identità per i carichi di lavoro per GKE. Scegli
roles/storage.objectAdminquando configuri il binding dei criteri IAM nel passaggio 5.Segui la procedura descritta in https://cloud.google.com/artifact-registry/docs/repositories/remote-repo per creare un repository remoto Artifact Registry che fungerà da proxy per Docker Hub, il registro esterno che contiene le immagini container utilizzate dai grafici Helm di Grafana e Loki.
Scarica ed estrai i grafici Helm di Grafana e Loki:
tar -xzf WORKING_DIR/grafana.tgz tar -xzf WORKING_DIR/loki.tgzImposta i valori del grafico Helm di Loki in WORKING_DIR/loki/values.yaml.in e installa il grafico Helm nel cluster:
helm install LOKI_RELEASE_NAME WORKING_DIR/loki --namespace NAMESPACEImposta i valori del grafico Helm di Grafana in WORKING_DIR/grafana/values.yaml.in e installa il grafico Helm nel cluster:
helm install GRAFANA_RELEASE_NAME WORKING_DIR/grafana --namespace NAMESPACEAd esempio:
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
Accedere alla UI di Grafana
Accedi alla UI di Grafana configurando l'inoltro delle porte tra il tuo computer e il servizio Grafana dal cluster Kubernetes:
kubectl port-forward service/GRAFANA_APP_NAME
-n NAMESPACE 3000:3000
Dopo aver eseguito il comando precedente, puoi accedere alla UI di Grafana. Se devi esporre la UI di Grafana a più utenti della tua organizzazione, valuta la possibilità di configurare GKE Ingress: https://cloud.google.com/kubernetes-engine/docs/tutorials/http-balancer
Esportare i log in una memoria esterna
Per impostazione predefinita, l'istanza Loki in esecuzione in un cluster aggrega e archivia tutti i log. Tuttavia, puoi configurare un output Fluent Bit aggiuntivo per esportare i log in altre destinazioni oltre a questa istanza Loki nel cluster di amministrazione principale.
Questa sezione contiene i passaggi per configurare un sink aggiuntivo per instradare ed esportare i log in un archivio esterno. Fornisce istruzioni per i seguenti tipi di log in base al tuo caso d'uso:
Per un elenco completo delle destinazioni Fluent Bit supportate, visita la pagina https://docs.fluentbit.io/manual/pipeline/outputs.
Esportare i log operativi
Segui questi passaggi per esportare i log operativi in una memoria esterna:
Crea un oggetto
ConfigMapnello spazio dei nomiobs-systemcon l'etichettalogmon: system_logs. Aggiungi la configurazione dell'output aggiuntivo nel fileoutput.confdella sezionedata. Deve avere la stessa sintassi dei plug-in di output di Fluent Bit.Quando crei l'oggetto
ConfigMap, assicurati di soddisfare i seguenti requisiti:- Conserva il nome che assegni all'oggetto
ConfigMapperché deve corrispondere a un valore specificato in un passaggio futuro. - Aggiungi le configurazioni del plug-in di output Fluent Bit personalizzate nella sezione Blocco di output dell'oggetto.
Il seguente file YAML mostra un modello dell'oggetto
ConfigMapper illustrare i requisiti precedenti.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- Conserva il nome che assegni all'oggetto
Apri la risorsa personalizzata
ObservabilityPipelinein un editor della riga di comando:kubectl --kubeconfig=ROOT_ADMIN_CLUSTER_KUBECONFIG -n obs-system edit observabilitypipelines.observability.gdc.goog defaultSostituisci ORG_ADMIN_CLUSTER_KUBECONFIG con il percorso del file kubeconfig per il cluster di amministrazione.
Nella risorsa personalizzata
ObservabilityPipeline, aggiungi l'arrayfluentbitConfigMapsal campoadditionalSinksal campo di logging della sezione spec. La voce nell'arrayfluentbitConfigMapsdeve corrispondere al nome che hai assegnato in precedenza all'oggetto ConfigMap nel passaggio 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: - ... - ...Per applicare le modifiche alla risorsa personalizzata
ObservabilityPipeline, salva ed esci dall'editor della riga di comando.
Il completamento di questi passaggi avvia l'implementazione delle modifiche e riavvia il DaemonSet anthos-log-forwarder.
Esportare i log di controllo
Segui questi passaggi per esportare gli audit log in un archivio esterno:
Crea un oggetto
ConfigMapnello spazio dei nomiobs-systemcon l'etichettalogmon: audit_logs. Aggiungi la configurazione dell'output aggiuntivo nel fileoutput.confdella sezionedata. Deve avere la stessa sintassi dei plug-in di output di Fluent Bit.Quando crei l'oggetto
ConfigMap, assicurati di soddisfare i seguenti requisiti:- Conserva il nome che assegni all'oggetto
ConfigMapperché deve corrispondere a un valore specificato in un passaggio futuro. - Aggiungi le configurazioni del plug-in di output Fluent Bit personalizzate nella sezione Blocco di output dell'oggetto.
Il seguente file YAML mostra un modello dell'oggetto
ConfigMapper illustrare i requisiti precedenti.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- Conserva il nome che assegni all'oggetto
Apri la risorsa personalizzata
ObservabilityPipelinein un editor della riga di comando:kubectl --kubeconfig=ORG_ADMIN_CLUSTER_KUBECONFIG -n obs-system edit observabilitypipelines.observability.gdc.goog defaultSostituisci ORG_ADMIN_CLUSTER_KUBECONFIG con il percorso del file kubeconfig per il cluster di amministrazione.
Nella risorsa personalizzata
ObservabilityPipeline, aggiungi l'arrayfluentbitConfigMapsal campoadditionalSinksal campo di logging della sezione spec. La voce nell'arrayfluentbitConfigMapsdeve corrispondere al nome che hai assegnato in precedenza all'oggetto ConfigMap nel passaggio 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:Per applicare le modifiche alla risorsa personalizzata
ObservabilityPipeline, salva ed esci dall'editor della riga di comando.
Il completamento di questi passaggi avvia l'implementazione delle modifiche e riavvia il DaemonSet anthos-log-forwarder.