Folgen Sie der Anleitung in diesem Abschnitt, um Ihren Central-Protokollserver einzurichten.
Storage-Bucket einrichten
Erstellen Sie einen neuen Storage-Bucket zum Speichern der Appliance-Logs:
gcloud storage buckets create gs://BUCKET_NAME
Aktivieren Sie die IAM API, falls sie noch nicht aktiviert ist:
gcloud services enable iam.googleapis.com
Erstellen Sie ein Dienstkonto für den Zugriff auf den Bucket:
gcloud iam service-accounts create GSA_NAME --description="DESCRIPTION" --display-name="DISPLAY_NAME"
Daten aus GDC in einen Speicher-Bucket übertragen
Daten übertragen, um die Daten in Speicher-Buckets zu exportieren.
Grafana- und Loki-Helm-Diagramme von der GDC-Air-Gap-Appliance auf einen lokalen Computer kopieren
Auf dem Bootstrapper der GDC-Appliance mit Air Gap befinden sich die Helm-Diagramme für Grafana und Loki in RELEASE_DIR/appliance/observability
. Kopieren Sie sie auf den lokalen Computer, auf dem Sie diese Einrichtung ausführen:
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
Grafana und Loki in einem GKE-Cluster einrichten
Erstellen Sie einen neuen GKE-Cluster: https://cloud.google.com/sdk/gcloud/reference/container/clusters/create. Wenn Sie einen vorhandenen Cluster für diese Einrichtung verwenden, fahren Sie mit dem nächsten Schritt fort.
Installieren und konfigurieren Sie kubectl, um mit dem Cluster zu interagieren: https://cloud.google.com/kubernetes-engine/docs/how-to/cluster-access-for-kubectl
Aktivieren Sie Workload Identity für den Cluster: https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity#enable-existing-cluster
Folgen Sie der Anleitung unter https://cloud.google.com/kubernetes-engine/docs/how-to/persistent-volumes/cloud-storage-fuse-csi-driver#enable, um den CSI-Treiber für Cloud Storage FUSE in Ihrem GKE-Cluster zu aktivieren.
Folgen Sie der Anleitung unter https://cloud.google.com/kubernetes-engine/docs/how-to/persistent-volumes/cloud-storage-fuse-csi-driver#authentication, um den Zugriff auf Cloud Storage-Buckets mit GKE Workload Identity Federation for GKE zu konfigurieren. Wählen Sie
roles/storage.objectAdmin
aus, wenn Sie die IAM-Richtlinienbindung in Schritt 5 einrichten.Folgen Sie der Anleitung unter https://cloud.google.com/artifact-registry/docs/repositories/remote-repo, um ein Artifact Registry-Remote-Repository zu erstellen, das als Proxy für Dockerhub dient, die externe Registry, die die von den Helm-Charts für Grafana und Loki verwendeten Container-Images enthält.
Laden Sie die Helm-Diagramme für Grafana und Loki herunter und entpacken Sie sie:
tar -xzf WORKING_DIR/grafana.tgz tar -xzf WORKING_DIR/loki.tgz
Legen Sie die Werte für das Loki-Helm-Diagramm in WORKING_DIR/loki/values.yaml.in fest und installieren Sie das Helm-Diagramm im Cluster:
helm install LOKI_RELEASE_NAME WORKING_DIR/loki --namespace NAMESPACE
Legen Sie die Werte für das Grafana-Helm-Diagramm in WORKING_DIR/grafana/values.yaml.in fest und installieren Sie das Helm-Diagramm im Cluster:
helm install GRAFANA_RELEASE_NAME WORKING_DIR/grafana --namespace NAMESPACE
Beispiel:
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
Auf die Grafana-Benutzeroberfläche zugreifen
Rufen Sie die Grafana-Benutzeroberfläche auf, indem Sie die Portweiterleitung zwischen Ihrem Computer und dem Grafana-Dienst aus dem Kubernetes-Cluster einrichten:
kubectl port-forward service/GRAFANA_APP_NAME
-n NAMESPACE 3000:3000
Nachdem Sie den vorherigen Befehl ausgeführt haben, können Sie auf die Grafana-Benutzeroberfläche zugreifen. Wenn Sie die Grafana-Benutzeroberfläche für mehrere Nutzer in Ihrer Organisation verfügbar machen müssen, sollten Sie GKE Ingress einrichten: https://cloud.google.com/kubernetes-engine/docs/tutorials/http-balancer.
Logs in externen Speicher exportieren
Standardmäßig werden in der Loki-Instanz, die in einem Cluster ausgeführt wird, alle Logs zusammengefasst und gespeichert. Sie können jedoch eine zusätzliche Fluent Bit-Ausgabe konfigurieren, um Logs an andere Ziele als diese Loki-Instanz im Administrator-Stammcluster zu exportieren.
Dieser Abschnitt enthält die Schritte zum Konfigurieren eines zusätzlichen Senken, um Logs an externen Speicher weiterzuleiten und zu exportieren. Sie enthält Anleitungen für die folgenden Protokolltypen entsprechend Ihrem Anwendungsfall:
Eine vollständige Liste der unterstützten Fluent Bit-Ziele finden Sie unter https://docs.fluentbit.io/manual/pipeline/outputs.
Betriebsprotokolle exportieren
Führen Sie die folgenden Schritte aus, um Betriebslogs in einen externen Speicher zu exportieren:
Erstellen Sie ein
ConfigMap
-Objekt im Namespaceobs-system
mit dem Labellogmon: system_logs
. Fügen Sie die zusätzliche Ausgabekonfiguration in der Dateioutput.conf
im Abschnittdata
hinzu. Sie muss dieselbe Syntax wie die Fluent Bit-Ausgabe-Plug-ins haben.Achten Sie beim Erstellen des
ConfigMap
-Objekts darauf, dass die folgenden Anforderungen erfüllt sind:- Merken Sie sich den Namen, den Sie dem
ConfigMap
-Objekt zuweisen, da er mit einem Wert übereinstimmen muss, der in einem späteren Schritt angegeben wird. - Fügen Sie die benutzerdefinierten Fluent Bit-Ausgabe-Plug-in-Konfigurationen im Abschnitt Output block des Objekts hinzu.
Die folgende YAML-Datei zeigt eine Vorlage des
ConfigMap
-Objekts, um die vorherigen Anforderungen zu veranschaulichen.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
- Merken Sie sich den Namen, den Sie dem
Öffnen Sie die benutzerdefinierte
ObservabilityPipeline
-Ressource in einem Befehlszeileneditor:kubectl --kubeconfig=ROOT_ADMIN_CLUSTER_KUBECONFIG -n obs-system edit observabilitypipelines.observability.gdc.goog default
Ersetzen Sie dabei ORG_ADMIN_CLUSTER_KUBECONFIG durch den Pfad der kubeconfig-Datei für den Administratorcluster.
Fügen Sie in der benutzerdefinierten Ressource
ObservabilityPipeline
das ArrayfluentbitConfigMaps
dem FeldadditionalSinks
im Logging-Feld des Spec-Abschnitts hinzu. Der Eintrag imfluentbitConfigMaps
-Array muss mit dem Namen übereinstimmen, den Sie dem ConfigMap-Objekt in Schritt 1 zugewiesen haben.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: - ... - ...
Um die Änderungen an der benutzerdefinierten Ressource
ObservabilityPipeline
zu übernehmen, speichern Sie im Befehlszeileneditor und beenden Sie ihn.
Wenn Sie diese Schritte ausführen, wird ein Roll-out Ihrer Änderungen gestartet und das anthos-log-forwarder
-DaemonSet wird neu gestartet.
Audit-Logs exportieren
Führen Sie die folgenden Schritte aus, um Audit-Logs in externen Speicher zu exportieren:
Erstellen Sie ein
ConfigMap
-Objekt im Namespaceobs-system
mit dem Labellogmon: audit_logs
. Fügen Sie die zusätzliche Ausgabekonfiguration in der Dateioutput.conf
im Abschnittdata
hinzu. Sie muss dieselbe Syntax wie die Fluent Bit-Ausgabe-Plug-ins haben.Achten Sie beim Erstellen des
ConfigMap
-Objekts darauf, dass die folgenden Anforderungen erfüllt sind:- Merken Sie sich den Namen, den Sie dem
ConfigMap
-Objekt zuweisen, da er mit einem Wert übereinstimmen muss, der in einem späteren Schritt angegeben wird. - Fügen Sie die benutzerdefinierten Fluent Bit-Ausgabe-Plug-in-Konfigurationen im Abschnitt Output block des Objekts hinzu.
Die folgende YAML-Datei zeigt eine Vorlage des
ConfigMap
-Objekts, um die vorherigen Anforderungen zu veranschaulichen.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
- Merken Sie sich den Namen, den Sie dem
Öffnen Sie die benutzerdefinierte
ObservabilityPipeline
-Ressource in einem Befehlszeileneditor:kubectl --kubeconfig=ORG_ADMIN_CLUSTER_KUBECONFIG -n obs-system edit observabilitypipelines.observability.gdc.goog default
Ersetzen Sie dabei ORG_ADMIN_CLUSTER_KUBECONFIG durch den Pfad der kubeconfig-Datei für den Administratorcluster.
Fügen Sie in der benutzerdefinierten Ressource
ObservabilityPipeline
das ArrayfluentbitConfigMaps
dem FeldadditionalSinks
im Logging-Feld des Spec-Abschnitts hinzu. Der Eintrag imfluentbitConfigMaps
-Array muss mit dem Namen übereinstimmen, den Sie dem ConfigMap-Objekt in Schritt 1 zugewiesen haben.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:
Um die Änderungen an der benutzerdefinierten Ressource
ObservabilityPipeline
zu übernehmen, speichern Sie im Befehlszeileneditor und beenden Sie ihn.
Wenn Sie diese Schritte ausführen, wird ein Roll-out Ihrer Änderungen gestartet und das anthos-log-forwarder
-DaemonSet wird neu gestartet.