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_NAME
Abilita l'API IAM se non è già abilitata:
gcloud services enable iam.googleapis.com
Crea 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.objectAdmin
quando 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.tgz
Imposta 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 NAMESPACE
Imposta 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 NAMESPACE
Ad 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
ConfigMap
nello spazio dei nomiobs-system
con l'etichettalogmon: system_logs
. Aggiungi la configurazione dell'output aggiuntivo nel fileoutput.conf
della 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
ConfigMap
perché 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
ConfigMap
per 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
ObservabilityPipeline
in un editor della riga di comando:kubectl --kubeconfig=ROOT_ADMIN_CLUSTER_KUBECONFIG -n obs-system edit observabilitypipelines.observability.gdc.goog default
Sostituisci ORG_ADMIN_CLUSTER_KUBECONFIG con il percorso del file kubeconfig per il cluster di amministrazione.
Nella risorsa personalizzata
ObservabilityPipeline
, aggiungi l'arrayfluentbitConfigMaps
al campoadditionalSinks
al campo di logging della sezione spec. La voce nell'arrayfluentbitConfigMaps
deve 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
ConfigMap
nello spazio dei nomiobs-system
con l'etichettalogmon: audit_logs
. Aggiungi la configurazione dell'output aggiuntivo nel fileoutput.conf
della 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
ConfigMap
perché 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
ConfigMap
per 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
ObservabilityPipeline
in un editor della riga di comando:kubectl --kubeconfig=ORG_ADMIN_CLUSTER_KUBECONFIG -n obs-system edit observabilitypipelines.observability.gdc.goog default
Sostituisci ORG_ADMIN_CLUSTER_KUBECONFIG con il percorso del file kubeconfig per il cluster di amministrazione.
Nella risorsa personalizzata
ObservabilityPipeline
, aggiungi l'arrayfluentbitConfigMaps
al campoadditionalSinks
al campo di logging della sezione spec. La voce nell'arrayfluentbitConfigMaps
deve 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
.