Kumpulan tutorial ini ditujukan untuk admin IT dan Operator yang ingin untuk men-deploy, menjalankan, dan mengelola lingkungan aplikasi modern yang berjalan Google Kubernetes Engine (GKE). Saat Anda terus mempelajari rangkaian tutorial ini, Anda pelajari cara mengonfigurasi pemantauan dan pemberitahuan, menskalakan workload, dan menyimulasikan gagal, semuanya menggunakan aplikasi microservice contoh Cymbal Bank:
- Membuat cluster dan men-deploy aplikasi contoh
- Memantau dengan Google Cloud Managed Service for Prometheus (tutorial ini)
- Menskalakan workload
- Menyimulasikan kegagalan
Ringkasan dan tujuan
Aplikasi contoh Cymbal Bank yang digunakan dalam rangkaian tutorial ini terdiri dari jumlah microservice yang semuanya dijalankan di cluster GKE. Permasalahan menggunakan salah satu layanan tersebut dapat menghasilkan pengalaman buruk bagi nasabah, seperti tidak dapat mengakses aplikasi bank. Mempelajari tentang masalah dengan layanan sesegera mungkin berarti Anda dapat dengan cepat mulai memecahkan dan menyelesaikan masalah.
Dalam tutorial ini, Anda akan mempelajari cara memantau workload di GKE menggunakan Google Cloud Managed Service for Prometheus dan Cloud Monitoring. Anda akan mempelajari cara untuk menyelesaikan tugas berikut:
Buat webhook Slack untuk Alertmanager.
Mengonfigurasi Prometheus untuk memantau status sampel berbasis microservice aplikasi.
Simulasikan pemadaman dan tinjau pemberitahuan yang dikirim menggunakan webhook Slack.
Biaya
Mengaktifkan GKE dan men-deploy contoh Cymbal Bank untuk rangkaian tutorial ini berarti Anda mengeluarkan biaya per-cluster biaya untuk GKE di Google Cloud seperti yang tercantum di Halaman harga hingga Anda menonaktifkan GKE atau menghapus project.
Anda juga bertanggung jawab atas biaya Google Cloud lainnya yang timbul saat menjalankan Contoh aplikasi Cymbal Bank, seperti biaya untuk VM Compute Engine dan dan konfigurasi di Cloud Monitoring.
Sebelum memulai
Untuk mempelajari cara memantau workload, Anda harus menyelesaikan tutorial pertama untuk membuat cluster GKE yang menggunakan Autopilot dan men-deploy contoh aplikasi berbasis microservice contoh Cymbal Bank.
Sebaiknya Anda menyelesaikan rangkaian tutorial ini untuk aplikasi yang skalabel secara berurutan. Saat Anda terus mempelajari serangkaian tutorial, Anda mempelajari keterampilan baru dan menggunakan produk dan layanan Google Cloud tambahan.
Untuk menunjukkan contoh bagaimana cluster GKE Autopilot dapat menggunakan Google Cloud Managed Service for Prometheus untuk membuat pesan ke platform ini, tutorial ini menggunakan Slack. Dalam deployment produksi Anda sendiri, Anda dapat menggunakan alat komunikasi pilihan organisasi Anda untuk memproses dan menyampaikan saat cluster GKE mengalami masalah.
Bergabung ke ruang kerja Slack, baik dengan mendaftar melalui email Anda atau dengan menggunakan undangan yang dikirim oleh Admin Google Workspace.
Membuat aplikasi Slack
Bagian penting dari pengaturan pemantauan adalah memastikan bahwa Anda diberi tahu saat peristiwa yang dapat ditindaklanjuti seperti pemadaman layanan. Pola yang umum adalah mengirim notifikasi ke alat komunikasi seperti Slack, yang Anda gunakan dalam tutorial ini. Slack menyediakan fitur webhook yang memungkinkan aplikasi, seperti deployment produksi, menghasilkan pesan. Anda dapat menggunakan alat komunikasi lain di organisasi Anda untuk memproses dan mengirimkan pesan saat cluster GKE mengalami masalah.
Cluster GKE yang menggunakan Autopilot menyertakan instance Google Cloud Managed Service for Prometheus. {i>Instance <i}ini dapat menghasilkan pemberitahuan saat sesuatu pada aplikasi Anda. Pemberitahuan ini kemudian dapat menggunakan paket webhook untuk mengirim pesan ke ruang kerja Slack agar Anda menerima prompt notifikasi saat terjadi masalah.
Untuk menyiapkan notifikasi Slack berdasarkan pemberitahuan yang dibuat oleh Prometheus, Anda harus membuat aplikasi Slack, mengaktifkan Webhook Masuk untuk aplikasi, dan menginstal aplikasi ke ruang kerja Slack.
Login ke Slack menggunakan nama ruang kerja Anda dan kredensial akun Slack Anda.
-
- Dalam dialog Create an app(Buat aplikasi), klik From scratch (Mulai dari langkah awal).
- Tentukan App Name dan pilih ruang kerja Slack Anda.
- Klik Create App.
- Di bagian Tambahkan fitur dan fungsi, klik Webhook Masuk.
- Klik tombol Aktifkan Webhook Masuk.
- Di bagian URL webhook untuk Ruang Kerja Anda, klik Tambahkan yang Baru Webhook ke Workspace.
- Pada halaman otorisasi yang terbuka, pilih saluran yang akan diterima notifikasi.
- Klik Izinkan.
- Webhook untuk aplikasi Slack ditampilkan di URL Webhook untuk Ruang Kerja Anda. Simpan URL untuk nanti.
Mengonfigurasi Alertmanager
Di Prometheus, Alertmanager memproses peristiwa pemantauan yang buat. Pengelola pemberitahuan dapat melewati peristiwa duplikat, peristiwa terkait grup, dan mengirim notifikasi, seperti menggunakan webhook Slack. Bagian ini menunjukkan cara mengonfigurasi Alertmanager untuk menggunakan webhook Slack baru Anda. Menentukan cara yang Anda inginkan Pengelola peringatan untuk memproses peristiwa yang akan dikirim dibahas di bagian berikutnya dalam tutorial, Mengonfigurasi Prometheus.
Untuk mengonfigurasi Alertmanager agar dapat menggunakan webhook Slack Anda, selesaikan langkah berikut langkah:
Ubah direktori ke repositori Git yang menyertakan semua contoh manifes untuk Cymbal Bank dari tutorial sebelumnya:
cd ~/bank-of-anthos/
Jika perlu, ubah lokasi direktori ke tempat Anda sebelumnya meng-clone repositori resource.
Perbarui manifes YAML sampel Alertmanager dengan URL webhook dari Aplikasi Slack:
sed -i "s@SLACK_WEBHOOK_URL@SLACK_WEBHOOK_URL@g" "extras/prometheus/gmp/alertmanager.yaml"
Ganti
SLACK_WEBHOOK_URL
dengan URL webhook dari bagian sebelumnya.Untuk menggunakan URL webhook Slack unik Anda secara dinamis tanpa mengubah kode aplikasi, Anda dapat menggunakan Secret Kubernetes. Kode aplikasi membaca nilai Secret ini. Dalam aplikasi yang lebih kompleks, kemampuan ini memungkinkan Anda mengubah, atau merotasi, nilai untuk alasan keamanan atau kepatuhan.
Membuat rahasia Kubernetes untuk Alertmanager menggunakan contoh manifes YAML yang berisi URL webhook Slack:
kubectl create secret generic alertmanager \ -n gmp-public \ --from-file=extras/prometheus/gmp/alertmanager.yaml
Prometheus dapat menggunakan pengekspor untuk mendapatkan metrik dari aplikasi tanpa kode perubahan. Pengekspor {i>blackbox<i} Prometheus memungkinkan Anda menyelidiki titik akhir seperti HTTP atau HTTPS. Pengekspor ini berfungsi dengan baik jika Anda tidak ingin, atau tidak dapat, mengekspos cara kerja internal aplikasi Anda ke Prometheus. Prometheus pengekspor {i>blackbox<i} dapat bekerja tanpa mengubah kode aplikasi Anda untuk memaparkan metrik ke Prometheus.
Deploy pengekspor blackbox Prometheus ke cluster Anda:
kubectl apply -f extras/prometheus/gmp/blackbox-exporter.yaml
Mengonfigurasi Prometheus
Setelah mengonfigurasi Alertmanager untuk menggunakan webhook Slack, Anda harus memberi tahu Prometheus apa yang harus dipantau di Cymbal Bank, dan jenis peristiwa yang ingin Pengelola pemberitahuan untuk memberi tahu Anda tentang penggunaan webhook Slack.
Dalam aplikasi contoh Cymbal Bank yang Anda gunakan dalam tutorial ini, ada berbagai microservice yang berjalan di cluster GKE. Satu masalah Anda mungkin ingin segera mengetahuinya adalah jika salah satu dari Layanan bank berhenti merespons permintaan secara normal, yang kemungkinan berarti pelanggan Anda tidak dapat mengakses aplikasi. Anda dapat mengkonfigurasi Prometheus untuk menanggapi acara berdasarkan kebijakan organisasi.
Pengintai
Anda dapat mengonfigurasi pemeriksaan Prometheus untuk sumber daya yang ingin Anda pantau. Satelit ini bisa menghasilkan peringatan berdasarkan respons yang diterima satelit. Pada aplikasi contoh Cymbal Bank, Anda bisa menggunakan pemeriksaan HTTP Kode respons tingkat 200 dari Layanan. Respons tingkat HTTP 200 menunjukkan bahwa Layanan berjalan dengan benar dan dapat merespons permintaan. Jika ada dan penyelidikan tidak menerima respons yang diharapkan, Anda dapat Aturan Prometheus yang menghasilkan pemberitahuan bagi Alertmanager untuk diproses dan dijalankan tindakan tambahan.
Buat beberapa penyelidikan Prometheus untuk memantau status HTTP berbagai microservice aplikasi contoh Cymbal Bank. Tinjau hal berikut contoh manifes:
Seperti yang ditunjukkan dalam file manifes ini, praktik terbaiknya adalah setiap
PodMonitoring
Pemeriksaan keaktifan Prometheus memantau setiap Deployment secara terpisah.Untuk membuat pemeriksaan keaktifan Prometheus, terapkan manifes ke :
kubectl apply -f extras/prometheus/gmp/probes.yaml
Aturan
Prometheus perlu tahu apa yang ingin Anda lakukan berdasarkan respons yang pemeriksaan yang Anda buat pada langkah sebelumnya akan diterima. Anda mendefinisikan respons ini menggunakan Aturan Prometheus.
Dalam tutorial ini, Anda membuat aturan Prometheus untuk menghasilkan pemberitahuan tergantung pada respons terhadap pemeriksaan keaktifan. Alertmanager kemudian memproses {i>output<i} dari aturan ini untuk menghasilkan notifikasi menggunakan webhook Slack.
Buat aturan yang menghasilkan peristiwa berdasarkan respons terhadap keaktifan probe. Tinjau contoh manifes berikut:
Manifes ini menjelaskan
PrometheusRule
dan mencakup kolom berikut:spec.groups.[*].name
: nama grup aturan.spec.groups.[*].interval
: seberapa sering aturan dalam grup dievaluasi.spec.groups.[*].rules[*].alert
: nama pemberitahuan.spec.groups.[*].rules[*].expr
: ekspresi PromQL yang akan dievaluasi.spec.groups.[*].rules[*].for
: jumlah waktu yang harus ditampilkan melalui pemberitahuan sebelum dianggap diaktifkan.spec.groups.[*].rules[*].annotations
: daftar anotasi yang akan ditambahkan ke setiap pemberitahuan. Ini hanya valid untuk aturan pemberitahuan.spec.groups.[*].rules[*].labels
: label yang akan ditambahkan atau ditimpa.
Untuk membuat aturan, terapkan manifes ke cluster Anda:
kubectl apply -f extras/prometheus/gmp/rules.yaml
Menyimulasikan pemadaman layanan
Untuk memastikan bahwa pemeriksaan Prometheus, aturan, dan konfigurasi Alertmanager sudah benar, Anda harus menguji apakah pemberitahuan dan notifikasi dikirim ketika ada atau masalah. Jika Anda tidak menguji alur ini, Anda mungkin tidak menyadari adanya pemadaman layanan layanan produksi ketika terjadi kesalahan.
Untuk menyimulasikan pemadaman salah satu microservice, skalakan
contacts
Deployment ke nol. Tanpa instance Layanan, Cymbal Bank aplikasi contoh tidak dapat membaca informasi kontak untuk pelanggan:kubectl scale deployment contacts --replicas 0
GKE mungkin memerlukan waktu hingga 5 menit untuk memperkecil skala Deployment.
Periksa status Deployment pada cluster Anda dan pastikan bahwa
contacts
Deployment menurunkan skala dengan benar:kubectl get deployments
Dalam contoh output berikut, Deployment
contacts
berhasil diperkecil menjadi0
instance:NAME READY UP-TO-DATE AVAILABLE AGE balancereader 1/1 1 1 17m blackbox-exporter 1/1 1 1 5m7s contacts 0/0 0 0 17m frontend 1/1 1 1 17m ledgerwriter 1/1 1 1 17m loadgenerator 1/1 1 1 17m transactionhistory 1/1 1 1 17m userservice 1/1 1 1 17m
Setelah Deployment
contacts
diperkecil hingga nol, Prometheus probe melaporkan kode error HTTP. Kesalahan HTTP ini menghasilkan peringatan untuk pengelola pemberitahuan untuk memprosesnya.Periksa saluran Workspace Slack Anda untuk melihat pesan notifikasi pemadaman layanan teks yang mirip dengan contoh berikut:
[FIRING:1] ContactsUnavailable Severity: Warning :warning: Summary: Contacts Service is unavailable Namespace: default Check Contacts pods and it's logs
Dalam skenario pemadaman layanan yang sebenarnya, setelah menerima notifikasi di Slack, Anda akan mulai memecahkan masalah dan memulihkan layanan. Untuk tutorial ini, simulasikan proses ini dan pulihkan Deployment
contacts
dengan memperkecil skala meningkatkan jumlah replika:kubectl scale deployment contacts --replicas 1
Diperlukan waktu hingga 5 menit untuk menskalakan Deployment dan untuk Prometheus untuk menerima respons HTTP 200. Anda memeriksa status Deployment menggunakan perintah
kubectl get deployments
.Ketika menerima respons yang responsif terhadap penyelidikan Prometheus, Alertmanager menghapus peristiwa. Anda akan melihat pesan notifikasi resolusi peringatan di saluran Workspace Slack Anda mirip dengan contoh berikut:
[RESOLVED] ContactsUnavailable Severity: Warning :warning: Summary: Contacts Service is unavailable Namespace: default Check Contacts pods and it's logs
Pembersihan
Sebaiknya Anda menyelesaikan rangkaian tutorial ini secara berurutan untuk Cymbal Bank. Saat Anda terus mempelajari serangkaian tutorial, Anda mempelajari keterampilan baru dan menggunakan produk dan layanan Google Cloud tambahan.
Jika Anda ingin istirahat sebelum melanjutkan ke tutorial berikutnya dan menghindari menimbulkan biaya ke akun Google Cloud Anda untuk resource yang digunakan dalam menghapus project yang Anda buat.
- Di konsol Google Cloud, buka halaman Manage resource.
- Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
Langkah selanjutnya
Pelajari cara menskalakan deployment Anda di GKE di tutorial berikutnya.