Membuat kebijakan pemberitahuan

Halaman ini menunjukkan cara membuat kebijakan pemberitahuan berbasis metrik untuk GKE di cluster Bare Metal. Kami telah menyediakan beberapa contoh yang dapat didownload untuk membantu Anda menyiapkan kebijakan pemberitahuan untuk skenario umum. Untuk mengetahui informasi selengkapnya tentang kebijakan pemberitahuan berbasis metrik, lihat Membuat kebijakan pemberitahuan batas metrik di dokumentasi Kemampuan observasi Google Cloud.

Sebelum memulai

Anda harus memiliki izin berikut untuk membuat kebijakan pemberitahuan:

  • monitoring.alertPolicies.create
  • monitoring.alertPolicies.delete
  • monitoring.alertPolicies.update

Anda memiliki izin ini jika memiliki salah satu peran berikut:

  • monitoring.alertPolicyEditor
  • monitoring.editor
  • Editor Project
  • Pemilik Project

Jika ingin membuat kebijakan pemberitahuan berbasis log dengan menggunakan Google Cloud CLI, Anda juga harus memiliki peran serviceusage.serviceUsageConsumer. Untuk mengetahui petunjuk cara menyiapkan kebijakan pemberitahuan berbasis log, lihat Mengonfigurasi pemberitahuan berbasis log dalam dokumentasi Kemampuan observasi Google Cloud.

Untuk memeriksa peran Anda, buka halaman IAM di Konsol Google Cloud.

Membuat contoh kebijakan: Server API tidak tersedia

Dalam latihan ini, Anda akan membuat kebijakan pemberitahuan untuk server Kubernetes API cluster. Dengan menerapkan kebijakan ini, Anda dapat mengatur agar diberi tahu setiap kali server API cluster tidak tersedia.

  1. Download file konfigurasi kebijakan: apiserver-unavailable.json

  2. Buat kebijakan:

    gcloud alpha monitoring policies create --policy-from-file=POLICY_CONFIG
    

    Ganti POLICY_CONFIG dengan jalur file konfigurasi yang baru saja Anda download.

  3. Melihat kebijakan pemberitahuan Anda:

    Konsol

    1. Di konsol Google Cloud, buka halaman Monitoring.

      Buka Monitoring

    2. Di sebelah kiri, pilih Alerting.

    3. Di bagian Kebijakan, Anda dapat melihat daftar kebijakan pemberitahuan.

      Dalam daftar, pilih Anthos cluster API server unavailable (critical) untuk melihat detail tentang kebijakan baru Anda. Di bagian Kondisi, Anda dapat melihat deskripsi kebijakan. Contoh:

      Policy violates when ANY condition is met
      Anthos cluster API server uptime is absent for 5m
      

    gcloud

    gcloud alpha monitoring policies list
    

    Output menunjukkan informasi mendetail tentang kebijakan. Contoh:

    combiner: OR
    conditions:
    - conditionAbsent:
        aggregations:
        - alignmentPeriod: 60s
          crossSeriesReducer: REDUCE_MEAN
          groupByFields:
          - resource.label.project_id
          - resource.label.location
          - resource.label.cluster_name
          - resource.label.namespace_name
          - resource.label.container_name
          - resource.label.pod_name
          perSeriesAligner: ALIGN_MAX
        duration: 300s
        filter: resource.type = "k8s_container" AND metric.type = "kubernetes.io/anthos/container/uptime"
          AND resource.label."container_name"=monitoring.regex.full_match("kube-apiserver")
        trigger:
          count: 1
      displayName: Anthos cluster API server uptime is absent for 5m
      name: projects/…/alertPolicies/…/conditions/…
    displayName: Anthos cluster API server unavailable (critical)
    enabled: true
    mutationRecord:
      mutateTime: …
      mutatedBy: …
    name: projects/…/alertPolicies/…
    

Membuat kebijakan pemberitahuan tambahan

Bagian ini memberikan deskripsi dan file konfigurasi untuk serangkaian kebijakan pemberitahuan yang direkomendasikan.

Untuk membuat kebijakan, ikuti langkah-langkah yang sama dengan yang Anda gunakan dalam latihan sebelumnya:

  1. Untuk mendownload file konfigurasi, klik link di kolom sebelah kanan.

  2. Secara opsional, sesuaikan kondisi agar lebih sesuai dengan kebutuhan spesifik Anda. Misalnya, Anda dapat menambahkan filter lain untuk subkumpulan cluster, atau menyesuaikan nilai batas untuk menyeimbangkan antara derau dan kekritisan.

  3. Untuk membuat kebijakan, jalankan gcloud alpha monitoring policies create.

Anda dapat mendownload dan menginstal semua contoh kebijakan pemberitahuan yang dijelaskan dalam dokumen ini dengan skrip berikut:

# 1. Create a directory named alert_samples:

mkdir alert_samples && cd alert_samples
declare -a alerts=("apiserver-unavailable.json" "controller-manager-unavailable.json" "scheduler-unavailable.json" \
  "pod-crash-looping.json" "pod-not-ready-1h.json" "container-cpu-usage-high-reaching-limit.json" \
  "container-memory-usage-high-reaching-limit.json" "persistent-volume-usage-high.json" "node-cpu-usage-high.json" \
  "node-disk-usage-high.json" "node-memory-usage-high.json" "node-not-ready-1h.json" "apiserver-error-ratio-high.json" \
  "etcd-leader-changes-or-proposal-failures-frequent.json" "etcd-server-not-in-quorum.yaml" "etcd-storage-usage-high.json")

# 2. Download all alert samples into the alert_samples/ directory:

for x in "${alerts[@]}"
do
  wget https://cloud.google.com/anthos/clusters/docs/bare-metal/latest/samples/${x}
done

# 3. (optional) Uncomment and provide your project ID to set the default project
# for gcloud commands:

# gcloud config set project <PROJECT_ID>

# 4. Create alert policies for each of the downloaded samples:

for x in "${alerts[@]}"
do
  gcloud alpha monitoring policies create --policy-from-file=${x}
done

Kontrol ketersediaan komponen bidang

Nama notifikasi Deskripsi Definisi kebijakan pemberitahuan di Cloud Monitoring
Server API tidak tersedia (penting) Metrik waktu beroperasi server API tidak tersedia apiserver-unavailable.json
Penjadwal tidak tersedia (penting) Metrik waktu beroperasi penjadwal tidak tersedia scheduler-unavailable.json
Pengelola pengontrol tidak tersedia (penting) Metrik waktu beroperasi pengelola pengontrol tidak tersedia controller-manager-unavailable.json

Sistem Kubernetes

Nama notifikasi Deskripsi Definisi kebijakan pemberitahuan di Cloud Monitoring
Loop error pod (peringatan) Pod terus dimulai ulang dan mungkin dalam status loop error pod-crash-looping.json
Pod tidak siap selama lebih dari satu jam (penting) Pod dalam status tidak siap selama lebih dari satu jam pod-not-ready-1h.json
Penggunaan CPU container melebihi 80 persen (peringatan) Penggunaan CPU container melebihi batas 80% container-cpu-usage-high-reaching-limit.json
Penggunaan memori container melebihi 85 persen (peringatan) Penggunaan memori container melebihi 85% dari batas container-memory-usage-high-reaching-limit.json
Penggunaan volume persisten yang tinggi (penting) Volume persisten yang diklaim memiliki ruang kosong kurang dari 3 persen persistent-volume-usage-high.json
Penggunaan CPU node melebihi 80 persen (peringatan) Penggunaan CPU node lebih dari 80% dari total yang dapat dialokasikan untuk 5 menit node-cpu-usage-high.json
Penggunaan disk node melebihi 85 persen (peringatan) Kurang dari 15 persen gratis per titik pemasangan disk selama 10 menit node-disk-usage-high.json
Penggunaan memori node melebihi 80 persen (peringatan) Penggunaan memori node lebih dari 80% dari total yang dapat dialokasikan untuk 5 menit node-memory-usage-high.json
Node tidak siap selama lebih dari satu jam (penting) Node dalam status tidak siap selama lebih dari satu jam node-not-ready-1h.json

Performa Kubernetes

Nama notifikasi Deskripsi Definisi kebijakan pemberitahuan di Cloud Monitoring
Rasio error server API melebihi 20 persen (kritis) Server API memberikan error 5xx atau 429 pada lebih dari 20% semua permintaan per kata kerja selama 15 menit apiserver-error-ratio-high.json
Perubahan pemimpin ETCD atau kegagalan proposal terlalu sering (peringatan) Perubahan pemimpin etcd atau kegagalan proposal terlalu sering terjadi etcd-leader-changes-or-proposal-failures-frequent.json
Server ETCD tidak ada di kuorum (kritis) Tidak ada proposal server etcd yang dilakukan selama 5 menit, sehingga kuorum mungkin hilang etcd-server-not-in-quorum.yaml
Penyimpanan ETCD melebihi batas 90 persen (peringatan) Penggunaan penyimpanan etcd melebihi 90% batas etcd-storage-usage-high.json

Kebijakan Pemberitahuan dengan PromQL

Kueri dalam kebijakan pemberitahuan juga dapat dinyatakan dalam PromQL, bukan MQL. Misalnya, versi PromQL dari kebijakan API server error ratio exceeds 20 percent (critical) dapat didownload: apiserver-error-ratio-high-promql.json.

Untuk mengetahui informasi selengkapnya, baca dokumentasi Menggunakan Google Cloud Managed Service for Prometheus untuk GKE pada Bare Metal dan dokumentasi Kebijakan pemberitahuan dengan PromQL untuk Cloud Monitoring.

Mendapatkan notifikasi

Setelah membuat kebijakan pemberitahuan, Anda dapat menentukan satu atau beberapa saluran notifikasi untuk kebijakan tersebut. Ada beberapa jenis saluran notifikasi. Misalnya, Anda dapat diberi tahu melalui email, saluran Slack, atau aplikasi seluler. Anda dapat memilih saluran yang sesuai dengan kebutuhan.

Untuk petunjuk mengenai cara mengonfigurasi saluran notifikasi, lihat Mengelola saluran notifikasi.