Menggunakan logging dan pemantauan untuk komponen sistem

Dokumen ini menunjukkan cara mengonfigurasi logging dan pemantauan untuk komponen sistem di Google Distributed Cloud (khusus software) untuk VMware.

Secara default, Cloud Logging, Cloud Monitoring, dan Google Cloud Managed Service for Prometheus diaktifkan.

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

Resource yang dipantau

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

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

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

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

    Anda menentukan perutean log dan lokasi penyimpanan Cloud Logging di konfigurasi Router Log. Untuk mengetahui informasi selengkapnya tentang perutean log, lihat Ringkasan perutean dan penyimpanan.

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

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

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

    di mana

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

Perutean log dan metrik

Penerus log Stackdriver (stackdriver-log-forwarder) mengirim log dari setiap mesin node ke Cloud Logging. Demikian pula, agen metrik GKE (gke-metrics-agent) mengirim metrik dari setiap mesin node ke Cloud Monitoring. Sebelum log dan metrik dikirim, Operator Stackdriver (stackdriver-operator) melampirkan nilai dari kolom clusterLocation di resource kustom stackdriver ke setiap entri log dan metrik sebelum dirutekan ke Google Cloud. Selain itu, log dan metrik dikaitkan dengan project Google Cloud yang ditentukan dalam spesifikasi resource kustom stackdriver (spec.projectID). Resource stackdriver mendapatkan nilai untuk kolom clusterLocation dan projectID dari kolom stackdriver.clusterLocation dan stackdriver.projectID di bagian clusterOperations resource Cluster pada waktu pembuatan cluster.

Semua metrik dan entri log yang dikirim oleh agen stackdriver dirutekan ke endpoint penyerapan global. Dari sana, data diteruskan ke endpoint regional Google Cloud terdekat yang dapat dijangkau untuk memastikan keandalan transportasi data.

Setelah endpoint global menerima entri log atau metrik, yang terjadi selanjutnya bergantung pada layanan:

  • Cara konfigurasi perutean log: saat endpoint logging menerima pesan log, Cloud Logging meneruskan pesan melalui Router Log. Sink dan filter dalam konfigurasi Log Router menentukan cara merutekan pesan. Anda dapat merutekan entri log ke tujuan seperti bucket Logging regional, yang menyimpan entri log, atau ke Pub/Sub. Untuk mengetahui informasi selengkapnya tentang cara kerja perutean log dan cara mengonfigurasinya, lihat Ringkasan perutean dan penyimpanan.

    Kolom clusterLocation di resource kustom stackdriver atau kolom clusterOperations.location di spesifikasi Cluster tidak dipertimbangkan dalam proses perutean ini. Untuk log, clusterLocation hanya digunakan untuk memberi label pada entri log, yang dapat berguna untuk memfilter di Logs Explorer.

  • Cara perutean metrik dikonfigurasi: saat endpoint metrik menerima entri metrik, Cloud Monitoring akan merutekan entri tersebut secara otomatis ke lokasi yang ditentukan oleh metrik. Lokasi dalam metrik berasal dari kolom clusterLocation di resource kustom stackdriver.

  • Rencanakan konfigurasi Anda: saat Anda mengonfigurasi Cloud Logging dan Cloud Monitoring, konfigurasi Router Log dan tentukan clusterLocation yang sesuai dengan lokasi yang paling mendukung kebutuhan Anda. Misalnya, jika Anda ingin log dan metrik dikirim ke lokasi yang sama, tetapkan clusterLocation ke region Google Cloud yang sama dengan yang digunakan Log Router untuk Google Cloud project Anda.

  • Perbarui konfigurasi Anda jika diperlukan: Anda dapat melakukan perubahan kapan saja pada setelan tujuan untuk log dan metrik karena persyaratan bisnis, seperti rencana pemulihan bencana. Perubahan pada konfigurasi Log Router di kolom Google Cloud dan clusterLocation dalam resource kustom stackdriver akan segera berlaku.

Menggunakan Cloud Logging

Anda tidak perlu melakukan tindakan apa pun untuk mengaktifkan Cloud Logging untuk cluster. Namun, Anda harus menentukan Google Cloud project tempat Anda ingin melihat log. Dalam file konfigurasi cluster, Anda menentukan 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 kiri atas dan memilih Kubernetes Container.
    2. Memilih nama cluster, lalu namespace, lalu container dari hierarki.

Melihat log untuk pengontrol di cluster bootstrap

  1. Di konsol Google Cloud , buka halaman Logs Explorer:

    Buka Logs Explorer

    Jika Anda menggunakan kotak penelusuran untuk menemukan halaman ini, pilih hasil yang subjudulnya adalah Logging.

  2. Untuk melihat semua log pengontrol di cluster bootstrap, jalankan kueri berikut di editor kueri:

    "ADMIN_CLUSTER_NAME"
    resource.type="k8s_container"
    resource.labels.cluster_name="gkectl-bootstrap-cluster"
    
  3. Untuk melihat log pod tertentu, edit kueri untuk menyertakan nama pod tersebut:

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

Menggunakan Cloud Monitoring

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

Anda dapat memilih dari lebih dari 1.500 metrik 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 Resources > Metrics Explorer.

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

Melihat data pemantauan tingkat armada

Untuk melihat keseluruhan pemanfaatan resource armada Anda menggunakan data Cloud Monitoring, termasuk cluster Google Distributed Cloud, Anda dapat menggunakan ringkasan Google Kubernetes Engine di konsol Google Cloud . Lihat Mengelola cluster dari konsol Google Cloud untuk mengetahui informasi selengkapnya.

Batas kuota Cloud Monitoring default

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

Menggunakan Managed Service for Prometheus

Google Cloud Managed Service for Prometheus adalah bagian dari Cloud Monitoring dan tersedia secara default. Manfaat Managed Service for Prometheus meliputi hal-hal berikut:

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

Mulai dari rilis Google Distributed Cloud 1.30.0-gke.1930, Managed Service for Prometheus selalu diaktifkan. Pada versi sebelumnya, Anda dapat mengedit resource Stackdriver, stackdriver, untuk mengaktifkan atau menonaktifkan Managed Service for Prometheus. Untuk menonaktifkan Managed Service for Prometheus untuk versi cluster sebelum 1.30.0-gke.1930, tetapkan spec.featureGates.enableGMPForSystemMetrics di resource stackdriver ke false.

Melihat data metrik

Jika Managed Service for Prometheus diaktifkan, metrik untuk komponen berikut memiliki format yang berbeda untuk cara penyimpanan dan kuerinya di Cloud Monitoring:

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

Dalam format baru, Anda dapat membuat kueri metrik sebelumnya menggunakan Prometheus Query Language (PromQL).

Contoh PromQL:

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

Mengonfigurasi dasbor Grafana dengan Managed Service for Prometheus

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

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

  1. Download file .json contoh:

    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 yang mengarah ke layanan frontend Prometheus.

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

    Membuka impor dasbor 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 dan UID dasbor sebelum mengimpor.

    Mengimpor dasbor di Grafana.

  5. Dasbor yang diimpor akan berhasil dimuat jika Google Distributed Cloud dan sumber data Anda 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 Managed Service for Prometheus, lihat artikel berikut:

Menggunakan Prometheus dan Grafana

Mulai versi 1.16, Prometheus dan Grafana tidak tersedia di cluster yang baru dibuat. Sebaiknya gunakan Managed Service for Prometheus sebagai pengganti pemantauan dalam cluster.

Jika Anda mengupgrade cluster 1.15 yang telah mengaktifkan Prometheus dan Grafana ke 1.16, Prometheus dan Grafana akan terus berfungsi seperti biasa, tetapi tidak akan diupdate atau diberi patch keamanan.

Jika Anda ingin menghapus semua resource Prometheus dan Grafana setelah mengupgrade ke 1.16, jalankan perintah berikut:

kubectl --kubeconfig KUBECONFIG delete -n kube-system \
    statefulsets,services,configmaps,secrets,serviceaccounts,clusterroles,clusterrolebindings,certificates,deployments \
    -l addons.gke.io/legacy-pg=true

Sebagai alternatif untuk menggunakan komponen Prometheus dan Grafana yang disertakan dalam Google Distributed Cloud versi sebelumnya, Anda dapat beralih ke versi komunitas open source Prometheus dan Grafana.

Masalah umum

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

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

Mengakses metrik pemantauan dari dasbor Grafana

Grafana menampilkan metrik yang dikumpulkan dari cluster 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 port localhost TCP 3000. Teruskan port lokal ke port 3000 di Pod, sehingga Anda dapat melihat dasbor Grafana dari browser web.

    Misalnya, anggap 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 lain, klik menu drop-down Beranda di sudut kiri atas halaman.

Untuk contoh penggunaan Grafana, lihat Membuat dasbor Grafana.

Mengakses pemberitahuan

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

  1. Container di Pod alertmanager-0 memproses 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 harus melakukannya 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, lakukan 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

Membuat dasbor Grafana

Anda telah men-deploy aplikasi yang mengekspos metrik, memverifikasi bahwa metrik diekspos, dan memverifikasi bahwa Prometheus meng-scrape metrik. Sekarang Anda dapat menambahkan metrik tingkat aplikasi ke dasbor Grafana kustom.

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 sisi kanan, klik Dasbor baru.
  4. Dari bagian Panel baru, klik Grafik. Dasbor grafik kosong akan muncul.
  5. Klik Judul panel, lalu klik Edit. Panel Grafik bawah akan terbuka ke tab Metrik.
  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 sudut kanan atas layar. Dasbor Anda akan ditampilkan.
  8. Untuk menyimpan dasbor, klik Simpan dasbor di pojok kanan atas layar. Pilih nama untuk dasbor, lalu klik Simpan.

Menonaktifkan Prometheus dan Grafana

Mulai dari versi 1.16, Prometheus dan Grafana tidak lagi dikontrol oleh kolom enablePrometheus dalam objek monitoring-sample. Lihat Menggunakan Prometheus dan Grafana untuk mengetahui detailnya.

Contoh: Menambahkan metrik tingkat aplikasi ke dasbor Grafana

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

  • Deploy aplikasi contoh yang mengekspos metrik bernama foo.
  • Pastikan Prometheus mengekspos dan meng-scrape metrik.
  • Buat dasbor Grafana kustom.

Men-deploy aplikasi contoh

Contoh aplikasi berjalan dalam satu Pod. Container Pod mengekspos metrik, foo, dengan nilai konstan 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

Verifikasi bahwa metrik diekspos dan di-scrape

  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 memverifikasi bahwa aplikasi mengekspos metrik, jalankan perintah berikut:

    curl localhost:50002/metrics | grep foo
    

    Perintah ini menampilkan output berikut:

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

    kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] port-forward prometheus-0 50003:9090
  4. Untuk memverifikasi bahwa Prometheus meng-scrape metrik, buka http://localhost:50003/targets, yang akan membawa Anda ke Pod prometheus-0 dalam 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, Google Distributed Cloud akan otomatis membuat resource kustom Stackdriver. Anda dapat mengedit spesifikasi di resource kustom untuk mengganti nilai default untuk permintaan dan batas CPU dan memori untuk komponen Stackdriver, dan Anda dapat mengganti ukuran penyimpanan dan class penyimpanan default secara terpisah.

Mengganti nilai default untuk permintaan dan batas CPU dan 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. Cluster 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 menggantikan 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 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:
        gke-metrics-agent/gke-metrics-agent:
          requests:
            cpu: 110m
            memory: 240Mi
          limits:
            cpu: 200m
            memory: 4.5Gi

  1. Simpan perubahan dan keluar dari editor command line.

  2. Periksa kondisi Pod Anda:

    kubectl --kubeconfig=KUBECONFIG -n kube-system get pods | grep gke-metrics-agent

    Misalnya, Pod yang sehat terlihat seperti berikut:

    gke-metrics-agent-4th8r                                1/1     Running   0          5d19h
  3. 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:         gke-metrics-agent-4th8r
      Namespace:    kube-system
      ...
      Containers:
        gke-metrics-agent:
          Limits:
            cpu: 200m
            memory: 4.5Gi
          Requests:
            cpu: 110m
            memory: 240Mi
          ...
          

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 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 statefulset stackdriver-prometheus-k8s 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, lalu keluar dari editor command line.

  4. Periksa kondisi Pod Anda:

    kubectl --kubeconfig=KUBECONFIG -n kube-system get pods | grep stackdriver
    Misalnya, Pod yang berfungsi dengan baik 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 membuat StorageClass yang ingin digunakan terlebih dahulu.

Untuk mengganti kelas penyimpanan default untuk volume persisten yang diklaim oleh komponen logging dan pemantauan:

  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. Cluster ini dapat berupa cluster admin atau cluster pengguna.

  2. Tambahkan kolom storageClassName di bagian spec:

    storageClassName: STORAGECLASS_NAME

    Perhatikan bahwa kolom storageClassName menggantikan kelas penyimpanan default yang ada, dan berlaku untuk semua komponen logging dan pemantauan dengan volume persisten yang diklaim. Contoh file 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. Periksa kondisi Pod Anda:

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

    Misalnya, Pod yang sehat terlihat seperti berikut:

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

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

    Misalnya, menggunakan set berstatus 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]          

Menonaktifkan metrik yang dioptimalkan

Secara default, agen metrik yang berjalan di cluster mengumpulkan dan melaporkan serangkaian metrik yang dioptimalkan untuk container, kubelet, dan kube-state-metrics ke Stackdriver. Jika Anda memerlukan metrik tambahan, sebaiknya cari penggantinya dari daftar metrik Google Distributed Cloud.

Berikut beberapa contoh penggantian 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-metrics yang dioptimalkan (tidak direkomendasikan), 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. Cluster 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, lalu keluar dari editor command line.

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. Saat cluster diupgrade, misalnya, data penyimpanan dapat rusak saat pod di statefulset/prometheus-stackdriver-k8s dimulai ulang.

Secara khusus, pod pemantauan stackdriver-prometheus-k8s-0 dapat terjebak dalam loop saat data yang rusak mencegah prometheus-stackdriver-sidecar menulis 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 rekonsiliasi pemantauan:

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

  2. Hapus workload pipeline pemantauan:

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

  3. Hapus PersistentVolumeClaims (PVC) pipeline pemantauan:

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

  4. Mulai ulang pemantauan cluster. Lakukan penskalaan 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