Ikuti petunjuk di bagian ini untuk menyiapkan server log Pusat.
Menyiapkan bucket penyimpanan
Buat bucket penyimpanan baru untuk menyimpan log appliance:
gcloud storage buckets create gs://BUCKET_NAME
Aktifkan IAM API jika belum diaktifkan:
gcloud services enable iam.googleapis.com
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
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.
Instal dan konfigurasi kubectl untuk berinteraksi dengan cluster: https://cloud.google.com/kubernetes-engine/docs/how-to/cluster-access-for-kubectl
Aktifkan Workload Identity di cluster: https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity#enable-existing-cluster
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.
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.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.
Download dan untar diagram helm Grafana dan Loki:
tar -xzf WORKING_DIR/grafana.tgz tar -xzf WORKING_DIR/loki.tgz
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
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:
Buat objek
ConfigMap
di namespaceobs-system
dengan labellogmon: system_logs
. Tambahkan konfigurasi output tambahan di fileoutput.conf
pada bagiandata
. 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
- Simpan nama yang Anda tetapkan ke objek
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.
Di resource kustom
ObservabilityPipeline
, tambahkan arrayfluentbitConfigMaps
ke kolomadditionalSinks
ke kolom logging bagian spesifikasi. Entri dalam arrayfluentbitConfigMaps
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: - ... - ...
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:
Buat objek
ConfigMap
di namespaceobs-system
dengan labellogmon: audit_logs
. Tambahkan konfigurasi output tambahan di fileoutput.conf
bagiandata
. 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
- Simpan nama yang Anda tetapkan ke objek
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.
Di resource kustom
ObservabilityPipeline
, tambahkan arrayfluentbitConfigMaps
ke kolomadditionalSinks
ke kolom logging bagian spesifikasi. Entri dalam arrayfluentbitConfigMaps
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:
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.