Halaman ini menunjukkan cara membuat kebijakan pemberitahuan berbasis metrik untuk cluster Google Distributed Cloud. Kami telah menyediakan beberapa contoh yang dapat diunduh untuk membantu Anda menyiapkan kebijakan pemberitahuan untuk skenario umum. Untuk informasi selengkapnya tentang kebijakan pemberitahuan berbasis metrik, lihat Membuat kebijakan pemberitahuan batas metrik dalam dokumentasi Google Cloud Observability.
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 hal berikut peran:
monitoring.alertPolicyEditor
monitoring.editor
- Editor Project
- Pemilik Project
Jika Anda ingin membuat kebijakan pemberitahuan berbasis log dengan menggunakan
Google Cloud CLI, Anda juga harus memiliki serviceusage.serviceUsageConsumer
peran. Untuk mengetahui petunjuk cara menyiapkan kebijakan pemberitahuan berbasis log, lihat
Mengonfigurasi pemberitahuan berbasis log
dalam dokumentasi Google Cloud Observability.
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 klaster. Dengan menerapkan kebijakan ini, Anda dapat mengatur untuk diberi tahu saat server API cluster tidak tersedia.
Download file konfigurasi kebijakan: apiserver-unavailable.json
Buat kebijakan:
gcloud alpha monitoring policies create --policy-from-file=POLICY_CONFIG
Ganti POLICY_CONFIG dengan jalur file konfigurasi yang baru saja Anda diunduh.
Lihat kebijakan pemberitahuan Anda:
Konsol
Di konsol Google Cloud, buka halaman Monitoring.
Di sebelah kiri, pilih Alerting.
Di bagian Kebijakan, Anda dapat melihat daftar kebijakan pemberitahuan.
Dalam daftar, pilih Anthos cluster API server tidak tersedia (penting) untuk melihat detail tentang kebijakan baru Anda. Di Bawah 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 tersebut. 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 rekomendasi kebijakan pemberitahuan.
Untuk membuat kebijakan, ikuti langkah-langkah yang sama seperti yang Anda gunakan pada langkah sebelumnya latihan:
Untuk mengunduh file konfigurasi, klik tautan di kolom sebelah kanan.
Atau, sesuaikan kondisi agar lebih sesuai dengan kebutuhan spesifik Anda, untuk misalnya, Anda dapat menambahkan filter tambahan untuk subkumpulan cluster, atau menyesuaikan nilai minimum untuk menyeimbangkan antara derau dan kekritisan.
Untuk membuat kebijakan, jalankan
gcloud alpha monitoring policies create
.
Anda dapat mendownload dan menginstal semua contoh kebijakan pemberitahuan yang dijelaskan di dokumen 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/kubernetes-engine/distributed-cloud/bare-metal/docs/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
Ketersediaan komponen bidang kontrol
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 Scheduler 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 |
---|---|---|
Pengulangan error pod (peringatan) | Pod terus dimulai ulang dan mungkin dalam status error loop | pod-crash-looping.json |
Pod belum siap selama lebih dari satu jam (penting) | Pod dalam status belum siap selama lebih dari satu jam | pod-not-ready-1h.json |
Penggunaan CPU container melebihi 80 persen (peringatan) | Penggunaan CPU container melebihi 80% dari batas | 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 selama 5m | node-cpu-usage-high.json |
Penggunaan disk node melebihi 85 persen (peringatan) | Kurang dari 15 persen bebas per mountpoint 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 selama 5 menit | node-memory-usage-high.json |
Node belum siap selama lebih dari satu jam (penting) | Node dalam status belum 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 (penting) | Server API memberikan error 5xx atau 429 pada lebih dari 20% dari semua permintaan per kata kerja selama 15m | 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 sesuai kuorum (penting) | Tidak ada proposal server etcd yang berkomitmen selama 5 menit, sehingga proposal mungkin tidak memiliki kuorum |
etcd-server-not-in-quorum.yaml |
Penyimpanan ETCD melebihi batas 90 persen (peringatan) | Penggunaan penyimpanan etcd melebihi 90% dari batas |
etcd-storage-usage-high.json |
Kebijakan Pemberitahuan dengan PromQL
Kueri dalam kebijakan pemberitahuan juga dapat dinyatakan dalam PromQL, bukan MQL.
Misalnya, versi PromQL kebijakan API server error ratio exceeds 20
percent (critical)
tersedia untuk didownload: apiserver-error-ratio-high-promql.json.
Untuk informasi selengkapnya, lihat Menggunakan Managed Service for Prometheus untuk dokumentasi Google Distributed Cloud dan Kebijakan pemberitahuan dengan PromQL untuk dokumentasi Cloud Monitoring.
Mendapatkan notifikasi
Setelah membuat kebijakan pemberitahuan, Anda dapat menetapkan satu atau beberapa notifikasi saluran untuk kebijakan tersebut. Ada beberapa jenis saluran notifikasi. Misalnya, Anda dapat menerima notifikasi melalui email, saluran Slack, atau aplikasi seluler. Anda dapat memilih channel yang sesuai dengan kebutuhan.
Untuk petunjuk tentang cara mengonfigurasi saluran notifikasi, lihat Mengelola saluran notifikasi.