Mengonfigurasi logging dan pemantauan

Google Distributed Cloud mencakup beberapa opsi untuk logging dan pemantauan cluster, termasuk layanan terkelola berbasis cloud, alat open source, dan kompatibilitas yang tervalidasi dengan solusi komersial pihak ketiga. Halaman ini menjelaskan opsi tersebut dan memberikan beberapa panduan dasar dalam memilih solusi yang tepat untuk lingkungan Anda.

Opsi untuk Google Distributed Cloud

Ada beberapa opsi logging dan pemantauan untuk Google Distributed Cloud Anda:

  • Cloud Logging dan Cloud Monitoring, diaktifkan secara default pada komponen sistem Bare Metal.
  • Prometheus dan Grafana tersedia dari Cloud Marketplace.
  • Konfigurasi yang divalidasi dengan solusi pihak ketiga.

Cloud Logging dan Cloud Monitoring

Google Cloud Observability adalah solusi kemampuan observasi bawaan untuk Google Cloud. Layanan ini menawarkan solusi logging, pengumpulan metrik, pemantauan, dasbor, dan pemberitahuan yang terkelola sepenuhnya. Cloud Monitoring memantau cluster Google Distributed Cloud dengan cara yang sama seperti cluster GKE berbasis cloud.

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 sistem dan aplikasi.
  • 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 Pemantauan memberikan solusi kemampuan observasi berbasis cloud yang andal dan mudah dikonfigurasi. Kami sangat merekomendasikan Logging dan Monitoring saat menjalankan beban kerja di Google Distributed Cloud. Untuk aplikasi dengan komponen yang berjalan di Google Distributed Cloud dan infrastruktur lokal standar, Anda dapat mempertimbangkan solusi lain untuk tampilan menyeluruh dari aplikasi tersebut.

Prometheus dan Grafana

Prometheus dan Grafana adalah dua produk pemantauan open source populer yang tersedia di Cloud Marketplace:

  • Prometheus mengumpulkan metrik aplikasi dan sistem.

  • Alertmanager menangani pengiriman pemberitahuan dengan beberapa mekanisme pemberitahuan yang berbeda.

  • Grafana adalah alat dasbor.

Sebaiknya gunakan Google Cloud Managed Service for Prometheus, yang berbasis di Cloud Monitoring, untuk semua kebutuhan pemantauan Anda. Dengan Google Cloud Managed Service for Prometheus, Anda dapat memantau komponen sistem 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 cluster Anda.

Jika Anda menginstal Prometheus secara lokal dan ingin mengumpulkan metrik dari komponen sistem, Anda harus memberikan izin ke instance Prometheus lokal untuk mengakses endpoint metrik komponen sistem:

  • Ikat akun layanan untuk instance Prometheus Anda ke ClusterRole gke-metrics-agent yang telah ditetapkan, dan gunakan token akun layanan sebagai kredensial untuk menyalin metrik dari komponen sistem berikut:

    • kube-apiserver
    • kube-scheduler
    • kube-controller-manager
    • kubelet
    • node-exporter
  • Gunakan kunci klien dan sertifikat yang disimpan dalam rahasia kube-system/stackdriver-prometheus-etcd-scrape untuk mengautentikasi penyalinan metrik dari etcd.

  • Buat NetworkPolicy untuk mengizinkan akses dari namespace ke metrik status-kube.

Solusi pihak ketiga

Google telah bekerja sama dengan beberapa penyedia solusi logging dan pemantauan pihak ketiga untuk membantu produk mereka berfungsi baik dengan Google Distributed Cloud. Alat tersebut termasuk 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:

Cara kerja Logging dan Pemantauan untuk Google Distributed Cloud

Cloud Logging dan Cloud Monitoring diinstal dan diaktifkan di setiap 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. Resource yang dibuat secara otomatis sebagai bagian dari proses penginstalan Google Distributed Cloud.

  • Metrics Agent GKE (gke-metrics-agent-*). DaemonSet berbasis OpenTelemetry Collector yang melakukan scraping metrik dari setiap node ke Cloud Monitoring. DaemonSet node-exporter dan deployment kube-state-metrics juga disertakan untuk memberikan lebih banyak metrik tentang cluster.

  • Stackdriver Log Forwarder (stackdriver-log-forwarder-*). Fluent Bit DaemonSet yang meneruskan log dari setiap mesin ke Cloud Logging. Forwarder log akan mem-buffer entri log pada node secara lokal dan mengirimkannya kembali hingga 4 jam. Jika buffer menjadi penuh atau jika Forwarder Log 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 for Ops API; data ini digunakan untuk memperkaya kueri metrik dengan memungkinkan Anda membuat kueri berdasarkan nama deployment, nama node, atau bahkan nama layanan Kubernetes.

Anda dapat melihat agen yang diinstal oleh Stackdriver dengan menjalankan perintah 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 oleh Cloud Monitoring, lihat Melihat 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 pada cluster Anda. Bagian berikut ini menjelaskan konfigurasi Stackdriver dan mode operasi.

Hanya Komponen Sistem (Mode Default)

Setelah diinstal, agen Stackdriver dikonfigurasi secara default untuk mengumpulkan log dan metrik, termasuk detail performa (misalnya, pemanfaatan CPU dan memori), serta metadata serupa, untuk komponen sistem yang disediakan Google. Ini mencakup semua workload di cluster admin, dan untuk cluster pengguna, workload dalam kube-system, gke-system, gke-connect, istio-system, dan namespace sistem config-management.

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 kumpulan metrik kube yang dioptimalkan ke Google Cloud Observability (sebelumnya bernama Stackdriver).

Diperlukan lebih sedikit resource untuk mengumpulkan kumpulan metrik yang dioptimalkan ini, sehingga 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 meliputi:

  • Anda dapat terus menggunakan pemantauan berbasis Prometheus yang ada tanpa mengubah pemberitahuan dan dasbor Grafana.

  • Jika menggunakan GKE dan Google Distributed Cloud, Anda dapat menggunakan Prometheus Query Language (PromQL) yang sama untuk 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:

  1. Buka objek Stackdriver bernama stackdriver untuk diedit:

    kubectl --kubeconfig CLUSTER_KUBECONFIG --namespace kube-system \
        edit stackdriver stackdriver
    
  2. Tambahkan feature gate enableGMPForSystemMetrics, dan tetapkan ke false:

    apiVersion: addons.gke.io/v1alpha1
    kind: Stackdriver
    metadata:
      name: stackdriver
      namespace: kube-system
    spec:
      featureGates:
        enableGMPForSystemMetrics: false
    
  3. Tutup sesi pengeditan Anda.

Melihat data metrik

Jika enableGMPForSystemMetrics ditetapkan ke true, metrik untuk komponen berikut memiliki format yang berbeda terkait cara penyimpanan dan kueri komponen tersebut di Cloud Monitoring:

  • kube-apiserver
  • kube-scheduler
  • kube-controller-manager
  • kubelet dan cadvisor
  • kube-state-metrics
  • pengekspor node

Dalam format baru, Anda dapat membuat kueri metrik sebelumnya menggunakan PromQL atau Monitoring Query Language (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 dipantau ke prometheus_target, gunakan nama metrik dengan imbuhan kubernetes.io/anthos, lalu tambahkan jenis Prometheus sebagai akhiran 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 mengonfigurasi dan mengautentikasi sumber data Grafana terlebih dahulu. Untuk mengonfigurasi dan mengautentikasi sumber data, gunakan sinkronisasi sumber data (datasource-syncer) untuk membuat kredensial OAuth2 dan menyinkronkannya ke Grafana melalui API sumber data Grafana. Sinkronisasi sumber data menetapkan Cloud Monitoring API sebagai URL server Prometheus (nilai URL dimulai dengan https://monitoring.googleapis.com) di bagian sumber data di Grafana.

Ikuti langkah-langkah dalam artikel Membuat kueri menggunakan Grafana untuk mengautentikasi dan mengonfigurasi sumber data Grafana guna membuat kueri data dari Google Cloud Managed Service for Prometheus.

Sekumpulan contoh dasbor Grafana disediakan di repositori anthos-samples di GitHub. Untuk menginstal dasbor contoh, lakukan tindakan berikut:

  1. Download contoh file JSON:

    git clone https://github.com/GoogleCloudPlatform/anthos-samples.git
    cd anthos-samples/gmp-grafana-dashboards
    
  2. Jika sumber data Grafana Anda dibuat dengan nama yang berbeda dengan Managed Service for Prometheus, ubah kolom datasource 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.

  3. Akses UI Grafana dari browser Anda, lalu pilih + Import di bagian menu Dashboards.

    Membuka dasbor impor di Grafana.

  4. 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.

    Mengimpor dasbor di Grafana.

  5. 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.

    Dasbor kapasitas cluster di Grafana.

Referensi lainnya

Untuk mengetahui informasi selengkapnya tentang Google Cloud Managed Service for Prometheus, lihat referensi berikut:

Mengonfigurasi resource komponen Stackdriver

Saat Anda membuat cluster, Google Distributed Cloud otomatis membuat resource kustom Stackdriver. Anda dapat mengedit spesifikasi dalam resource kustom untuk mengganti nilai default permintaan serta batas memori dan CPU serta batas 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 yang tinggi memperkenalkan overhead logging dan pemantauan yang lebih tinggi. Dalam kasus yang ekstrem, komponen Stackdriver dapat melaporkan mendekati batas penggunaan CPU dan memori atau bahkan dapat mengalami mulai ulang konstan karena batas resource. Dalam kasus ini, untuk mengganti nilai default permintaan serta batas CPU dan memori serta batas komponen Stackdriver, gunakan langkah-langkah berikut:

  1. Jalankan perintah berikut untuk membuka resource kustom Stackdriver di editor command line:

    kubectl -n kube-system edit stackdriver stackdriver
  2. Pada resource kustom Stackdriver, tambahkan bagian resourceAttrOverride di bawah kolom spec:

    resourceAttrOverride:
          DAEMONSET_OR_DEPLOYMENT_NAME/CONTAINER_NAME:
            LIMITS_OR_REQUESTS:
              RESOURCE: RESOURCE_QUANTITY

    Perhatikan bahwa bagian resourceAttrOverride mengganti semua batas dan permintaan default yang ada untuk komponen yang Anda tentukan. Komponen berikut didukung oleh resourceAttrOverride:

    • 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
  3. Untuk menyimpan perubahan pada resource kustom Stackdriver, simpan dan keluar dari editor command line Anda.

  4. Memeriksa kondisi Pod:

    kubectl -n kube-system get pods -l "managed-by=stackdriver"

    Respons untuk Pod yang responsif akan terlihat seperti berikut:

    gke-metrics-agent-4th8r                1/1     Running   1   40h
  5. 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 kumpulan metrik kube yang dioptimalkan ke Stackdriver. Jika Anda memerlukan metrik tambahan, sebaiknya cari metrik pengganti dari daftar metrik Google Distributed Cloud.

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:

  1. Buka resource kustom Stackdriver di editor command line:

    kubectl -n kube-system edit stackdriver stackdriver
  2. Tetapkan kolom optimizedMetrics ke false:

    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
    
  3. Simpan perubahan, dan tutup editor command line Anda.

Server Metrik

Metrics Server adalah sumber metrik resource container untuk berbagai pipeline penskalaan otomatis. Metrics Server mengambil metrik dari kubelet dan menampilkannya melalui Kubernetes Metrics API. HPA dan VPA menggunakan metrik ini untuk menentukan waktu pemicu penskalaan otomatis. Server metrik diskalakan menggunakan pemulihan add-on.

Dalam kasus ekstrem dengan kepadatan pod yang tinggi menyebabkan terlalu banyak overhead logging dan pemantauan, Metrics Server mungkin dihentikan dan dimulai ulang karena keterbatasan resource. 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 disertakan dalam Mengonfigurasi akun layanan untuk digunakan dengan Logging dan Pemantauan di halaman Mengaktifkan layanan Google, dan dalam daftar berikut:

  1. Ruang Kerja Cloud Monitoring harus dibuat di dalam project Google Cloud. Hal ini dilakukan dengan mengklik Monitoring di Konsol Google Cloud dan mengikuti alur kerja.
  2. Anda harus mengaktifkan Stackdriver API berikut:

  3. Anda perlu menetapkan peran IAM berikut ke akun 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 mencakup hal berikut:

  • Log dan metrik dari semua komponen dalam cluster admin
  • Log dan metrik dari komponen dalam 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 mengetahui informasi selengkapnya, lihat Harga untuk Kemampuan Observasi Google Cloud.

Guna mempelajari kredit untuk metrik Cloud Logging, hubungi bagian penjualan untuk mengetahui harga.