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:
Deploy agen Cloud Logging dan Cloud Monitoring untuk memantau dan melihat log dari workload Anda di Konsol Google Cloud. Topik ini menjelaskan solusi ini.
Gunakan alat open source seperti Prometheus, Grafana, dan Elasticsearch. Topik ini tidak menjelaskan solusi tersebut.
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
, 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 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
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
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
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:
Beralihlah ke direktori yang memiliki konfigurasi GKE on AWS. Anda membuat direktori ini saat Menginstal layanan pengelolaan.
cd anthos-aws
Untuk membuka tunnel, jalankan skrip
bastion-tunnel.sh
. Tunnel akan mengarah 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 menutup koneksi, hentikan prosesnya menggunakan Control+C atau menutup jendela.
Buka terminal baru dan pindah 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
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
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 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.
Dari direktori
anthos-samples/aws-logging-monitoring/
, beralihlah 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 informasi selengkapnya, lihat Lokasi Global - Region & Zona — misalnya,us-central1
.
(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.
Dari direktori
anthos-aws
, gunakananthos-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.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
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.
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
Untuk memastikan bahwa Anda dapat melihat log dari cluster di dasbor Cloud Logging, buka Logs Explorer di Konsol Google Cloud:
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.
Klik Jalankan kueri. Anda akan melihat log cluster terbaru muncul di bagian Query results.
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.
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 informasi selengkapnya, lihat Lokasi Global - Region & Zona — misalnya,us-central1
.
(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.
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
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 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
Untuk memastikan bahwa metrik cluster Anda diekspor ke Cloud Monitoring, buka Metrics Explorer di Konsol Google Cloud:
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
.
Klik Jalankan kueri. Tarif titik metrik yang dikirim ke Cloud Monitoring dari setiap pod
gke-metrics-agent
di cluster Anda akan muncul.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.
Dari direktori
anthos-samples/aws-logging-monitoring/monitoring/
, ubah ke direktorianthos-samples/aws-logging-monitoring/monitoring/dashboards
.cd dashboards
Ganti instance 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 menggunakan file konfigurasi dengan menjalankan perintah berikut:
gcloud monitoring dashboards create --config-from-file=pod-status.json
Untuk memverifikasi bahwa dasbor Anda sudah 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 dalam tampilan daftar Dashboards di Konsol Google Cloud dengan mengklik tombol delete 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 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:
- Ringkasan Cloud Logging
- Menggunakan Logs Explorer
- Membuat kueri untuk Cloud Logging
- Membuat metrik berbasis log