Logging dan pemantauan untuk GKE di AWS

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

Ringkasan

Ada beberapa opsi untuk logging dan pemantauan 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 alat 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 workload 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 tersebut.

  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 agar dapat mengumpulkan log dan metrik ke dalam project Google Cloud Anda. Jika Anda tidak mengonfigurasi agen ini, GKE di AWS tidak akan mengumpulkan logging atau pemantauan data.

Data yang dikumpulkan

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

Data yang dikumpulkan meliputi:

  • Log untuk layanan sistem di setiap worker node.
  • Log aplikasi untuk semua workload yang berjalan di cluster.
  • Metrik untuk layanan cluster dan sistem. Untuk informasi selengkapnya tentang metrik tertentu, lihat metrik GKE Enterprise.
  • Jika aplikasi Anda dikonfigurasi dengan target scrape Prometheus, dan dianotasi dengan konfigurasi seperti 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 jenis.

Komponen logging dan pemantauan

Untuk mengekspor telemetri tingkat cluster dari GKE pada AWS ke Google Cloud, Anda harus men-deploy komponen berikut ke dalam cluster:

  • Stackdriver Log Forwarder (stackdriver-log-forwarder-*). DaemonSet Fluentbit, yang meneruskan log dari setiap node Kubernetes ke Cloud Logging.
  • Agen Metrik GKE (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 untuk Kemampuan Observasi Google Cloud.

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

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

    gcloud container fleet memberships list
    

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

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

    Jika cluster Anda tidak tercantum dalam daftar, lihat bagian Menghubungkan ke cluster dengan Connect

  3. Instal alat command line git di komputer Anda.

Menyiapkan izin untuk Kemampuan Observasi Google Cloud

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 project Google Cloud Anda.

Menghubungkan ke bastion host

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

VPC yang ada

Jika Anda memiliki koneksi langsung atau VPN ke VPC yang sudah 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. Beralihlah ke direktori yang memiliki konfigurasi GKE on AWS. Anda membuat direktori ini saat Menginstal layanan pengelolaan.

    cd anthos-aws

  2. Untuk membuka tunnel, jalankan skrip bastion-tunnel.sh. Tunnel akan mengarah 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 menutup koneksi, hentikan prosesnya menggunakan Control+C atau menutup jendela.

  3. Buka terminal baru dan pindah 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
    

    Outputnya mencakup URL untuk server API layanan pengelolaan.

Cloud Logging dan Cloud Monitoring pada node bidang kontrol

Dengan GKE pada AWS 1.8.0 dan yang lebih baru, 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, isi 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 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 dalam Membuat cluster pengguna kustom .

Cloud Logging dan Cloud Monitoring pada worker node

Menghapus versi sebelumnya

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

Menginstal penerusan logging

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

  1. Dari direktori anthos-samples/aws-logging-monitoring/, beralihlah 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 informasi selengkapnya, lihat Lokasi Global - Region & Zona — misalnya, us-central1.
  3. (Opsional) Berdasarkan beban kerja, jumlah node dalam cluster, dan jumlah pod per node, Anda mungkin harus menetapkan permintaan memori dan resource CPU. Untuk mengetahui informasi selengkapnya, lihat Alokasi CPU dan memori yang direkomendasikan.

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

    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 tidak ada dan deploy penerus 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 forwarder per node dalam sebuah kumpulan node. Misalnya, dalam klaster 6 node, Anda akan melihat enam pod forwarder.

    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 apakah log ada di Cloud Logging.

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

  1. Men-deploy server web dan memuat generator 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 memastikan 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 ini ke kolom Query builder.

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

    Ganti CLUSTER_NAME dengan nama cluster Anda.

  4. Klik Jalankan kueri. Anda akan melihat log cluster terbaru muncul di bagian Query results.

    Log cluster di Kemampuan Observabilitas Google Cloud

  5. Setelah memastikan 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 kolektor 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 informasi selengkapnya, lihat Lokasi Global - Region & Zona — misalnya, us-central1.
  3. (Opsional) Berdasarkan beban kerja, jumlah node dalam cluster, dan jumlah pod per node, Anda mungkin harus menetapkan permintaan memori dan resource CPU. Untuk mengetahui informasi selengkapnya, lihat Alokasi CPU dan memori yang direkomendasikan.

  4. Buat akun layanan stackdriver jika tidak 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 dalam satu kumpulan node. Misalnya, dalam 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 memastikan 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 dalam 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 Jalankan kueri. Tarif 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 patut dicoba adalah, 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 container di cluster.

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

    cd dashboards
    
  2. Ganti instance 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 menggunakan file konfigurasi dengan menjalankan perintah berikut:

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

    Buka Dashboards

    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 dalam tampilan daftar Dashboards di Konsol Google Cloud dengan mengklik tombol delete 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 dapat menetapkan permintaan resource untuk komponen dalam file yang tercantum di tabel.

Untuk mengetahui informasi selengkapnya, baca praktik terbaik Kubernetes: Permintaan dan batas resource serta 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 50 Juta 500 Miliar
logging/forwarder.yaml stackdriver-log-forwarder 50 mnt 100m 100 Miliar 600 Miliar

10-100 Node

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

Lebih dari 100 node

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

Apa langkah selanjutnya?

Pelajari Cloud Logging:

Pelajari Cloud Monitoring: