Menggunakan logging dan pemantauan untuk komponen sistem

Dokumen ini menunjukkan cara mengonfigurasi logging dan pemantauan untuk komponen sistem di GKE pada VMware.

Opsinya meliputi:

  • Cloud Logging dan Cloud Monitoring
  • Google Cloud Managed Service for Prometheus (Pratinjau)
  • Prometheus dan Grafana

Untuk mengetahui informasi selengkapnya tentang opsi ini, lihat Ringkasan logging dan pemantauan.

Resource yang dimonitor

Resource yang dipantau adalah cara Google merepresentasikan resource seperti cluster, node, Pod, dan container. Untuk mempelajari lebih lanjut, baca dokumentasi Jenis resource yang dimonitor Cloud Monitoring.

Untuk membuat kueri log dan metrik, Anda harus mengetahui setidaknya label resource ini:

  • project_id: Project ID dari project pemantauan logging cluster. Anda memberikan nilai ini di kolom stackdriver.projectID pada file konfigurasi cluster.

  • location: Region Google Cloud tempat Anda ingin menyimpan log Cloud Logging dan metrik Cloud Monitoring. Sebaiknya pilih region yang dekat dengan pusat data lokal Anda. Anda memberikan nilai ini selama penginstalan di kolom stackdriver.clusterLocation pada file konfigurasi cluster Anda.

  • cluster_name: Nama cluster yang Anda pilih saat membuat cluster.

    Anda dapat mengambil nilai cluster_name untuk admin atau cluster pengguna dengan memeriksa resource kustom Stackdriver:

    kubectl get stackdriver stackdriver --namespace kube-system \
    --kubeconfig CLUSTER_KUBECONFIG --output yaml | grep 'clusterName:'
    

    dengan

    • CLUSTER_KUBECONFIG adalah jalur ke file kubeconfig cluster admin atau cluster pengguna yang memerlukan nama cluster.

Menggunakan Cloud Logging

Anda tidak perlu melakukan tindakan apa pun guna mengaktifkan Cloud Logging untuk cluster. Namun, Anda harus menentukan project Google Cloud tempat Anda ingin melihat log. Di file konfigurasi cluster, tentukan project Google Cloud di bagian stackdriver.

Anda dapat mengakses log menggunakan Logs Explorer di Konsol Google Cloud. Misalnya, untuk mengakses log container:

  1. Buka Logs Explorer di konsol Google Cloud untuk project Anda.
  2. Temukan log untuk container dengan:
    1. Mengklik kotak drop-down katalog log di sebelah kiri atas dan memilih Kubernetes Container.
    2. Memilih nama cluster, lalu namespace, dan container dari hierarki.

Melihat log untuk pengontrol di cluster bootstrap

  1. Menemukan nama pod onprem-admin-cluster-controller / clusterapi-controllers

    Secara default, nama cluster jenis adalah gkectl-bootstrap-cluster.

    "ADMIN_CLUSTER_NAME"
    resource.type="k8s_container"
    resource.labels.cluster_name="gkectl-bootstrap-cluster"
    
  2. Ubah kueri menggunakan nama pod yang Anda temukan, dan dapatkan log

    resource.type="k8s_container"
    resource.labels.cluster_name="gkectl-bootstrap-cluster"
    resource.labels.pod_name="POD_NAME"
    

Menggunakan Cloud Monitoring

Anda tidak perlu mengambil tindakan apa pun guna mengaktifkan Cloud Monitoring untuk cluster. Namun, Anda harus menentukan project Google Cloud tempat Anda ingin melihat metrik. Dalam file konfigurasi cluster, tentukan project Google Cloud di bagian stackdriver.

Anda dapat memilih dari lebih dari 1.500 metrik dengan menggunakan Metrics Explorer. Untuk mengakses Metrics Explorer, lakukan hal berikut:

  1. Di konsol Google Cloud, pilih Monitoring, atau gunakan tombol berikut:

    Buka Monitoring

  2. Pilih Resource > Metrics Explorer.

Anda juga dapat melihat metrik di dasbor di Konsol Google Cloud. Untuk informasi tentang cara membuat dasbor dan melihat metrik, lihat Membuat dasbor.

Melihat data pemantauan tingkat fleet

Untuk melihat gambaran keseluruhan pemanfaatan resource fleet Anda menggunakan data Cloud Monitoring, termasuk GKE di VMware, Anda dapat menggunakan ringkasan GKE Enterprise di Konsol Google Cloud. Lihat Menggunakan ringkasan GKE Enterprise untuk mengetahui lebih lanjut.

Batas kuota Cloud Monitoring default

Pemantauan GKE di VMware memiliki batas default 6.000 panggilan API per menit untuk setiap project. Jika Anda melebihi batas ini, metrik Anda tidak dapat ditampilkan. Jika Anda memerlukan batas pemantauan yang lebih tinggi, minta melalui konsol Google Cloud.

Menggunakan Managed Service for Prometheus (Pratinjau)

Google Cloud Managed Service for Prometheus adalah bagian dari Cloud Monitoring dan tersedia sebagai opsi. Manfaat Google Cloud Managed Service for Prometheus meliputi:

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

  • Jika menggunakan GKE dan GKE di VMware, Anda dapat menggunakan PromQL yang sama untuk metrik di semua cluster Anda. Anda juga dapat menggunakan tab PROMQL di Metrics Explorer di Konsol Google Cloud.

Mengaktifkan Google Cloud Managed Service for Prometheus

Buka objek Stackdriver bernama stackdriver untuk mengedit:

kubectl --kubeconfig CLUSTER_KUBECONFIG --namespace kube-system \
    edit stackdriver stackdriver

Tambahkan gate fitur enableGMPForSystemMetrics, lalu tetapkan ke true:

apiVersion: addons.gke.io/v1alpha1
kind: Stackdriver
metadata:
  name: stackdriver
  namespace: kube-system
spec:
  featureGates:
    enableGMPForSystemMetrics: true

Tutup sesi pengeditan Anda.

Melihat data metrik

Jika Google Cloud Managed Service for Prometheus diaktifkan, metrik untuk komponen berikut memiliki format yang berbeda terkait cara komponen berikut disimpan dan dikueri di Cloud Monitoring:

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

Dalam format baru ini, Anda dapat membuat kueri metrik sebelumnya menggunakan PromQL atau Bahasa Kueri Monitoring (MQL).

Contoh PromQL:

histogram_quantile(0.95, sum(rate(apiserver_request_duration_seconds_bucket[5m])) by (le))

Untuk menggunakan MQL, tetapkan resource yang dimonitor ke prometheus_target, lalu tambahkan jenis Prometheus sebagai akhiran ke metrik.

Contoh MQL:

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 Managed Service for Prometheus

Untuk menggunakan Grafana dengan data metrik dari Managed Service for Prometheus, ikuti langkah-langkah dalam Membuat kueri menggunakan Grafana untuk mengautentikasi dan mengonfigurasi sumber data Grafana guna mengkueri data dari Managed Service for Prometheus.

Serangkaian dasbor contoh Grafana disediakan di repositori anthos-samples di GitHub. Untuk menginstal contoh dasbor, lakukan hal 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 frontend Prometheus.

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

    Membuka impor dasbor di Grafana.

  4. Upload file .json, atau salin dan tempel konten file, lalu pilih Load. Setelah konten file berhasil dimuat, pilih Impor. Anda juga dapat mengubah nama dasbor dan UID sebelum mengimpor.

    Mengimpor dasbor di Grafana.

  5. Dasbor yang diimpor akan berhasil dimuat jika GKE di VMware dan sumber data dikonfigurasi dengan benar. Misalnya, screenshot berikut menampilkan dasbor yang dikonfigurasi oleh cluster-capacity.json.

    Dasbor kapasitas cluster di Grafana.

Referensi lain

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

Menggunakan Prometheus dan Grafana

Untuk mengaktifkan Prometheus dan Grafana, buka objek Monitoring bernama monitoring-sample untuk diedit:

kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] edit \
    monitoring monitoring-sample --namespace kube-system

Tetapkan enablePrometheus ke true:

apiVersion: addons.gke.io/v1alpha1
   kind: Monitoring
   metadata:
     labels:
       k8s-app: monitoring-operator
     name: monitoring-sample
     namespace: kube-system
   spec:
     channel: stable
     ...
     enablePrometheus: false

Tutup sesi pengeditan Anda.

Masalah umum

Di cluster pengguna, Prometheus dan Grafana dinonaktifkan secara otomatis selama upgrade. Namun, data konfigurasi dan metrik tidak akan hilang.

Untuk mengatasi masalah ini, setelah upgrade, buka monitoring-sample untuk mengedit dan tetapkan enablePrometheus ke true.

Mengakses metrik pemantauan dari dasbor Grafana

Grafana menampilkan metrik yang dikumpulkan dari klaster Anda. Untuk melihat metrik ini, Anda perlu mengakses dasbor Grafana:

  1. Dapatkan nama Pod Grafana yang berjalan di namespace kube-system cluster pengguna:

    kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] -n kube-system get pods

    dengan [USER_CLUSTER_KUBECONFIG] adalah file kubeconfig cluster pengguna.

  2. Pod Grafana memiliki server HTTP yang memproses di TCP localhost port 3000. Teruskan port lokal ke port 3000 di Pod, sehingga Anda dapat melihat dasbor Grafana dari browser web.

    Misalnya, nama Pod adalah grafana-0. Untuk meneruskan port 50000 ke port 3000 di Pod, masukkan perintah ini:

    kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] -n kube-system port-forward grafana-0 50000:3000
  3. Dari browser web, buka http://localhost:50000.

  4. Di halaman login, masukkan admin untuk nama pengguna dan sandi.

  5. Jika login berhasil, Anda akan melihat perintah untuk mengubah sandi. Setelah Anda mengubah sandi default, Dasbor Beranda Grafana cluster pengguna akan dimuat.

  6. Untuk mengakses dasbor lainnya, klik menu drop-down Beranda di pojok kiri atas halaman.

Untuk contoh penggunaan Grafana, lihat Membuat dasbor Grafana.

Mengakses pemberitahuan

Prometheus Alertmanager mengumpulkan pemberitahuan dari server Prometheus. Anda dapat melihat pemberitahuan ini di dasbor Grafana. Untuk melihat pemberitahuan, Anda perlu mengakses dasbor:

  1. Container di Pod alertmanager-0 memantau port TCP 9093. Teruskan port lokal ke port 9093 di Pod:

    kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] port-forward \
       -n kube-system alertmanager-0 50001:9093
  2. Dari browser web, buka http://localhost:50001.

Mengubah konfigurasi Alertmanager Prometheus

Anda dapat mengubah konfigurasi default Prometheus Alertmanager dengan mengedit file monitoring.yaml cluster pengguna Anda. Anda harus melakukan ini jika ingin mengarahkan pemberitahuan ke tujuan tertentu, bukan menyimpannya di dasbor. Anda dapat mempelajari cara mengonfigurasi Alertmanager dalam dokumentasi Konfigurasi Prometheus.

Untuk mengubah konfigurasi Alertmanager, lakukan langkah-langkah berikut:

  1. Buat salinan file manifes monitoring.yaml cluster pengguna:

    kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] -n kube-system \
       get monitoring monitoring-sample -o yaml > monitoring.yaml
  2. Untuk mengonfigurasi Alertmanager, buat perubahan pada kolom di bagian spec.alertmanager.yml. Setelah selesai, simpan manifes yang diubah.

  3. Terapkan manifes ke cluster Anda:

    kubectl apply --kubeconfig [USER_CLUSTER_KUBECONIFG] -f monitoring.yaml

Menskalakan resource Prometheus

Konfigurasi pemantauan default mendukung hingga lima node. Untuk cluster yang lebih besar, Anda dapat menyesuaikan resource Prometheus Server. Rekomendasinya adalah 50 m core CPU dan 500 Mi memori per node cluster. Pastikan cluster Anda berisi dua node, masing-masing dengan resource yang cukup agar sesuai dengan Prometheus. Untuk mengetahui informasi selengkapnya, lihat Mengubah ukuran cluster pengguna.

Untuk mengubah resource Prometheus Server, lakukan langkah-langkah berikut:

  1. Buat salinan file manifes monitoring.yaml cluster pengguna:

    kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] -n kube-system get monitoring monitoring-sample -o yaml > monitoring.yaml
  2. Untuk mengganti resource, buat perubahan pada kolom di bagian spec.resourceOverride. Setelah selesai, simpan manifes yang diubah. Contoh:

    spec:
      resourceOverride:
      - component: Prometheus
        resources:
          requests:
            cpu: 300m
            memory: 3000Mi
          limits:
            cpu: 300m
            memory: 3000Mi
    
  3. Terapkan manifes ke cluster Anda:

    kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] apply -f monitoring.yaml

Membuat dasbor Grafana

Anda telah men-deploy aplikasi yang mengekspos metrik, memverifikasi bahwa metrik sudah terekspos, dan memverifikasi bahwa Prometheus menyalin metrik. Sekarang Anda dapat menambahkan metrik tingkat aplikasi ke dasbor Grafana khusus.

Untuk membuat dasbor Grafana, lakukan langkah-langkah berikut:

  1. Jika perlu, dapatkan akses ke Grafana.
  2. Dari Dasbor Beranda, klik menu drop-down Beranda di pojok kiri atas halaman.
  3. Dari menu sebelah kanan, klik Dasbor baru.
  4. Dari bagian Panel baru, klik Grafik. Dasbor grafik kosong akan muncul.
  5. Klik Judul panel, lalu klik Edit. Panel Graph bagian bawah akan terbuka ke tab Metrics.
  6. Dari menu drop-down Sumber Data, pilih pengguna. Klik Tambahkan kueri, lalu masukkan foo di kolom penelusuran.
  7. Klik tombol Kembali ke dasbor di pojok kanan atas layar. Dasbor Anda ditampilkan.
  8. Untuk menyimpan dasbor, klik Simpan dasbor di pojok kanan atas layar. Pilih nama untuk dasbor, lalu klik Simpan.

Menonaktifkan Prometheus dan Grafana

Untuk menonaktifkan pemantauan dalam cluster, kembalikan perubahan yang dibuat pada objek monitoring-sample:

  1. Buka objek monitoring-sample untuk diedit:

    kubectl --kubeconfig USER_CLUSTER_KUBECONFIG edit \
       monitoring monitoring-sample --namespace kube-system

    Ganti USER_CLUSTER_KUBECONFIG dengan file kubeconfig untuk cluster pengguna Anda.

  2. Untuk menonaktifkan Prometheus dan Grafana, tetapkan enablePrometheus ke false:

       apiVersion: addons.gke.io/v1alpha1
       kind: Monitoring
       metadata:
         labels:
           k8s-app: monitoring-operator
         name: monitoring-sample
         namespace: kube-system
       spec:
         channel: stable
         ...
         enablePrometheus: false
    
  3. Simpan perubahan dengan menutup sesi pengeditan.

  4. Konfirmasi bahwa statefulset prometheus-0, prometheus-1, dan grafana-0 telah dihapus:

    kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get pods --namespace kube-system
    

Contoh: Menambahkan metrik tingkat aplikasi ke dasbor Grafana

Bagian berikut akan memandu Anda dalam menambahkan metrik untuk aplikasi. Di bagian ini, Anda akan menyelesaikan tugas berikut:

  • Deploy contoh aplikasi yang mengekspos metrik bernama foo.
  • Verifikasi bahwa Prometheus mengekspos dan menyalin metrik.
  • Buat dasbor Grafana kustom.

Men-deploy aplikasi contoh

Aplikasi contoh berjalan dalam satu Pod. Container Pod mengekspos metrik, foo, dengan nilai konstanta 40.

Buat manifes Pod berikut, pro-pod.yaml:

apiVersion: v1
kind: Pod
metadata:
  name: prometheus-example
  annotations:
    prometheus.io/scrape: 'true'
    prometheus.io/port: '8080'
    prometheus.io/path: '/metrics'
spec:
  containers:
  - image: registry.k8s.io/prometheus-dummy-exporter:v0.1.0
    name: prometheus-example
    command:
    - /bin/sh
    - -c
    - ./prometheus_dummy_exporter --metric-name=foo --metric-value=40 --port=8080

Kemudian, terapkan manifes Pod ke cluster pengguna Anda:

kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] apply -f pro-pod.yaml

Memverifikasi bahwa metrik ditampilkan dan disalin

  1. Container di pod prometheus-example memproses port TCP 8080. Teruskan port lokal ke port 8080 di Pod:

    kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] port-forward prometheus-example 50002:8080
  2. Untuk memastikan aplikasi mengekspos metrik, jalankan perintah berikut:

    curl localhost:50002/metrics | grep foo
    

    Perintah akan menampilkan output berikut:

    # HELP foo Custom metric
    # TYPE foo gauge
    foo 40
  3. Container di Pod prometheus-0 memantau port TCP 9090. Teruskan port lokal ke port 9090 di Pod:

    kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] port-forward prometheus-0 50003:9090
  4. Untuk memastikan bahwa Prometheus melakukan scraping metrik, buka http://localhost:50003/targets, yang akan mengarahkan Anda ke Pod prometheus-0 pada grup target prometheus-io-pods.

  5. Untuk melihat metrik di Prometheus, buka http://localhost:50003/graph. Dari kolom search, masukkan foo, lalu klik Execute. Halaman akan menampilkan metrik.

Mengonfigurasi resource kustom Stackdriver

Saat Anda membuat cluster, GKE di VMware secara otomatis membuat resource kustom Stackdriver. Anda dapat mengedit spesifikasi di resource kustom guna mengganti nilai default untuk permintaan serta batas CPU dan memori untuk komponen Stackdriver, dan Anda juga dapat mengganti ukuran penyimpanan dan kelas penyimpanan default secara terpisah.

Mengganti nilai default untuk permintaan dan batas untuk CPU serta memori

Untuk mengganti setelan default ini, lakukan hal berikut:

  1. Buka resource kustom Stackdriver di editor command line:

    kubectl --kubeconfig=KUBECONFIG -n kube-system edit stackdriver stackdriver

    dengan KUBECONFIG adalah jalur ke file kubeconfig Anda untuk cluster tersebut. Hal ini dapat berupa cluster admin atau cluster pengguna.

  2. Di resource kustom Stackdriver, tambahkan kolom resourceAttrOverride di bagian spec:

    resourceAttrOverride:
          POD_NAME_WITHOUT_RANDOM_SUFFIX/CONTAINER_NAME:
            LIMITS_OR_REQUESTS:
              RESOURCE: RESOURCE_QUANTITY

    Perhatikan bahwa kolom resourceAttrOverride akan mengganti semua batas dan permintaan default yang ada untuk komponen yang Anda tentukan. Contoh filenya akan terlihat seperti berikut:

    apiVersion: addons.gke.io/v1alpha1
    kind: Stackdriver
    metadata:
      name: stackdriver
      namespace: kube-system
    spec:
      projectID: my-project
      clusterName: my-cluster
      clusterLocation: us-west-1a
      resourceAttrOverride:
        stackdriver-prometheus-k8s/prometheus-server:
          limits:
            cpu: 500m
            memory: 3000Mi
          requests:
            cpu: 300m
            memory: 2500Mi
  3. Simpan perubahan dan keluar dari editor command line Anda.

  4. Memeriksa respons Pod Anda:

    kubectl --kubeconfig=KUBECONFIG -n kube-system get pods | grep stackdriver

    Misalnya, Pod yang sehat akan terlihat seperti berikut:

    stackdriver-prometheus-k8s-0                                2/2     Running   0          5d19h
  5. Periksa spesifikasi Pod komponen untuk memastikan resource ditetapkan dengan benar.

    kubectl --kubeconfig=KUBECONFIG -n kube-system describe pod POD_NAME

    dengan POD_NAME adalah nama Pod yang baru saja Anda ubah. Misalnya, stackdriver-prometheus-k8s-0

    Responsnya akan terlihat seperti berikut:

      Name:         stackdriver-prometheus-k8s-0
      Namespace:    kube-system
      ...
      Containers:
        prometheus-server:
          Limits:
            cpu: 500m
            memory: 3000Mi
          Requests:
            cpu: 300m
            memory: 2500Mi
          ...
          

Mengganti default ukuran penyimpanan

Untuk mengganti setelan default ini, lakukan hal berikut:

  1. Buka resource kustom Stackdriver di editor command line:

    kubectl --kubeconfig=KUBECONFIG -n kube-system edit stackdriver stackdriver
  2. Tambahkan kolom storageSizeOverride di bawah bagian spec. Anda dapat menggunakan komponen stackdriver-prometheus-k8s atau stackdriver-prometheus-app. Bagian ini menggunakan format berikut:

    storageSizeOverride:
    STATEFULSET_NAME: SIZE
    

    Contoh ini menggunakan stackdriver-prometheus-k8s stateful dan ukuran 120Gi.

    apiVersion: addons.gke.io/v1alpha1
    kind: Stackdriver
    metadata:
      name: stackdriver
      namespace: kube-system
    spec:
      projectID: my-project
      clusterName: my-cluster
      clusterLocation: us-west-1a
      storageSizeOverride:
        stackdriver-prometheus-k8s: 120Gi
      
  3. Simpan, dan keluar dari editor command line Anda.

  4. Memeriksa respons Pod Anda:

    kubectl --kubeconfig=KUBECONFIG -n kube-system get pods | grep stackdriver
    Misalnya, Pod yang sehat akan terlihat seperti berikut:
    stackdriver-prometheus-k8s-0                                2/2     Running   0          5d19h
  5. Periksa spesifikasi Pod komponen untuk memastikan ukuran penyimpanan diganti dengan benar.

    kubectl --kubeconfig=KUBECONFIG -n kube-system describe statefulset STATEFULSET_NAME

    Responsnya akan terlihat seperti berikut:

    Volume Claims:
     Name:          my-statefulset-persistent-volume-claim
     StorageClass:  my-storage-class
     Labels:
     Annotations:
     Capacity:      120Gi
     Access Modes:  [ReadWriteOnce]          

Mengganti default kelas penyimpanan

Prasyarat

Anda harus terlebih dahulu membuat StorageClass yang ingin digunakan.

Guna mengganti kelas penyimpanan default untuk volume persisten yang diklaim dengan logging dan pemantauan komponen:

  1. Buka resource kustom Stackdriver di editor command line:

    kubectl --kubeconfig=KUBECONFIG -n kube-system edit stackdriver stackdriver

    dengan KUBECONFIG adalah jalur ke file kubeconfig Anda untuk cluster tersebut. Hal ini dapat berupa cluster admin atau cluster pengguna.

  2. Tambahkan kolom storageClassName di bagian spec:

    storageClassName: STORAGECLASS_NAME

    Perhatikan bahwa kolom storageClassName akan menggantikan kelas penyimpanan default yang ada, dan berlaku untuk semua komponen logging dan pemantauan dengan volume persisten yang diklaim. Contoh file akan terlihat seperti berikut:

    apiVersion: addons.gke.io/v1alpha1
    kind: Stackdriver
    metadata:
      name: stackdriver
      namespace: kube-system
    spec:
      projectID: my-project
      clusterName: my-cluster
      clusterLocation: us-west-1a
      proxyConfigSecretName: my-secret-name
      enableVPC: 
      optimizedMetrics: true
      storageClassName: my-storage-class
  3. Simpan perubahan.

  4. Memeriksa respons Pod Anda:

    kubectl --kubeconfig=KUBECONFIG -n kube-system get pods | grep stackdriver

    Misalnya, Pod yang sehat akan terlihat seperti berikut:

    stackdriver-prometheus-k8s-0                                1/1     Running   0          5d19h
  5. Periksa spesifikasi Pod komponen untuk memastikan kelas penyimpanan disetel dengan benar.

    kubectl --kubeconfig=KUBECONFIG -n kube-system describe statefulset STATEFULSET_NAME

    Misalnya, dengan menggunakan kumpulan stateful stackdriver-prometheus-k8s, responsnya akan terlihat seperti berikut:

    Volume Claims:
     Name:          stackdriver-prometheus-data
     StorageClass:  my-storage-class
     Labels:
     Annotations:
     Capacity:      120Gi
     Access Modes:  [ReadWriteOnce]          

Nonaktifkan metrik yang dioptimalkan

Secara default, agen metrik yang berjalan di cluster mengumpulkan dan melaporkan serangkaian metrik container, kubelet, dan kube-state-metrics yang dioptimalkan ke Stackdriver. Jika Anda memerlukan metrik tambahan, sebaiknya cari metrik pengganti dari daftar metrik GKE Enterprise.

Berikut adalah beberapa contoh perangkat pengganti yang dapat 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 kube-state-metrik yang dioptimalkan (tidak direkomendasikan), lakukan tindakan berikut:

  1. Buka resource kustom Stackdriver di editor command line:

    kubectl --kubeconfig=KUBECONFIG -n kube-system edit stackdriver stackdriver

    dengan KUBECONFIG adalah jalur ke file kubeconfig Anda untuk cluster tersebut. Hal ini dapat berupa cluster admin atau cluster pengguna.

  2. Tetapkan kolom optimizedMetrics ke false:

    apiVersion: addons.gke.io/v1alpha1
    kind: Stackdriver
    metadata:
      name: stackdriver
      namespace: kube-system
    spec:
      projectID: my-project
      clusterName: my-cluster
      clusterLocation: us-west-1a
      proxyConfigSecretName: my-secret-name
      enableVPC: 
      optimizedMetrics: false
      storageClassName: my-storage-class
  3. Simpan perubahan, dan keluar dari editor command line Anda.

Masalah umum: Kondisi error Cloud Monitoring

(ID Masalah 159761921)

Dalam kondisi tertentu, pod Cloud Monitoring default, yang di-deploy secara default di setiap cluster baru, dapat menjadi tidak responsif. Misalnya, saat cluster diupgrade, data penyimpanan dapat rusak ketika pod di statefulset/prometheus-stackdriver-k8s dimulai ulang.

Secara khusus, pod pemantauan stackdriver-prometheus-k8s-0 dapat ditangkap dalam loop ketika data yang rusak mencegah penulisan prometheus-stackdriver-sidecar ke PersistentVolume penyimpanan cluster.

Anda dapat mendiagnosis dan memulihkan error secara manual dengan mengikuti langkah-langkah di bawah.

Mendiagnosis kegagalan Cloud Monitoring

Jika pod pemantauan gagal, log akan melaporkan hal berikut:

{"log":"level=warn ts=2020-04-08T22:15:44.557Z caller=queue_manager.go:534 component=queue_manager msg=\"Unrecoverable error sending samples to remote storage\" err=\"rpc error: code = InvalidArgument desc = One or more TimeSeries could not be written: One or more points were written more frequently than the maximum sampling period configured for the metric.: timeSeries[0-114]; Unknown metric: kubernetes.io/anthos/scheduler_pending_pods: timeSeries[196-198]\"\n","stream":"stderr","time":"2020-04-08T22:15:44.558246866Z"}

{"log":"level=info ts=2020-04-08T22:15:44.656Z caller=queue_manager.go:229 component=queue_manager msg=\"Remote storage stopped.\"\n","stream":"stderr","time":"2020-04-08T22:15:44.656798666Z"}

{"log":"level=error ts=2020-04-08T22:15:44.663Z caller=main.go:603 err=\"corruption after 29032448 bytes: unexpected non-zero byte in padded page\"\n","stream":"stderr","time":"2020-04-08T22:15:44.663707748Z"}

{"log":"level=info ts=2020-04-08T22:15:44.663Z caller=main.go:605 msg=\"See you next time!\"\n","stream":"stderr","time":"2020-04-08T22:15:44.664000941Z"}

Memulihkan dari error Cloud Monitoring

Untuk memulihkan Cloud Monitoring secara manual:

  1. Hentikan pemantauan cluster. Turunkan skala operator stackdriver untuk mencegah pemantauan rekonsiliasi:

    kubectl --kubeconfig /ADMIN_CLUSTER_KUBCONFIG --namespace kube-system scale deployment stackdriver-operator --replicas 0

  2. Hapus beban kerja pipeline pemantauan:

    kubectl --kubeconfig /ADMIN_CLUSTER_KUBCONFIG --namespace kube-system delete statefulset stackdriver-prometheus-k8s

  3. Menghapus PersistentVolumeClaims (PVC) pipeline pemantauan:

    kubectl --kubeconfig /ADMIN_CLUSTER_KUBCONFIG --namespace kube-system delete pvc -l app=stackdriver-prometheus-k8s

  4. Mulai ulang pemantauan cluster. Tingkatkan skala operator stackdriver untuk menginstal ulang pipeline pemantauan baru dan melanjutkan rekonsiliasi:

    kubectl --kubeconfig /ADMIN_CLUSTER_KUBCONFIG --namespace kube-system scale deployment stackdriver-operator --replicas=1