Kumpulan tutorial ini ditujukan untuk administrator dan Operator IT yang ingin men-deploy, menjalankan, dan mengelola lingkungan aplikasi modern yang berjalan di Google Kubernetes Engine (GKE). Saat Anda mengikuti kumpulan tutorial ini, Anda akan mempelajari cara mengonfigurasi pemantauan dan pemberitahuan, menskalakan workload, dan menyimulasikan kegagalan, 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
- Memusatkan manajemen perubahan
Ringkasan dan tujuan
Aplikasi contoh Cymbal Bank yang digunakan dalam kumpulan tutorial ini terdiri dari sejumlah microservice yang semuanya berjalan di cluster GKE. Masalah pada salah satu layanan ini dapat mengakibatkan pengalaman buruk bagi pelanggan bank, seperti tidak dapat mengakses aplikasi bank. Dengan mempelajari masalah pada layanan sesegera mungkin, Anda dapat segera mulai memecahkan masalah dan menyelesaikannya.
Dalam tutorial ini, Anda akan mempelajari cara memantau workload di cluster GKE menggunakan Google Cloud Managed Service for Prometheus dan Cloud Monitoring. Anda akan mempelajari cara menyelesaikan tugas berikut:
Membuat webhook Slack untuk Alertmanager.
Mengonfigurasi Prometheus untuk memantau status aplikasi berbasis microservice contoh.
Menyimulasikan pemadaman layanan dan meninjau pemberitahuan yang dikirim menggunakan webhook Slack.
Biaya
Mengaktifkan GKE dan men-deploy aplikasi contoh Cymbal Bank untuk rangkaian tutorial ini berarti Anda akan dikenai biaya per cluster untuk GKE on Google Cloud as yang tercantum di halaman Harga kami hingga Anda menonaktifkan GKE atau menghapus project.
Anda juga bertanggung jawab atas biayalain yang dikeluarkan saat menjalankan aplikasi contoh Cymbal Bank, seperti biaya untuk VM Compute Engine dan Cloud Monitoring. Google Cloud
Sebelum memulai
Untuk mempelajari cara memantau workload, Anda harus menyelesaikan tutorial pertama untuk membuat cluster GKE yang menggunakan Autopilot dan men-deploy aplikasi berbasis microservice contoh Cymbal Bank.
Sebaiknya selesaikan kumpulan tutorial ini untuk aplikasi yang dapat diskalakan secara berurutan. Saat Anda mengikuti kumpulan tutorial ini, Anda akan mempelajari keterampilan baru dan menggunakan tambahan Google Cloud produk serta layanan.
Untuk menunjukkan contoh cara cluster GKE Autopilot dapat menggunakan Google Cloud Managed Service for Prometheus untuk membuat pesan ke platform komunikasi, tutorial ini menggunakan Slack. Dalam deployment produksi Anda sendiri, Anda dapat menggunakan alat komunikasi pilihan organisasi Anda untuk memproses dan mengirim pesan saat cluster GKE Anda mengalami masalah.
Bergabung ke ruang kerja Slack, dengan mendaftar menggunakan email Anda atau menggunakan undangan yang dikirim oleh Admin Workspace.
Membuat aplikasi Slack
Bagian penting dari penyiapan pemantauan adalah memastikan Anda menerima notifikasi saat terjadi peristiwa yang dapat ditindaklanjuti seperti pemadaman layanan. Pola umum untuk hal ini adalah mengirim notifikasi ke alat komunikasi seperti Slack, yang akan Anda gunakan dalam tutorial ini. Slack menyediakan fitur webhook yang memungkinkan aplikasi eksternal, seperti deployment produksi Anda, membuat pesan. Anda dapat menggunakan alat komunikasi lain di organisasi Anda untuk memproses dan mengirim pesan saat cluster GKE Anda mengalami masalah.
Cluster GKE yang menggunakan Autopilot menyertakan instance Google Cloud Managed Service for Prometheus. Instance ini dapat membuat pemberitahuan saat terjadi sesuatu pada aplikasi Anda. Pemberitahuan ini kemudian dapat menggunakan webhook Slack untuk mengirim pesan ke ruang kerja Slack Anda sehingga Anda menerima notifikasi segera saat ada 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 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 Webhook URLs for Your Workspace, klik Add New Webhook to Workspace.
- Di halaman otorisasi yang terbuka, pilih saluran yang akan menerima notifikasi.
- Klik Izinkan.
- Webhook untuk aplikasi Slack Anda akan ditampilkan di bagian URL Webhook untuk Ruang Kerja Anda. Simpan URL untuk nanti.
Mengonfigurasi Alertmanager
Di Prometheus, Alertmanager memproses peristiwa pemantauan yang dibuat oleh deployment Anda. Alertmanager dapat melewati peristiwa duplikat, mengelompokkan peristiwa terkait, dan mengirim notifikasi, seperti menggunakan webhook Slack. Bagian ini menunjukkan cara mengonfigurasi Alertmanager untuk menggunakan webhook Slack baru Anda. Menentukan cara Alertmanager memproses peristiwa yang akan dikirim dibahas di bagian berikutnya dalam tutorial ini, Mengonfigurasi Prometheus.
Untuk mengonfigurasi Alertmanager agar menggunakan webhook Slack Anda, selesaikan langkah-langkah berikut:
Ubah direktori ke repositori Git yang menyertakan semua manifes contoh untuk Cymbal Bank dari tutorial sebelumnya:
cd ~/bank-of-anthos/Jika perlu, ubah lokasi direktori ke tempat Anda meng-clone repositori sebelumnya.
Perbarui manifes YAML contoh Alertmanager dengan URL webhook aplikasi Slack Anda:
sed -i "s@SLACK_WEBHOOK_URL@SLACK_WEBHOOK_URL@g" "extras/prometheus/gmp/alertmanager.yaml"Ganti
SLACK_WEBHOOK_URLdengan 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 karena alasan keamanan atau kepatuhan.
Buat secret Kubernetes untuk Alertmanager menggunakan manifes YAML contoh yang berisi URL webhook Slack:
kubectl create secret generic alertmanager \ -n gmp-public \ --from-file=extras/prometheus/gmp/alertmanager.yamlPrometheus dapat menggunakan pengekspor untuk mendapatkan metrik dari aplikasi tanpa perubahan kode. Pengekspor blackbox Prometheus memungkinkan Anda memeriksa endpoint seperti HTTP atau HTTPS. Pengekspor ini berfungsi dengan baik jika Anda tidak ingin, atau tidak dapat, mengekspos cara kerja internal aplikasi Anda ke Prometheus. Pengekspor blackbox Prometheus dapat berfungsi tanpa perubahan pada kode aplikasi Anda untuk mengekspos 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, Anda perlu memberi tahu Prometheus apa yang harus dipantau di Cymbal Bank, dan jenis peristiwa apa yang ingin Anda beri tahu oleh Alertmanager menggunakan webhook Slack.
Dalam aplikasi contoh Cymbal Bank yang Anda gunakan dalam tutorial ini, ada berbagai microservice yang berjalan di cluster GKE. Salah satu masalah yang mungkin ingin Anda ketahui sesegera mungkin adalah jika salah satu layanan Cymbal Bank berhenti merespons permintaan secara normal, yang berpotensi berarti pelanggan Anda tidak dapat mengakses aplikasi. Anda dapat mengonfigurasi Prometheus untuk merespons peristiwa berdasarkan kebijakan organisasi Anda.
Probe
Anda dapat mengonfigurasi probe Prometheus untuk resource yang ingin Anda pantau. Probe ini dapat membuat pemberitahuan berdasarkan respons yang diterima probe. Dalam aplikasi contoh Cymbal Bank, Anda dapat menggunakan probe HTTP yang memeriksa kode respons level 200 dari Layanan. Respons level 200 HTTP menunjukkan bahwa Layanan berjalan dengan benar dan dapat merespons permintaan. Jika ada masalah dan probe tidak menerima respons yang diharapkan, Anda dapat menentukan aturan Prometheus yang membuat pemberitahuan untuk diproses Alertmanager dan melakukan tindakan tambahan.
Buat beberapa probe Prometheus untuk memantau status HTTP dari berbagai microservice aplikasi contoh Cymbal Bank. Tinjau manifes contoh berikut:
Seperti yang ditunjukkan dalam file manifes ini, praktik terbaiknya adalah setiap probe keaktifan Prometheus
PodMonitoringmemantau setiap Deployment secara terpisah.Untuk membuat probe keaktifan Prometheus, terapkan manifes ke cluster Anda:
kubectl apply -f extras/prometheus/gmp/probes.yaml
Aturan
Prometheus perlu mengetahui apa yang ingin Anda lakukan berdasarkan respons yang diterima probe yang Anda buat pada langkah sebelumnya. Anda menentukan respons ini menggunakan aturan Prometheus.
Dalam tutorial ini, Anda akan membuat aturan Prometheus untuk membuat pemberitahuan, bergantung pada respons terhadap probe keaktifan. Alertmanager kemudian memproses output aturan ini untuk membuat notifikasi menggunakan webhook Slack.
Buat aturan yang membuat peristiwa berdasarkan respons terhadap probe keaktifan. Tinjau manifes contoh berikut:
Manifes ini menjelaskan
PrometheusRuledan 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 konfigurasi probe, aturan, dan Alertmanager Prometheus Anda sudah benar, Anda harus menguji bahwa pemberitahuan dan notifikasi dikirim saat ada masalah. Jika tidak menguji alur ini, Anda mungkin tidak menyadari adanya pemadaman layanan produksi saat terjadi masalah.
Untuk menyimulasikan pemadaman layanan salah satu microservice, skalakan Deployment
contactske nol. Dengan nol instance Layanan, aplikasi contoh Cymbal Bank tidak dapat membaca informasi kontak untuk pelanggan:kubectl scale deployment contacts --replicas 0GKE mungkin memerlukan waktu hingga 5 menit untuk menurunkan skala Deployment.
Periksa status Deployment di cluster Anda dan pastikan Deployment
contactsditurunkan skalanya dengan benar:kubectl get deploymentsDalam contoh output berikut, Deployment
contactstelah berhasil diturunkan skalanya menjadi0instance: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 17mSetelah Deployment
contactsditurunkan skalanya menjadi nol, probe Prometheus akan melaporkan kode error HTTP. Error HTTP ini akan membuat pemberitahuan untuk diproses Alertmanager.Periksa saluran ruang kerja Slack Anda untuk melihat pesan notifikasi pemadaman layanan dengan 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 logsDalam 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
contactsdengan menaikkan kembali jumlah replika:kubectl scale deployment contacts --replicas 1Mungkin perlu waktu hingga 5 menit untuk menskalakan Deployment dan agar probe Prometheus menerima respons HTTP 200. Anda dapat memeriksa status Deployment menggunakan perintah
kubectl get deployments.Saat respons yang baik terhadap probe Prometheus diterima, Alertmanager akan menghapus peristiwa tersebut. Anda akan melihat pesan notifikasi resolusi pemberitahuan di saluran ruang kerja Slack yang 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 selesaikan kumpulan tutorial ini untuk Cymbal Bank secara berurutan. Saat Anda mengikuti kumpulan tutorial ini, Anda akan mempelajari keterampilan baru dan menggunakan tambahan Google Cloud produk serta layanan.
Jika Anda ingin beristirahat sebelum melanjutkan ke tutorial berikutnya dan menghindari biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang Anda buat.
- Di Google Cloud konsol, buka halaman Manage resources (Kelola resource).
- Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete (Hapus).
- Pada dialog, ketik project ID, lalu klik Shut down (Nonaktifkan) untuk menghapus project.
Langkah berikutnya
Pelajari cara menskalakan deployment di GKE dalam tutorial berikutnya.