Gunakan Prometheus dan Grafana untuk memvisualisasikan metrik layanan mikro Anda

Jika Anda menjalankan “Istio” untuk mengelola layanan mikro dalam Kubernetes, mengumpulkan dan memvisualisasikan metrik Anda adalah salah satu fitur utama yang disediakannya. Ini memberi Anda banyak kendali dan kekuasaan atas mesh Anda dan memungkinkan Anda memahami layanan mikro Anda dengan lebih baik.

Ini tidak hanya memberi tim operasi Anda wawasan yang berguna untuk memecahkan masalah, tetapi juga memberi tim Keamanan Anda data berharga. Hal ini membantu mereka melakukan hal-hal seperti menghubungkan jaringan Anda dengan perangkat lunak pendeteksi intrusi untuk lebih mengamankan aplikasi Anda.

Kisah ini merupakan tindak lanjut dari “Cara Menggunakan Istio untuk Menyuntikkan Kesalahan untuk Memecahkan Masalah Layanan Mikro di Kubernetes.” Hari ini, mari kita bahas pengumpulan dan visualisasi mesh layanan Istio menggunakan Prometheus dan Grafana.

Bagaimana Istio Mengumpulkan Metrik?

Jika Anda mengikuti seri ini, Anda harus menyadari bahwa Istio menggunakan proxy Envoy sebagai sidecar untuk wadah layanan mikro Anda.

Karena semua lalu lintas mengalir melalui proxy ini, mereka mengirimkan data telemetri ke Prometheus, yang dapat disimpan dan divisualisasikan menggunakan alat seperti Grafana.

Anda juga dapat mengekspor metrik Anda ke alat seperti tumpukan ELK atau pemindai keamanan untuk mendapatkan wawasan lebih lanjut dari data dan menggunakannya untuk analisis dan pembelajaran mesin di masa mendatang.

Prasyarat

Kami juga akan menggunakan aplikasi Bookinfo dalam tugas ini dan menghasilkan lalu lintas. Kami kemudian akan menanyakan metrik menggunakan Prometheus dan memvisualisasikan data telemetri menggunakan Grafana.

Pastikan Anda menjalankan cluster Kubernetes dan menginstal Istio di atasnya. Ikuti panduan “Memulai Istio di Kubernetes”, dan pastikan Anda telah menyelesaikan semua tugas dari panduan ini dan telah menerapkan aplikasi Bookinfo.

Mengumpulkan Data Telemetri

Layanan ratings-v2 dapat terhubung dengan server database MongoDB back-end. Mari kita gunakan itu sehingga kita dapat mensimulasikan situasi front end-back end yang realistis.

Instal layanan ratings-v2:

$ kubectl apply -f samples/bookinfo/platform/kube/bookinfo-ratings-v2.yaml
serviceaccount/bookinfo-ratings-v2 created
deployment.apps/ratings-v2 created

Sekarang instal layanan mongodb:

$ kubectl apply -f samples/bookinfo/platform/kube/bookinfo-db.yaml
service/mongodb created
deployment.apps/mongodb-v1 created

Sekarang, mari kita tentukan aturan tujuan sehingga kita dapat merutekan lalu lintas berdasarkan label yang dipilih. Itu adalah aturan tujuan yang sama yang kami terapkan di artikel sebelumnya.

$ kubectl apply -f samples/bookinfo/networking/destination-rule-all.yaml
destinationrule.networking.istio.io/productpage created
destinationrule.networking.istio.io/reviews created
destinationrule.networking.istio.io/ratings created
destinationrule.networking.istio.io/details created

Langkah selanjutnya adalah mengekspos layanan mikro menggunakan layanan virtual. Pertama mari kita lihat file YAML

Seperti yang Anda lihat di YAML, semua reviews lalu lintas harus mengalir ke reviews-v3 dan semua ratings lalu lintas ke ratings-v2.

Terapkan layanan virtual dengan menjalankan perintah berikut:

$ kubectl apply -f samples/bookinfo/networking/virtual-service-ratings-db.yaml
virtualservice.networking.istio.io/reviews created
virtualservice.networking.istio.io/ratings created

Kirim Lalu Lintas

Langkah selanjutnya adalah mengirimkan sejumlah lalu lintas melalui layanan sehingga kami dapat memeriksa apakah Istio mengumpulkan metrik di bagian berikutnya.

Kunjungi halaman produk, dan segarkan browser Anda beberapa kali untuk menghasilkan lalu lintas.

Metrik Kueri Menggunakan Prometheus

Ekspos Prometheus melalui proxy penerusan porta.

$ kubectl -n istio-system port-forward $(kubectl -n istio-system get pod -l app=prometheus -o jsonpath='{.items[0].metadata.name}') 9090:9090 &
[1] 910
$ Forwarding from 127.0.0.1:9090 -> 9090

Sekarang, buka link http://127.0.0.1:9090 melalui browser Anda.

Jika memahami Prometheus Query Language, kita dapat mencari pada metrik tertentu hanya dengan mengetikkan nama parameternya.

Mari kita mulai dengan mengetik istio_tcp_connections_opened_total.

Bagaimana dengan istio_tcp_connections_closed_total?

Mari kita lihat total permintaan menggunakan istio_requests_total, namun kali ini kita akan melihat tampilan grafiknya. Klik pada tab Grafik, ketik metrik di kotak pencarian, dan klik Jalankan

Sekarang mari kita coba beberapa pertanyaan lanjutan. Bagaimana dengan semua permintaan ke layanan mikro reviews-v3?

istio_requests_total{destination_service="reviews.default.svc.cluster.local", destination_version="v3"}

Dan tingkat permintaan ke layanan mikro productpage?

rate(istio_requests_total{destination_service=~"productpage.*", response_code="200"}[5m])

Seperti yang Anda lihat, kami berhasil mengumpulkan dan menanyakan metrik telemetri menggunakan Prometheus.

Visualisasikan Metrik Menggunakan Grafana

Bagi orang teknis, menanyakan metrik melalui Prometheus mungkin tampak cukup. Namun, jika Anda ingin seseorang memvisualisasikan data secara intuitif, terutama tim operasi dan orang yang ingin menganalisis data, kita dapat menggunakan alat visualisasi data seperti Grafana.

Ekspos Grafana melalui proxy penerusan porta.

kubectl -n istio-system port-forward $(kubectl -n istio-system get pod -l app=grafana -o jsonpath='{.items[0].metadata.name}') 3000:3000 &

Buka URL dari browser.

Pilih folder Istio, dan seperti yang Anda lihat, Anda sudah mendapatkan banyak dasbor Grafana yang telah dikonfigurasi sebelumnya saat Anda menginstal Istio. Anda dapat menggunakan dasbor untuk memantau setiap komponen Istio dan layanan mikro Anda.

Anda juga dapat menyesuaikan dan membuat dasbor baru sesuai kebutuhan Anda.

Jika Anda membuka dasbor layanan Grafana, Anda dapat memvisualisasikan metrik yang terkait dengan semua layanan Anda. Anda juga dapat memfilter layanan tertentu untuk melihat metriknya.

Sekarang hasilkan lalu lintas dengan menyegarkan halaman produk beberapa kali, dan Anda akan melihat dasbor Grafana mulai menampilkan metrik.

Jika Anda ingin memahami beban kerja, terdapat dasbor beban kerja bawaan di Grafana — buka dasbor untuk melihat grafik beban kerja.

Jelajahi dasbor lain untuk melihat berbagai visualisasi dan metrik yang dapat Anda kumpulkan dan pantau menggunakan Istio.

Selamat! Anda telah menyelesaikan aktivitas memvisualisasikan metrik layanan mikro Anda menggunakan Prometheus dan Grafana.

Kesimpulan

Terima kasih telah membaca! Saya harap Anda menikmati artikelnya. Pada bagian selanjutnya kita akan membahas “Cara Memperkuat Layanan Mikro Anda di Kubernetes Menggunakan Istio” jadi sampai jumpa di cerita selanjutnya!