Google Distributed Cloud (khusus software) untuk bare metal mendukung banyak opsi untuk logging dan pemantauan cluster, termasuk layanan terkelola berbasis cloud, sumber data, dan kompatibilitas tervalidasi dengan solusi komersial pihak ketiga. Halaman ini menjelaskan opsi tersebut dan memberikan beberapa panduan dasar tentang cara memilih solusi yang tepat untuk lingkungan Anda.
Halaman ini ditujukan untuk Admin, arsitek, dan Operator yang ingin memantau kondisi aplikasi atau layanan yang di-deploy, misalnya untuk layanan kepatuhan tujuan tingkat (SLO). Untuk mempelajari lebih lanjut peran umum dan contohnya yang kami rujuk dalam konten Google Cloud, lihat Peran dan tugas pengguna GKE Enterprise yang umum.
Opsi untuk Google Distributed Cloud
Anda memiliki beberapa opsi logging dan pemantauan untuk cluster Anda:
- Cloud Logging dan Cloud Monitoring, diaktifkan secara default pada bare metal komponen sistem.
- Prometheus dan Grafana tersedia dari Cloud Marketplace.
- Konfigurasi yang divalidasi dengan solusi pihak ketiga.
Cloud Logging dan Cloud Monitoring
Kemampuan Observasi Google Cloud adalah solusi kemampuan observasi bawaan untuk Google Cloud. Cloud SQL menawarkan solusi logging yang terkelola sepenuhnya, pengumpulan, pemantauan, dasbor, dan pemberitahuan. Pemantauan Cloud Monitoring Cluster Google Distributed Cloud dengan cara yang sama seperti berbasis cloud Cluster GKE.
Cloud Logging dan Cloud Monitoring diaktifkan secara default saat Anda membuat cluster dengan akun layanan dan peran IAM yang diperlukan. Anda tidak dapat menonaktifkan Cloud Logging dan Cloud Monitoring. Untuk mengetahui informasi selengkapnya, akun layanan dan peran yang diperlukan, lihat Mengonfigurasi layanan akun Google.
Agen dapat dikonfigurasi untuk mengubah cakupan logging dan pemantauan, serta tingkat metrik yang dikumpulkan:
- Cakupan logging dan pemantauan dapat ditetapkan ke komponen sistem saja (default) atau untuk komponen dan aplikasi sistem.
- Tingkat metrik yang dikumpulkan dapat dikonfigurasi untuk kumpulan metrik yang dioptimalkan (default) atau untuk metrik lengkap.
Lihat Mengonfigurasi agen Stackdriver untuk Google Distributed Cloud pada dokumen ini untuk informasi selengkapnya.
Logging dan Monitoring menyediakan solusi kemampuan observasi berbasis cloud yang mudah dikonfigurasi dan canggih. Kami sangat rekomendasikan Logging dan Monitoring saat menjalankan workload di Google Distributed Cloud. Untuk aplikasi dengan komponen yang berjalan di Google Distributed Cloud dan infrastruktur lokal standar, Anda dapat mempertimbangkan solusi lain untuk memberikan gambaran menyeluruh tentang aplikasi tersebut.
Untuk mengetahui detail tentang arsitektur, konfigurasi, dan data yang direplikasi ke project Google Cloud Anda secara default, lihat Cara Logging dan Monitoring untuk pekerjaan Google Distributed Cloud.
Untuk informasi selengkapnya tentang Logging, lihat Cloud Logging dokumentasi layanan.
Untuk informasi selengkapnya tentang Monitoring, lihat Cloud Monitoring dokumentasi layanan.
Untuk mempelajari cara melihat dan menggunakan pemanfaatan resource Cloud Monitoring Google Distributed Cloud di tingkat fleet. Lihat Menggunakan Edisi Google Kubernetes Engine (GKE) Enterprise ringkasan.
Prometheus dan Grafana
Prometheus dan Grafana adalah dua produk pemantauan {i>open source<i} populer yang tersedia di Cloud Marketplace:
Prometheus mengumpulkan metrik aplikasi dan sistem.
Pengelola pemberitahuan menangani pengiriman peringatan dengan beberapa mekanisme peringatan yang berbeda.
Grafana adalah dasbor menyediakan alat command line gcloud.
Sebaiknya Anda menggunakan Google Cloud Managed Service for Prometheus, yang didasarkan di Cloud Monitoring, untuk semua kebutuhan pemantauan Anda. Dengan Google Cloud Managed Service for Prometheus, Anda dapat memantau sistem komponen tanpa biaya. Google Cloud Managed Service for Prometheus juga kompatibel dengan Grafana. Namun, jika Anda lebih menyukai sistem pemantauan lokal murni, Anda dapat memilih untuk menginstal Prometheus dan Grafana di klaster Anda.
Jika Anda menginstal Prometheus secara lokal dan ingin mengumpulkan metrik dari sistem Anda perlu memberikan izin akses ke {i>instance<i} Prometheus lokal Anda untuk mengakses endpoint metrik komponen sistem:
Ikat akun layanan untuk instance Prometheus Anda ke instance
gke-metrics-agent
ClusterRole, dan gunakan token akun layanan sebagai kredensial untuk melakukan scraping metrik dari komponen sistem berikut:kube-apiserver
kube-scheduler
kube-controller-manager
kubelet
node-exporter
Gunakan kunci klien dan sertifikat yang disimpan di rahasia
kube-system/stackdriver-prometheus-etcd-scrape
untuk mengautentikasi salinan metrik dari etcd.Buat NetworkPolicy untuk mengizinkan akses dari namespace Anda ke {i>kube-state-metrics<i}.
Solusi pihak ketiga
Google telah bekerja sama dengan beberapa solusi logging dan pemantauan pihak ketiga Google Cloud untuk membantu produk mereka berfungsi baik dengan Google Distributed Cloud. Termasuk di antaranya Datadog, Elastic, dan Splunk. Pihak ketiga lainnya yang divalidasi akan ditambahkan di masa mendatang.
Panduan solusi berikut tersedia untuk menggunakan solusi pihak ketiga dengan Google Distributed Cloud:
- Memantau Google Distributed Cloud dengan Elastic Stack
- Mengumpulkan log di Google Distributed Cloud dengan Splunk Connect
Cara kerja Logging dan Pemantauan untuk Google Distributed Cloud
Cloud Logging dan Cloud Monitoring diinstal dan diaktifkan di masing-masing cluster saat Anda membuat admin atau cluster pengguna baru.
Agen Stackdriver menyertakan beberapa komponen pada setiap cluster:
Operator Stackdriver (
stackdriver-operator-*
). Mengelola siklus proses untuk semua agen Stackdriver lainnya yang di-deploy ke cluster.Resource Khusus Stackdriver. Sumber daya yang secara otomatis dibuat sebagai dari proses penginstalan Google Distributed Cloud.
Agen Metrik GKE (
gke-metrics-agent-*
). Kolektor OpenTelemetry berbasis DaemonSet yang menyalin metrik dari setiap node ke Cloud Monitoring. DaemonSetnode-exporter
dan deploymentkube-state-metrics
juga untuk memberikan lebih banyak metrik tentang cluster.Stackdriver Log Forwarder (
stackdriver-log-forwarder-*
). Bit yang Lancar DaemonSet yang meneruskan log dari setiap komputer ke Cloud Logging. Tujuan {i>Forwarder log<i} mem-buffer entri log pada {i>node<i} secara lokal dan mengirimkannya kembali hingga 4 jam. Jika {i>buffer<i} sudah penuh atau jika {i>Log Forwarder<i} tidak dapat menjangkau Cloud Logging API selama lebih dari 4 jam, log akan dihapus.Agen Metadata (
stackdriver-metadata-agent-
). Deployment yang mengirimkan metadata untuk resource Kubernetes seperti pod, deployment, atau node ke Config Monitoring untuk Ops API; data ini digunakan untuk memperkaya metrik yang memungkinkan Anda membuat kueri berdasarkan nama deployment, nama node, atau Nama layanan Kubernetes.
Anda dapat melihat agen yang diinstal oleh Stackdriver dengan menjalankan berikut:
kubectl -n kube-system get pods -l "managed-by=stackdriver"
Output perintah ini akan mirip dengan berikut ini:
kube-system gke-metrics-agent-4th8r 1/1 Running 1 (40h ago) 40h
kube-system gke-metrics-agent-8lt4s 1/1 Running 1 (40h ago) 40h
kube-system gke-metrics-agent-dhxld 1/1 Running 1 (40h ago) 40h
kube-system gke-metrics-agent-lbkl2 1/1 Running 1 (40h ago) 40h
kube-system gke-metrics-agent-pblfk 1/1 Running 1 (40h ago) 40h
kube-system gke-metrics-agent-qfwft 1/1 Running 1 (40h ago) 40h
kube-system kube-state-metrics-9948b86dd-6chhh 1/1 Running 1 (40h ago) 40h
kube-system node-exporter-5s4pg 1/1 Running 1 (40h ago) 40h
kube-system node-exporter-d9gwv 1/1 Running 2 (40h ago) 40h
kube-system node-exporter-fhbql 1/1 Running 1 (40h ago) 40h
kube-system node-exporter-gzf8t 1/1 Running 1 (40h ago) 40h
kube-system node-exporter-tsrpp 1/1 Running 1 (40h ago) 40h
kube-system node-exporter-xzww7 1/1 Running 1 (40h ago) 40h
kube-system stackdriver-log-forwarder-8lwxh 1/1 Running 1 (40h ago) 40h
kube-system stackdriver-log-forwarder-f7cgf 1/1 Running 2 (40h ago) 40h
kube-system stackdriver-log-forwarder-fl5gf 1/1 Running 1 (40h ago) 40h
kube-system stackdriver-log-forwarder-q5lq8 1/1 Running 2 (40h ago) 40h
kube-system stackdriver-log-forwarder-www4b 1/1 Running 1 (40h ago) 40h
kube-system stackdriver-log-forwarder-xqgjc 1/1 Running 1 (40h ago) 40h
kube-system stackdriver-metadata-agent-cluster-level-5bb5b6d6bc-z9rx7 1/1 Running 1 (40h ago) 40h
Metrik Cloud Monitoring
Untuk mengetahui daftar metrik yang dikumpulkan Cloud Monitoring, lihat Lihat metrik Google Distributed Cloud.
Mengonfigurasi agen Stackdriver untuk Google Distributed Cloud
Agen Stackdriver yang diinstal dengan Google Distributed Cloud mengumpulkan data tentang komponen sistem untuk tujuan pemeliharaan dan pemecahan masalah masalah pada cluster Anda. Bagian berikut menjelaskan Stackdriver konfigurasi, dan mode operasi.
Hanya Komponen Sistem (Mode Default)
Setelah diinstal, agen Stackdriver dikonfigurasi secara default untuk mengumpulkan log dan metrik, termasuk detail performa (misalnya, CPU dan memori pemanfaatan), dan metadata serupa, untuk komponen sistem yang disediakan Google. Ini mencakup semua workload di cluster admin, dan untuk cluster pengguna, workload di sistem kube, gke-system, gke-connect, istio-system, dan config-management- namespace sistem.
Komponen dan Aplikasi Sistem
Untuk mengaktifkan logging dan pemantauan aplikasi selain mode default, ikuti langkah-langkah di Mengaktifkan logging dan pemantauan aplikasi.
Metrik yang dioptimalkan (Metrik default)
Secara default, deployment kube-state-metrics
yang berjalan di cluster akan mengumpulkan dan melaporkan
mengoptimalkan kumpulan metrik kube ke Google Cloud Observability (sebelumnya bernama Stackdriver).
Lebih sedikit resource diperlukan untuk mengumpulkan metrik kustom yang optimal, yang meningkatkan performa dan skalabilitas secara keseluruhan.
Untuk menonaktifkan metrik yang dioptimalkan (tidak direkomendasikan), ganti setelan default di resource kustom Stackdriver Anda.
Gunakan Google Cloud Managed Service for Prometheus untuk komponen sistem yang dipilih
Google Cloud Managed Service for Prometheus adalah bagian dari Cloud Monitoring dan tersedia sebagai opsi untuk komponen sistem. Manfaat dari Google Cloud Managed Service for Prometheus mencakup hal berikut:
Anda dapat terus menggunakan pemantauan berbasis Prometheus yang ada tanpa mengubah pemberitahuan dan dasbor Grafana Anda.
Jika menggunakan GKE dan Google Distributed Cloud, Anda dapat menggunakan Bahasa Kueri Prometheus (PromQL) metrik di semua cluster Anda. Anda juga dapat menggunakan tab PromQL di Metrics Explorer di Konsol Google Cloud.
Mengaktifkan dan menonaktifkan Google Cloud Managed Service for Prometheus
Google Cloud Managed Service for Prometheus diaktifkan secara default di Google Distributed Cloud.
Untuk menonaktifkan Google Cloud Managed Service for Prometheus:
Buka objek Stackdriver bernama
stackdriver
untuk diedit:kubectl --kubeconfig CLUSTER_KUBECONFIG --namespace kube-system \ edit stackdriver stackdriver
Tambahkan feature gate
enableGMPForSystemMetrics
, dan tetapkan kefalse
:apiVersion: addons.gke.io/v1alpha1 kind: Stackdriver metadata: name: stackdriver namespace: kube-system spec: featureGates: enableGMPForSystemMetrics: false
Tutup sesi pengeditan Anda.
Melihat data metrik
Jika enableGMPForSystemMetrics
ditetapkan ke true
, metrik untuk hal berikut
komponen memiliki format yang berbeda
dan bagaimana mereka disimpan dan dikueri
Cloud Monitoring:
- kube-apiserver
- kube-scheduler
- kube-controller-manager
- kubelet dan cadvisor
- kube-state-metrics
- node-exporter
Dalam format baru, Anda dapat mengkueri metrik sebelumnya dengan menggunakan PromQL atau Bahasa Kueri Pemantauan (MQL):
PromQL
Contoh kueri PromQL:
histogram_quantile(0.95, sum(rate(apiserver_request_duration_seconds_bucket[5m])) by (le))
MQL
Untuk menggunakan MQL, setel resource yang dimonitor ke prometheus_target
, gunakan metrik
dengan awalan kubernetes.io/anthos
, dan tambahkan jenis Prometheus sebagai
akhiran pada nama metrik.
fetch prometheus_target
| metric 'kubernetes.io/anthos/apiserver_request_duration_seconds/histogram'
| align delta(5m)
| every 5m
| group_by [], [value_histogram_percentile: percentile(value.histogram, 95)]
Mengonfigurasi dasbor Grafana dengan Google Cloud Managed Service for Prometheus
Untuk menggunakan Grafana dengan data metrik dari Google Cloud Managed Service for Prometheus, Anda
harus terlebih dahulu mengonfigurasi dan
mengotentikasi sumber data Grafana. Untuk mengonfigurasi dan
untuk mengautentikasi sumber data, Anda menggunakan penyinkron sumber data
(datasource-syncer
) untuk membuat kredensial OAuth2 dan menyinkronkannya ke Grafana
melalui API sumber data Grafana. Sinkronisasi sumber data menyetel
Cloud Monitoring API sebagai URL server Prometheus (nilai URL diawali dengan
https://monitoring.googleapis.com
) di bawah sumber data di Grafana.
Ikuti langkah-langkah dalam Kueri menggunakan Grafana ke mengotentikasi dan mengkonfigurasi sumber data Grafana untuk melakukan kueri data dari Google Cloud Managed Service for Prometheus.
Sekumpulan contoh dasbor Grafana tersedia di sampel-anthos repositori di GitHub. Untuk menginstal dasbor contoh, lakukan tindakan berikut:
Download contoh file JSON:
git clone https://github.com/GoogleCloudPlatform/anthos-samples.git cd anthos-samples/gmp-grafana-dashboards
Jika sumber data Grafana Anda dibuat dengan nama yang berbeda dengan
Managed Service for Prometheus
, ubah kolomdatasource
di semua file JSON:sed -i "s/Managed Service for Prometheus/[DATASOURCE_NAME]/g" ./*.json
Ganti [DATASOURCE_NAME] dengan nama sumber data di Grafana Anda yang diarahkan ke layanan Prometheus
frontend
.Akses UI Grafana dari browser Anda, lalu pilih + Import di bagian menu Dashboards.
Upload file JSON, atau salin dan tempel konten file, lalu pilih Muat. Setelah konten file berhasil dimuat, pilih Impor. Secara opsional, Anda juga dapat mengubah nama dasbor dan UID sebelum mengimpor.
Dasbor yang diimpor akan berhasil dimuat jika Google Distributed Cloud dan sumber datanya dikonfigurasi dengan benar. Misalnya, screenshot berikut menampilkan dasbor yang dikonfigurasi oleh
cluster-capacity.json
.
Referensi lainnya
Untuk mengetahui informasi selengkapnya tentang Google Cloud Managed Service for Prometheus, lihat referensi berikut:
Mengonfigurasi resource komponen Stackdriver
Saat membuat cluster, Google Distributed Cloud otomatis membuat resource kustom Stackdriver. Anda dapat mengedit spesifikasi di resource kustom untuk mengganti nilai default CPU dan memori permintaan dan batas untuk komponen Stackdriver, dan Anda dapat mengganti setelan metrik default yang dioptimalkan secara terpisah.
Mengganti batas dan permintaan default CPU dan memori untuk komponen Stackdriver
Cluster dengan kepadatan pod tinggi memperkenalkan logging dan pemantauan yang lebih tinggi overhead. Pada kasus yang ekstrem, komponen Stackdriver mungkin dilaporkan mendekati CPU dan batas pemakaian memori atau bahkan bisa mengalami {i>restart<i} secara konstan karena batas resource. Dalam hal ini, untuk mengganti nilai default untuk CPU dan memori permintaan dan batas untuk komponen Stackdriver, gunakan langkah-langkah berikut:
Jalankan perintah berikut untuk membuka resource kustom Stackdriver di editor command line:
kubectl -n kube-system edit stackdriver stackdriver
Pada resource khusus Stackdriver, tambahkan bagian
resourceAttrOverride
di kolomspec
:resourceAttrOverride: DAEMONSET_OR_DEPLOYMENT_NAME/CONTAINER_NAME: LIMITS_OR_REQUESTS: RESOURCE: RESOURCE_QUANTITY
Perlu diperhatikan bahwa bagian
resourceAttrOverride
akan mengganti semua default yang ada batas dan permintaan untuk komponen yang Anda tentukan. Komponen berikut didukung olehresourceAttrOverride
:gke-metrics-agent/gke-metrics-agent
stackdriver-log-forwarder/stackdriver-log-forwarder
stackdriver-metadata-agent-cluster-level/metadata-agent
node-exporter/node-exporter
kube-state-metrics/kube-state-metrics
Contoh file akan terlihat seperti berikut:
apiVersion: addons.gke.io/v1alpha1 kind: Stackdriver metadata: name: stackdriver namespace: kube-system spec: anthosDistribution: baremetal projectID: my-project clusterName: my-cluster clusterLocation: us-west-1a resourceAttrOverride: gke-metrics-agent/gke-metrics-agent: requests: cpu: 110m memory: 240Mi limits: cpu: 200m memory: 4.5Gi
Untuk menyimpan perubahan pada resource kustom Stackdriver, simpan dan keluar dari editor command line Anda.
Memeriksa kondisi Pod:
kubectl -n kube-system get pods -l "managed-by=stackdriver"
Respons untuk Pod yang sehat akan terlihat seperti berikut:
gke-metrics-agent-4th8r 1/1 Running 1 40h
Memeriksa spesifikasi Pod komponen untuk memastikan resource disetel dengan benar.
kubectl -n kube-system describe pod POD_NAME
Ganti
POD_NAME
dengan nama Pod yang baru saja Anda ubah. Contoh,gke-metrics-agent-4th8r
.Responsnya akan terlihat seperti berikut:
Name: gke-metrics-agent-4th8r Namespace: kube-system ... Containers: gke-metrics-agent: Limits: cpu: 200m memory: 4.5Gi Requests: cpu: 110m memory: 240Mi ...
Nonaktifkan metrik yang dioptimalkan
Secara default, deployment kube-state-metrics
yang berjalan di cluster akan mengumpulkan dan melaporkan
mengoptimalkan serangkaian metrik kube ke Stackdriver. Jika Anda memerlukan metrik tambahan,
sebaiknya Anda mencari penggantinya dari daftar paket Google Distributed Cloud
metrik.
Berikut beberapa contoh pengganti yang mungkin Anda gunakan:
Metrik yang dinonaktifkan | Penggantian |
---|---|
kube_pod_start_time |
container/uptime |
kube_pod_container_resource_requests |
container/cpu/request_cores container/memory/request_bytes |
kube_pod_container_resource_limits |
container/cpu/limit_cores container/memory/limit_bytes |
Untuk menonaktifkan setelan default metrik yang dioptimalkan (tidak direkomendasikan), lakukan tindakan berikut:
Buka resource kustom Stackdriver di editor command line:
kubectl -n kube-system edit stackdriver stackdriver
Tetapkan kolom
optimizedMetrics
kefalse
:apiVersion: addons.gke.io/v1alpha1 kind: Stackdriver metadata: name: stackdriver namespace: kube-system spec: anthosDistribution: baremetal projectID: my-project clusterName: my-cluster clusterLocation: us-west-1a optimizedMetrics: false
Simpan perubahan, dan tutup editor command line Anda.
Server Metrik
Server Metrik adalah sumber metrik resource container untuk berbagai penskalaan otomatis pipeline. Metrik Server mengambil metrik dari kubelet dan menampilkannya melalui Kubernetes Metrics API. HPA dan VPA kemudian menggunakan metrik ini untuk menentukan kapan harus memicu penskalaan otomatis. Server metrik diskalakan menggunakan add-on pengubah ukuran.
Dalam kasus ekstrem ketika kepadatan pod yang tinggi menyebabkan terlalu banyak logging dan pemantauan
tambahan, Metrics Server mungkin dihentikan dan dimulai ulang karena sumber daya
keterbatasan praktik. Dalam kasus ini, Anda dapat mengalokasikan lebih banyak resource ke server metrik dengan mengedit konfigurasi peta metrics-server-config
dalam namespace gke-managed-metrics-server, dan mengubah nilai untuk cpuPerNode
dan memoryPerNode
.
kubectl edit cm metrics-server-config -n gke-managed-metrics-server
Contoh konten ConfigMap adalah:
apiVersion: v1
data:
NannyConfiguration: |-
apiVersion: nannyconfig/v1alpha1
kind: NannyConfiguration
cpuPerNode: 3m
memoryPerNode: 20Mi
kind: ConfigMap
Setelah mengupdate ConfigMap, buat ulang pod metrik-server dengan perintah berikut:
kubectl delete pod -l k8s-app=metrics-server -n gke-managed-metrics-server
Persyaratan konfigurasi untuk Logging dan Pemantauan
Ada beberapa persyaratan konfigurasi untuk mengaktifkan Cloud Logging dan Cloud Monitoring dengan Google Distributed Cloud. Langkah-langkah ini termasuk dalam Mengonfigurasi akun layanan untuk digunakan dengan Logging dan Monitoring pada halaman Mengaktifkan layanan Google, dan dalam daftar berikut:
- Ruang Kerja Cloud Monitoring harus dibuat di project Google Cloud Anda. Hal ini dilakukan dengan mengklik Monitoring di Konsol Google Cloud dan mengikuti alur kerja.
Anda harus mengaktifkan Stackdriver API berikut:
Anda perlu menetapkan peran IAM berikut ke layanan yang digunakan oleh agen Stackdriver:
logging.logWriter
monitoring.metricWriter
stackdriver.resourceMetadata.writer
monitoring.dashboardEditor
opsconfigmonitoring.resourceMetadata.writer
Harga
Log dan metrik sistem edisi Google Kubernetes Engine (GKE) Enterprise tidak dikenai biaya.
Di cluster Google Distributed Cloud, log dan metrik sistem edisi Google Kubernetes Engine (GKE) Enterprise meliputi hal berikut:
- Log dan metrik dari semua komponen dalam cluster admin
- Log dan metrik dari komponen di namespace ini di cluster pengguna:
kube-system
,gke-system
,gke-connect
,knative-serving
,istio-system
,monitoring-system
,config-management-system
,gatekeeper-system
,cnrm-system
Untuk informasi selengkapnya, lihat Harga untuk Google Cloud Observability.
Untuk mempelajari kredit untuk metrik Cloud Logging, hubungi bagian penjualan untuk mengetahui harga.