Menyiapkan server log Pusat

Ikuti petunjuk di bagian ini untuk menyiapkan server log Pusat.

Menyiapkan bucket penyimpanan

  1. Buat bucket penyimpanan baru untuk menyimpan log appliance:

    gcloud storage buckets create gs://BUCKET_NAME
    
  2. Aktifkan IAM API jika belum diaktifkan:

    gcloud services enable iam.googleapis.com
    
  3. Buat akun layanan untuk mengakses bucket:

    gcloud iam service-accounts create GSA_NAME --description="DESCRIPTION" --display-name="DISPLAY_NAME"
    

Mentransfer data dari GDC ke bucket penyimpanan

Transfer data untuk mengekspor data ke bucket penyimpanan.

Menyalin Diagram Helm Grafana dan Loki dari perangkat air-gapped GDC ke komputer lokal

Di bootstrapper appliance GDC dengan air gap, diagram helm untuk Grafana dan Loki berada di RELEASE_DIR/appliance/observability. Salin ke komputer lokal tempat Anda menjalankan penyiapan ini:

    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

Menyiapkan Grafana dan Loki di cluster GKE

  1. Buat cluster GKE baru: https://cloud.google.com/sdk/gcloud/reference/container/clusters/create. Jika menggunakan cluster yang sudah ada untuk penyiapan ini, lanjutkan ke langkah berikutnya.

  2. Instal dan konfigurasi kubectl untuk berinteraksi dengan cluster: https://cloud.google.com/kubernetes-engine/docs/how-to/cluster-access-for-kubectl

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

  4. Ikuti https://cloud.google.com/kubernetes-engine/docs/how-to/persistent-volumes/cloud-storage-fuse-csi-driver#enable untuk mengaktifkan driver CSI Cloud Storage FUSE di cluster GKE Anda.

  5. Ikuti https://cloud.google.com/kubernetes-engine/docs/how-to/persistent-volumes/cloud-storage-fuse-csi-driver#authentication untuk mengonfigurasi akses ke bucket Cloud Storage menggunakan GKE Workload Identity Federation untuk GKE. Pilih roles/storage.objectAdmin saat menyiapkan binding kebijakan IAM di langkah 5.

  6. Ikuti https://cloud.google.com/artifact-registry/docs/repositories/remote-repo untuk membuat repositori jarak jauh Artifact Registry yang akan bertindak sebagai proxy untuk Dockerhub, yaitu registry eksternal yang berisi image container yang digunakan oleh diagram helm Grafana dan Loki.

  7. Download dan untar diagram helm Grafana dan Loki:

     tar -xzf WORKING_DIR/grafana.tgz
     tar -xzf WORKING_DIR/loki.tgz
    
  8. Tetapkan nilai diagram helm Loki di WORKING_DIR/loki/values.yaml.in dan instal diagram helm di cluster:

    helm install LOKI_RELEASE_NAME WORKING_DIR/loki --namespace NAMESPACE
    
  9. Tetapkan nilai diagram helm Grafana di WORKING_DIR/grafana/values.yaml.in dan instal diagram helm di cluster:

    helm install GRAFANA_RELEASE_NAME WORKING_DIR/grafana --namespace NAMESPACE
    

    Contoh:

      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 
    

Mengakses UI Grafana

Akses UI Grafana dengan menyiapkan penerusan port antara komputer dan layanan Grafana dari cluster Kubernetes:

kubectl port-forward service/GRAFANA_APP_NAME
-n NAMESPACE 3000:3000

Setelah menjalankan perintah sebelumnya, Anda dapat mengakses UI Grafana. Jika Anda perlu mengekspos UI Grafana kepada beberapa pengguna di organisasi Anda, pertimbangkan untuk menyiapkan GKE Ingress: https://cloud.google.com/kubernetes-engine/docs/tutorials/http-balancer

Mengekspor log ke penyimpanan eksternal

Secara default, instance Loki yang berjalan dalam cluster menggabungkan dan menyimpan semua log. Namun, Anda dapat mengonfigurasi output Fluent Bit tambahan untuk mengekspor log ke tujuan lain selain instance Loki tersebut di cluster admin root.

Bagian ini berisi langkah-langkah untuk mengonfigurasi sink tambahan guna merutekan dan mengekspor log ke penyimpanan eksternal. Bagian ini memberikan petunjuk untuk jenis log berikut sesuai dengan kasus penggunaan Anda:

Untuk mengetahui daftar lengkap tujuan Fluent Bit yang didukung, lihat https://docs.fluentbit.io/manual/pipeline/outputs.

Mengekspor log operasional

Lakukan langkah-langkah berikut untuk mengekspor log operasional ke penyimpanan eksternal:

  1. Buat objek ConfigMap di namespace obs-system dengan label logmon: system_logs. Tambahkan konfigurasi output tambahan di file output.conf pada bagian data. Plugin ini harus memiliki sintaksis yang sama dengan plugin output Fluent Bit.

    Saat membuat objek ConfigMap, pastikan Anda memenuhi persyaratan berikut:

    • Simpan nama yang Anda tetapkan ke objek ConfigMap karena harus cocok dengan nilai yang ditentukan pada langkah berikutnya.
    • Tambahkan konfigurasi plugin output Fluent Bit yang disesuaikan di bagian Output block objek.

    File YAML berikut menampilkan template objek ConfigMap untuk menggambarkan persyaratan sebelumnya.

    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. Buka resource kustom ObservabilityPipeline di editor command line:

    kubectl --kubeconfig=ROOT_ADMIN_CLUSTER_KUBECONFIG -n obs-system edit observabilitypipelines.observability.gdc.goog default
    

    Ganti ORG_ADMIN_CLUSTER_KUBECONFIG dengan jalur file kubeconfig untuk cluster admin.

  3. Di resource kustom ObservabilityPipeline, tambahkan array fluentbitConfigMaps ke kolom additionalSinks ke kolom logging bagian spesifikasi. Entri dalam array fluentbitConfigMaps harus cocok dengan nama yang sebelumnya Anda tetapkan ke objek ConfigMap pada langkah 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. Untuk menerapkan perubahan pada resource kustom ObservabilityPipeline, simpan dan keluar dari editor command line.

Dengan menyelesaikan langkah-langkah ini, perubahan Anda akan diluncurkan dan DaemonSet anthos-log-forwarder akan dimulai ulang.

Mengekspor log audit

Ikuti langkah-langkah berikut untuk mengekspor log audit ke penyimpanan eksternal:

  1. Buat objek ConfigMap di namespace obs-system dengan label logmon: audit_logs. Tambahkan konfigurasi output tambahan di file output.conf bagian data. Plugin ini harus memiliki sintaksis yang sama dengan plugin output Fluent Bit.

    Saat membuat objek ConfigMap, pastikan Anda memenuhi persyaratan berikut:

    • Simpan nama yang Anda tetapkan ke objek ConfigMap karena harus cocok dengan nilai yang ditentukan pada langkah berikutnya.
    • Tambahkan konfigurasi plugin output Fluent Bit yang disesuaikan di bagian Output block objek.

    File YAML berikut menampilkan template objek ConfigMap untuk menggambarkan persyaratan sebelumnya.

    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. Buka resource kustom ObservabilityPipeline di editor command line:

    kubectl --kubeconfig=ORG_ADMIN_CLUSTER_KUBECONFIG -n obs-system edit observabilitypipelines.observability.gdc.goog default
    

    Ganti ORG_ADMIN_CLUSTER_KUBECONFIG dengan jalur file kubeconfig untuk cluster admin.

  3. Di resource kustom ObservabilityPipeline, tambahkan array fluentbitConfigMaps ke kolom additionalSinks ke kolom logging bagian spesifikasi. Entri dalam array fluentbitConfigMaps harus cocok dengan nama yang sebelumnya Anda tetapkan ke objek ConfigMap pada langkah 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. Untuk menerapkan perubahan pada resource kustom ObservabilityPipeline, simpan dan keluar dari editor command line.

Dengan menyelesaikan langkah-langkah ini, perubahan Anda akan diluncurkan dan DaemonSet anthos-log-forwarder akan dimulai ulang.