Logging dan pemantauan untuk GKE di AWS

Topik ini menunjukkan cara mengekspor log dan metrik dari cluster pengguna GKE di AWS ke Cloud Logging dan Cloud Monitoring.

Ringkasan

Ada beberapa opsi untuk mencatat dan memantau dengan GKE di AWS. GKE Enterprise dapat diintegrasikan dengan Cloud Logging dan Cloud Monitoring. Karena GKE Enterprise didasarkan pada Kubernetes open source, banyak alat open source dan pihak ketiga yang kompatibel.

Opsi logging dan pemantauan

Anda memiliki beberapa opsi logging dan pemantauan untuk cluster GKE Enterprise:

  1. Deploy agen Cloud Logging dan Cloud Monitoring untuk memantau dan melihat log dari beban kerja Anda di konsol Google Cloud . Topik ini menjelaskan solusi ini.

  2. Gunakan alat open source seperti Prometheus, Grafana, dan Elasticsearch. Topik ini tidak menjelaskan solusi ini.

  3. Gunakan solusi pihak ketiga seperti Datadog. Topik ini tidak menjelaskan solusi ini.

Cloud Logging dan Cloud Monitoring

Dengan GKE Enterprise, Cloud Logging, dan Cloud Monitoring, Anda dapat membuat dasbor, mengirim pemberitahuan, memantau, dan meninjau log untuk workload yang berjalan di cluster Anda. Anda harus mengonfigurasi agen Cloud Logging dan Cloud Monitoring untuk mengumpulkan log dan metrik ke project Google CloudAnda. Jika Anda tidak mengonfigurasi agen ini, GKE di AWS tidak akan mengumpulkan data logging atau pemantauan.

Data yang dikumpulkan

Jika dikonfigurasi, agen akan mengumpulkan data log dan metrik dari cluster Anda dan workload yang berjalan di cluster Anda. Data ini disimpan di projectGoogle Cloud Anda. Anda mengonfigurasi project ID di kolom project_id dalam file konfigurasi saat Anda menginstal penerus log.

Data yang dikumpulkan mencakup hal-hal berikut:

  • Log untuk layanan sistem di setiap worker node.
  • Log aplikasi untuk semua workload yang berjalan di cluster.
  • Metrik untuk cluster dan layanan sistem. Untuk mengetahui informasi selengkapnya tentang metrik tertentu, lihat Metrik GKE Enterprise.
  • Jika aplikasi Anda dikonfigurasi dengan target scrape Prometheus, dan diberi anotasi dengan konfigurasi yang mencakup prometheus.io/scrape, prometheus.io/path, dan prometheus.io/port, metrik aplikasi untuk Pod.

Agen dapat dinonaktifkan kapan saja. Untuk informasi selengkapnya, lihat Pembersihan. Data yang dikumpulkan oleh agen dapat dikelola dan dihapus seperti data log dan metrik lainnya, seperti yang dijelaskan dalam dokumentasi Cloud Monitoring dan Cloud Logging.

Data log disimpan sesuai dengan aturan retensi yang dikonfigurasi. Retensi data metrik bervariasi berdasarkan jenisnya.

Komponen logging dan pemantauan

Untuk mengekspor telemetri tingkat cluster dari GKE di AWS keGoogle Cloud, Anda men-deploy komponen berikut ke cluster Anda:

  • Stackdriver Log Forwarder (stackdriver-log-forwarder-*). DaemonSet Fluentbit yang meneruskan log dari setiap node Kubernetes ke Cloud Logging.
  • GKE Metrics Agent (gke-metrics-agent-*). DaemonSet berbasis OpenTelemetry Collector yang mengumpulkan data metrik dan meneruskannya ke Cloud Monitoring.

Manifes untuk komponen ini ada di repositori anthos-samples di GitHub.

Prasyarat

  1. Project Google Cloud dengan penagihan diaktifkan. Untuk mengetahui informasi selengkapnya tentang biaya, lihat Harga Google Cloud Observability.

    Project juga harus mengaktifkan Cloud Logging API dan Cloud Monitoring API. Untuk mengaktifkan API ini, jalankan perintah berikut:

    gcloud services enable logging.googleapis.com
    gcloud services enable monitoring.googleapis.com
    
  2. Lingkungan GKE di AWS, termasuk cluster pengguna yang terdaftar di Connect. Jalankan perintah berikut untuk memverifikasi bahwa cluster Anda terdaftar.

    gcloud container fleet memberships list
    

    Jika cluster Anda terdaftar, Google Cloud CLI akan mencetak nama dan ID cluster.

    NAME       EXTERNAL_ID
    cluster-0  1abcdef-1234-4266-90ab-123456abcdef
    

    Jika Anda tidak melihat cluster Anda tercantum, lihat Menghubungkan ke cluster dengan Connect

  3. Instal alat command line git di mesin Anda.

Menyiapkan izin untuk Google Cloud Observability

Agen logging dan pemantauan menggunakan Fleet Workload Identity untuk berkomunikasi dengan Cloud Logging dan Cloud Monitoring. Identitas memerlukan izin untuk menulis log dan metrik di project Anda. Untuk menambahkan izin, jalankan perintah berikut:

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="serviceAccount:PROJECT_ID.svc.id.goog[kube-system/stackdriver]" \
  --role=roles/logging.logWriter
gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="serviceAccount:PROJECT_ID.svc.id.goog[kube-system/stackdriver]" \
  --role=roles/monitoring.metricWriter

Ganti PROJECT_ID dengan Google Cloud project Anda.

Menghubungkan ke bastion host

Untuk terhubung ke resource GKE di AWS, lakukan langkah-langkah berikut. Pilih apakah Anda memiliki VPC AWS yang sudah ada (atau koneksi langsung ke VPC Anda) atau membuat VPC khusus saat membuat layanan pengelolaan.

VPC yang ada

Jika Anda memiliki koneksi langsung atau VPN ke VPC yang ada, hapus baris env HTTP_PROXY=http://localhost:8118 dari perintah dalam topik ini.

VPC Khusus

Saat Anda membuat layanan pengelolaan di VPC khusus, GKE di AWS menyertakan host bastion di subnet publik.

Untuk terhubung ke layanan pengelolaan, lakukan langkah-langkah berikut:

  1. Beralih ke direktori dengan konfigurasi GKE di AWS. Anda membuat direktori ini saat Menginstal layanan pengelolaan.

    cd anthos-aws

  2. Untuk membuka tunnel, jalankan skrip bastion-tunnel.sh. Tunnel meneruskan ke localhost:8118.

    Untuk membuka tunnel ke bastion host, jalankan perintah berikut:

    ./bastion-tunnel.sh -N
    

    Pesan dari tunnel SSH akan muncul di jendela ini. Saat Anda siap untuk menutup koneksi, hentikan proses dengan menggunakan Control+C atau menutup jendela.

  3. Buka terminal baru dan ubah ke direktori anthos-aws Anda.

    cd anthos-aws
  4. Pastikan Anda dapat terhubung ke cluster dengan kubectl.

    env HTTPS_PROXY=http://localhost:8118 \
    kubectl cluster-info
    

    Output-nya mencakup URL untuk server API layanan pengelolaan.

Cloud Logging dan Cloud Monitoring di node bidang kontrol

Dengan GKE di AWS 1.8.0 dan yang lebih tinggi, Cloud Logging dan Cloud Monitoring untuk node bidang kontrol dapat dikonfigurasi secara otomatis saat membuat cluster pengguna baru. Untuk mengaktifkan Cloud Logging atau Cloud Monitoring, Anda mengisi bagian controlPlane.cloudOperations dari konfigurasi AWSCluster Anda.

cloudOperations:
  projectID: PROJECT_ID
  location: GC_REGION
  enableLogging: ENABLE_LOGGING
  enableMonitoring: ENABLE_MONITORING

Ganti kode berikut:

  • PROJECT_ID: project ID Anda.
  • GC_REGION: region Google Cloud tempat Anda ingin menyimpan log. Pilih region yang dekat dengan region AWS. Untuk mengetahui informasi selengkapnya, lihat Lokasi Global - Region & Zona — misalnya, us-central1.
  • ENABLE_LOGGING: true atau false, apakah Cloud Logging diaktifkan di node bidang kontrol.
  • ENABLE_MONITORING: true atau false, apakah Cloud Monitoring diaktifkan di node bidang kontrol.

Selanjutnya, ikuti langkah-langkah di Membuat cluster pengguna kustom .

Cloud Logging dan Cloud Monitoring di node pekerja

Menghapus versi sebelumnya

Jika Anda telah menyiapkan agen logging dan pemantauan versi sebelumnya yang mencakup stackdriver-log-aggregator (Fluentd) dan stackdriver-prometheus-k8s (Prometheus), sebaiknya uninstal agen tersebut terlebih dahulu sebelum melanjutkan.

Menginstal penerusan logging

Di bagian ini, Anda akan menginstal Stackdriver Log Forwarder ke cluster Anda.

  1. Dari direktori anthos-samples/aws-logging-monitoring/, ubah ke direktori logging/.

    cd logging/
    
  2. Ubah file forwarder.yaml agar sesuai dengan konfigurasi project Anda:

    sed -i "s/PROJECT_ID/PROJECT_ID/g" forwarder.yaml
    sed -i "s/CLUSTER_NAME/CLUSTER_NAME/g" forwarder.yaml
    sed -i "s/CLUSTER_LOCATION/GC_REGION/g" forwarder.yaml
    

    Ganti kode berikut:

    • PROJECT_ID: project ID Anda.
    • CLUSTER_NAME: Nama cluster Anda — misalnya, cluster-0
    • GC_REGION: region Google Cloud tempat Anda ingin menyimpan log. Pilih region yang dekat dengan region AWS. Untuk mengetahui informasi selengkapnya, lihat Lokasi Global - Region & Zona — misalnya, us-central1.
  3. (Opsional) Berdasarkan workload, jumlah node dalam cluster, dan jumlah pod per node, Anda mungkin harus menetapkan permintaan resource memori dan CPU. Untuk mengetahui informasi selengkapnya, lihat Alokasi CPU dan memori yang direkomendasikan.

  4. Dari direktori anthos-aws, gunakan anthos-gke untuk beralih konteks ke cluster pengguna Anda.

    cd anthos-aws
    env HTTPS_PROXY=http://localhost:8118 \
      anthos-gke aws clusters get-credentials CLUSTER_NAME
    Ganti CLUSTER_NAME dengan nama cluster pengguna Anda.

  5. Buat akun layanan stackdriver jika akun tersebut belum ada dan deploy penerusan log ke cluster.

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl create serviceaccount stackdriver -n kube-system
    env HTTPS_PROXY=http://localhost:8118 \
      kubectl apply -f forwarder.yaml
    
  6. Gunakan kubectl untuk memverifikasi bahwa pod telah dimulai.

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl get pods -n kube-system | grep stackdriver-log
    

    Anda akan melihat satu pod penerusan per node di node pool. Misalnya, di cluster 6 node, Anda akan melihat enam pod penerusan.

    stackdriver-log-forwarder-2vlxb              2/2     Running   0          21s
    stackdriver-log-forwarder-dwgb7              2/2     Running   0          21s
    stackdriver-log-forwarder-rfrdk              2/2     Running   0          21s
    stackdriver-log-forwarder-sqz7b              2/2     Running   0          21s
    stackdriver-log-forwarder-w4dhn              2/2     Running   0          21s
    stackdriver-log-forwarder-wrfg4              2/2     Running   0          21s
    

Menguji penerusan log

Di bagian ini, Anda akan men-deploy beban kerja yang berisi server web HTTP dasar dengan generator beban ke cluster Anda. Kemudian, Anda menguji bahwa log ada di Cloud Logging.

Sebelum menginstal beban kerja ini, Anda dapat memverifikasi manifes untuk server web dan generator beban.

  1. Deploy server web dan generator beban ke cluster Anda.

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl apply -f  https://raw.githubusercontent.com/GoogleCloudPlatform/istio-samples/master/sample-apps/helloserver/server/server.yaml
    env HTTPS_PROXY=http://localhost:8118 \
      kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/istio-samples/master/sample-apps/helloserver/loadgen/loadgen.yaml
    
  2. Untuk memverifikasi bahwa Anda dapat melihat log dari cluster di dasbor Cloud Logging, buka Logs Explorer di konsol: Google Cloud

    Buka Logs Explorer

  3. Salin contoh kueri di bawah ke kolom Query builder.

    resource.type="k8s_container" resource.labels.cluster_name="CLUSTER_NAME"
    

    Ganti CLUSTER_NAME dengan nama cluster Anda.

  4. Klik Run query. Anda akan melihat log cluster terbaru muncul di bagian Hasil kueri.

    Log cluster di Google Cloud Observability

  5. Setelah Anda mengonfirmasi bahwa log muncul di hasil kueri, hapus generator beban dan server web.

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl delete -f https://raw.githubusercontent.com/GoogleCloudPlatform/istio-samples/master/sample-apps/helloserver/loadgen/loadgen.yaml
    
    env HTTPS_PROXY=http://localhost:8118 \
      kubectl delete -f https://raw.githubusercontent.com/GoogleCloudPlatform/istio-samples/master/sample-apps/helloserver/server/server.yaml
    

Menginstal pengumpul metrik

Di bagian ini, Anda menginstal agen untuk mengirim data ke Cloud Monitoring.

  1. Dari direktori anthos-samples/aws-logging-monitoring/logging/, ubah ke direktori anthos-samples/aws-logging-monitoring/monitoring/.

    cd ../monitoring
    
  2. Ubah file gke-metrics-agent.yaml agar sesuai dengan konfigurasi project Anda:

    sed -i "s/PROJECT_ID/PROJECT_ID/g" gke-metrics-agent.yaml
    sed -i "s/CLUSTER_NAME/CLUSTER_NAME/g" gke-metrics-agent.yaml
    sed -i "s/CLUSTER_LOCATION/GC_REGION/g" gke-metrics-agent.yaml
    

    Ganti kode berikut:

    • PROJECT_ID: project ID Anda.
    • CLUSTER_NAME: Nama cluster Anda — misalnya, cluster-0
    • GC_REGION: region Google Cloud tempat Anda ingin menyimpan log. Pilih region yang dekat dengan region AWS. Untuk mengetahui informasi selengkapnya, lihat Lokasi Global - Region & Zona — misalnya, us-central1.
  3. (Opsional) Berdasarkan workload, jumlah node dalam cluster, dan jumlah pod per node, Anda mungkin harus menetapkan permintaan resource memori dan CPU. Untuk mengetahui informasi selengkapnya, lihat Alokasi CPU dan memori yang direkomendasikan.

  4. Buat akun layanan stackdriver jika akun tersebut belum ada dan deploy agen metrik ke cluster Anda.

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl create serviceaccount stackdriver -n kube-system
    env HTTPS_PROXY=http://localhost:8118 \
      kubectl apply -f gke-metrics-agent.yaml
    
  5. Gunakan alat kubectl untuk memverifikasi bahwa Pod gke-metrics-agent sedang berjalan.

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl get pods -n kube-system | grep gke-metrics-agent
    

    Anda akan melihat satu pod agen per node di node pool. Misalnya, di cluster 3 node, Anda akan melihat tiga pod agen.

    gke-metrics-agent-gjxdj                    2/2     Running   0          102s
    gke-metrics-agent-lrnzl                    2/2     Running   0          102s
    gke-metrics-agent-s6p47                    2/2     Running   0          102s
    
  6. Untuk memverifikasi bahwa metrik cluster Anda diekspor ke Cloud Monitoring, buka Metrics Explorer di konsol: Google Cloud

    Buka Metrics Explorer

  7. Di Metrics Explorer, klik Query editor, lalu salin perintah berikut:

    fetch k8s_container
    | metric 'kubernetes.io/anthos/otelcol_exporter_sent_metric_points'
    | filter
        resource.project_id == 'PROJECT_ID'
        && (resource.cluster_name =='CLUSTER_NAME')
    | align rate(1m)
    | every 1m
    

    Ganti kode berikut:

    • PROJECT_ID: project ID Anda.
    • CLUSTER_NAME: nama cluster yang Anda gunakan saat Membuat cluster pengguna— misalnya, cluster-0.
  8. Klik Run query. Kecepatan titik metrik yang dikirim ke Cloud Monitoring dari setiap pod gke-metrics-agent di cluster Anda akan muncul.

    Pemantauan untuk cluster

    Beberapa metrik lain yang layak dicoba meliputi, tetapi tidak terbatas pada:

    • kubernetes.io/anthos/container_memory_working_set_bytes: Penggunaan memori container;
    • kubernetes.io/anthos/container_cpu_usage_seconds_total: Penggunaan CPU container;
    • kubernetes.io/anthos/apiserver_aggregated_request_total: jumlah permintaan kube-apiserver, hanya tersedia jika Cloud Monitoring diaktifkan di bidang kontrol.

    Untuk mengetahui daftar lengkap Metrik yang tersedia, lihat Metrik Anthos. Untuk mengetahui informasi tentang cara menggunakan antarmuka pengguna, lihat Metrics Explorer.

Membuat Dasbor di Cloud Monitoring

Di bagian ini, Anda akan membuat dasbor Cloud Monitoring yang memantau status penampung di cluster Anda.

  1. Dari direktori anthos-samples/aws-logging-monitoring/monitoring/, ubah ke direktori anthos-samples/aws-logging-monitoring/monitoring/dashboards.

    cd dashboards
    
  2. Ganti semua kemunculan string CLUSTER_NAME di pod-status.json dengan nama cluster Anda.

    sed -i "s/CLUSTER_NAME/CLUSTER_NAME/g" pod-status.json
    

    Ganti CLUSTER_NAME dengan nama cluster Anda.

  3. Buat dasbor kustom dengan file konfigurasi dengan menjalankan perintah berikut:

    gcloud monitoring dashboards create --config-from-file=pod-status.json
    
  4. Untuk memverifikasi bahwa dasbor Anda telah dibuat, buka Dasbor Cloud Monitoring di konsol Google Cloud .

    Buka Dasbor

    Buka dasbor yang baru dibuat dengan nama dalam format CLUSTER_NAME (Anthos cluster on AWS) pod status.

Pembersihan

Di bagian ini, Anda akan menghapus komponen logging dan pemantauan dari cluster.

  1. Hapus dasbor pemantauan di tampilan daftar Dasbor di konsolGoogle Cloud dengan mengklik tombol hapus yang terkait dengan nama dasbor.

  2. Ubah ke direktori anthos-samples/aws-logging-monitoring/.

    cd anthos-samples/aws-logging-monitoring
    
  3. Untuk menghapus semua resource yang dibuat dalam panduan ini, jalankan perintah berikut:

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl delete -f logging/
    env HTTPS_PROXY=http://localhost:8118 \
      kubectl delete -f monitoring/
    

Alokasi CPU dan memori yang direkomendasikan

Bagian ini mencakup CPU dan alokasi yang direkomendasikan untuk setiap komponen yang digunakan dalam logging dan pemantauan. Setiap tabel berikut mencantumkan permintaan CPU dan memori untuk cluster dengan berbagai ukuran node. Anda menetapkan permintaan resource untuk komponen dalam file yang tercantum dalam tabel.

Untuk mengetahui informasi selengkapnya, lihat Praktik terbaik Kubernetes: Permintaan dan batas resource dan Mengelola Resource untuk Container.

1-10 Node

File Resource Permintaan CPU Batas CPU Permintaan Memori Batas Memori
monitoring/gke-metrics-agent.yaml gke-metrics-agent 30 mnt 100m 50Mi 500Mi
logging/forwarder.yaml stackdriver-log-forwarder 50m 100m 100Mi 600Mi

10-100 Node

File Resource Permintaan CPU Batas CPU Permintaan Memori Batas Memori
monitoring/gke-metrics-agent.yaml gke-metrics-agent 50m 100m 50Mi 500Mi
logging/forwarder.yaml stackdriver-log-forwarder 60m 100m 100Mi 600Mi

Lebih dari 100 node

File Resource Permintaan CPU Batas CPU Permintaan Memori Batas Memori
monitoring/gke-metrics-agent.yaml gke-metrics-agent 50m 100m 100Mi T/A
logging/forwarder.yaml stackdriver-log-forwarder 60m 100m 100Mi 600Mi

Apa langkah selanjutnya?

Mempelajari Cloud Logging:

Mempelajari Cloud Monitoring: