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:
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.
Gunakan alat open source seperti Prometheus, Grafana, dan Elasticsearch. Topik ini tidak menjelaskan solusi ini.
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
, danprometheus.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
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
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
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:
Beralih ke direktori dengan konfigurasi GKE di AWS. Anda membuat direktori ini saat Menginstal layanan pengelolaan.
cd anthos-aws
Untuk membuka tunnel, jalankan skrip
bastion-tunnel.sh
. Tunnel meneruskan kelocalhost: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.
Buka terminal baru dan ubah ke direktori
anthos-aws
Anda.cd anthos-aws
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
ataufalse
, apakah Cloud Logging diaktifkan di node bidang kontrol.ENABLE_MONITORING
:true
ataufalse
, 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.
Dari direktori
anthos-samples/aws-logging-monitoring/
, ubah ke direktorilogging/
.cd logging/
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
.
(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.
Dari direktori
anthos-aws
, gunakananthos-gke
untuk beralih konteks ke cluster pengguna Anda. Ganti CLUSTER_NAME dengan nama cluster pengguna Anda.cd anthos-aws env HTTPS_PROXY=http://localhost:8118 \ anthos-gke aws clusters get-credentials CLUSTER_NAME
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
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.
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
Untuk memverifikasi bahwa Anda dapat melihat log dari cluster di dasbor Cloud Logging, buka Logs Explorer di konsol: Google Cloud
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.
Klik Run query. Anda akan melihat log cluster terbaru muncul di bagian Hasil kueri.
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.
Dari direktori
anthos-samples/aws-logging-monitoring/logging/
, ubah ke direktorianthos-samples/aws-logging-monitoring/monitoring/
.cd ../monitoring
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
.
(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.
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
Gunakan alat
kubectl
untuk memverifikasi bahwa Podgke-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
Untuk memverifikasi bahwa metrik cluster Anda diekspor ke Cloud Monitoring, buka Metrics Explorer di konsol: Google Cloud
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
.
Klik Run query. Kecepatan titik metrik yang dikirim ke Cloud Monitoring dari setiap pod
gke-metrics-agent
di cluster Anda akan muncul.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.
Dari direktori
anthos-samples/aws-logging-monitoring/monitoring/
, ubah ke direktorianthos-samples/aws-logging-monitoring/monitoring/dashboards
.cd dashboards
Ganti semua kemunculan string
CLUSTER_NAME
dipod-status.json
dengan nama cluster Anda.sed -i "s/CLUSTER_NAME/CLUSTER_NAME/g" pod-status.json
Ganti
CLUSTER_NAME
dengan nama cluster Anda.Buat dasbor kustom dengan file konfigurasi dengan menjalankan perintah berikut:
gcloud monitoring dashboards create --config-from-file=pod-status.json
Untuk memverifikasi bahwa dasbor Anda telah dibuat, buka Dasbor Cloud Monitoring di konsol Google Cloud .
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.
Hapus dasbor pemantauan di tampilan daftar Dasbor di konsolGoogle Cloud dengan mengklik tombol hapus yang terkait dengan nama dasbor.
Ubah ke direktori
anthos-samples/aws-logging-monitoring/
.cd anthos-samples/aws-logging-monitoring
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:
- Ringkasan Cloud Logging
- Menggunakan Logs Explorer
- Membuat kueri untuk Cloud Logging
- Membuat metrik berbasis log