GNU/Linux >> Belajar Linux >  >> Linux

Memanfaatkan Pemantauan Cluster Grafana &Prometheus Kubernetes

Memantau cluster Kubernetes Anda sangat penting untuk memastikan bahwa layanan Anda selalu tersedia dan berjalan. Dan sebelum Anda menjelajahi internet untuk mencari sistem pemantauan, mengapa tidak mencoba pemantauan klaster Grafana dan Prometheus Kubernetes?

Dalam panduan ini, Anda akan mempelajari cara memantau cluster Kubernetes Anda, melihat metrik status internal dengan dasbor Prometheus dan Grafana.

Baca terus agar Anda dapat terus mencermati sumber daya Anda!

Prasyarat

  • Mesin Linux dengan Docker terinstal — Tutorial ini menggunakan mesin Ubuntu 20.04 LTS dengan Docker versi 20.10.7. Berikut cara menginstal Ubuntu.
  • Cluster Kubernetes node tunggal.
  • Helm Package Manager diinstal — Untuk menerapkan operator Prometheus.
  • Antarmuka baris perintah Kubectl diinstal dan dikonfigurasikan ke Cluster Anda.

Menerapkan Stack Helm Chart Kube-Prometheus

Pemantauan klaster Grafana dan Prometheus Kubernetes memberikan informasi tentang potensi kemacetan kinerja, kesehatan klaster, metrik kinerja. Pada saat yang sama, visualisasikan penggunaan jaringan, pola penggunaan sumber daya pod, dan ikhtisar tingkat tinggi tentang apa yang terjadi di cluster Anda.

Tetapi sebelum menyiapkan sistem pemantauan dengan Grafana dan Prometheus, Anda harus terlebih dahulu menerapkan bagan Helm tumpukan kube-prometheus. Tumpukan berisi Prometheus, Grafana, Alertmanager, operator Prometheus, dan sumber daya pemantauan lainnya.

1. SSH ke mesin Ubuntu 20.04 Anda (jika Anda menjalankan server cloud) atau cukup masuk ke mesin Ubuntu 20.04 yang diinstal secara lokal untuk memulai.

2. Selanjutnya, jalankan kubectl create perintah di bawah ini untuk membuat namespace bernama monitoring untuk semua penerapan terkait Prometheus dan Grafana.

kubectl create namespace monitoring

3. Jalankan helm repo berikut ini perintah untuk menambahkan (prometheus-community ) Helm repo, dan perbarui repo Helm Anda.

# Add prometheus-community repo
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts

# Update helm repo
helm repo update

4. Setelah menambahkan repo Helm, jalankan helm install perintah di bawah ini untuk men-deploy kube-prometheus stack Helm chart. Ganti prometheus dengan nama rilis yang Anda inginkan.

Bagan Helm ini menyiapkan tumpukan pemantauan Prometheus kubernetes lengkap dengan bertindak berdasarkan serangkaian Definisi Sumber Daya Kustom (CRD).

helm install prometheus prometheus-community/kube-prometheus-stack --namespace monitoring

Setelah penerapan selesai, Anda akan mendapatkan output berikut.

5. Terakhir, jalankan perintah berikut untuk mengonfirmasi penyebaran tumpukan kube-prometheus Anda.

kubectl get pods -n monitoring

Output di bawah ini menunjukkan penyebaran tumpukan kube-prometheus. Seperti yang Anda lihat, setiap komponen dalam tumpukan berjalan di cluster Anda.

Mengakses Instans Prometheus

Anda telah berhasil men-deploy instance Prometheus ke cluster Anda, dan Anda hampir siap untuk memantau cluster Kubernetes Anda. Tetapi bagaimana Anda mengakses instans Prometheus Anda? Anda akan meneruskan port lokal 9090 ke cluster Anda melalui layanan Prometheus Anda dengan kubectl port-forward perintah.

1. Jalankan kubectl get perintah di bawah ini untuk melihat semua layanan di namespace pemantauan untuk memeriksa layanan Prometheus Anda.

kubectl get svc -n monitoring

Semua layanan yang digunakan dalam namespace pemantauan ditampilkan di bawah, termasuk layanan Prometheus. Anda akan menggunakan layanan Prometheus untuk menyiapkan penerusan port sehingga instans Prometheus Anda dapat diakses di luar cluster Anda.

2. Selanjutnya, jalankan kubectl port-forward di bawah ini perintah untuk meneruskan port lokal 9090 ke cluster Anda melalui layanan Prometheus (svc/prometheus-kube-prometheus-prometheus ).

kubectl port-forward svc/prometheus-kube-prometheus-prometheus -n monitoring 9090

Namun jika Anda menjalankan kluster Kubernetes node tunggal di server cloud, jalankan perintah berikut sebagai gantinya.

kuebctl port-forward --address 0.0.0.0 svc/prometheus-kube-prometheus-prometheus -n monitoring 9090 

Untuk menjalankan perintah kubectl port-forward sebagai proses latar belakang, membebaskan terminal Anda untuk penggunaan lebih lanjut, tambahkan simbol &di akhir perintah. Tindak lanjuti dengan menekan tombol Ctrl+C untuk menghentikan proses port-forward foreground (Melakukannya tidak akan mempengaruhi proses latar belakang port-forward).

3. Buka browser web favorit Anda, dan navigasikan ke salah satu URL di bawah ini untuk mengakses instans Prometheus Anda.

  • Navigasi ke http://localhost:9090 jika Anda mengikuti dengan mesin Ubuntu lokal
  • Navigasikan ke alamat IP server Anda diikuti dengan port 9090 (mis., http://YOUR_SERVER_IP:9090) jika Anda menggunakan server awan.

Untuk tutorial ini, Prometheus berjalan di server cloud.

Jika layanan Prometheus Anda berfungsi, Anda akan mendapatkan halaman berikut di browser web Anda.

4. Terakhir, di terminal Anda, tekan tombol Ctrl+C untuk menutup proses penerusan port. Melakukannya membuat Prometheus tidak dapat diakses di browser Anda.

Melihat Metrik Status Internal Klaster Prometheus Kubernetes

Melihat metrik status internal cluster Kubernetes Anda dimungkinkan dengan alat Kube-state-metrics (KSM). Dengan alat KSM Anda dapat melacak kesehatan dan penggunaan sumber daya Anda, dan juga objek keadaan internal. Beberapa titik data yang berpotensi dapat dilihat melalui KSM adalah; metrik node, metrik penerapan, dan metrik pod.

Alat KSM sudah dikemas sebelumnya dalam tumpukan kube-prometheus dan disebarkan secara otomatis dengan komponen pemantauan lainnya.

Anda akan meneruskan port lokal ke cluster Anda melalui kube-state-metrics melayani. Melakukannya memungkinkan KSM mengikis metrik sistem internal cluster Anda dan menampilkan daftar kueri dan nilai. Namun sebelum port-forwarding, verifikasi layanan KSM Kubernetes Anda terlebih dahulu.

1. Jalankan perintah di bawah ini untuk memeriksa kube-state-metrics . Anda layanan Kubernetes.

kubectl get svc -n monitoring | grep kube-state-metrics

Di bawah ini, Anda dapat melihat nama layanan KSM Kubernetes (prometheus-kube-state-metrics) bersama dengan ClusterIP. Catat nama layanan KSM Kubernetes karena Anda akan memerlukannya untuk melakukan penerusan porta di langkah berikutnya.

2. Selanjutnya, jalankan perintah di bawah ini ke port-forward prometheus-kube-state-metrics layanan ke port 8080 .

kubectl port-forward svc/prometheus-kube-state-metrics -n monitoring 8080 

Jika Anda mengikuti tutorial ini dengan mesin Ubuntu 20.04 yang dihosting oleh penyedia cloud, tambahkan flag (–address 0.0.0.0) ke perintah kubectl port-forward. Melakukannya memungkinkan akses eksternal ke port lokal melalui alamat IP publik server Anda.

3. Terakhir, di browser web Anda, navigasikan ke salah satu URL di bawah ini untuk melihat halaman Kube Metrics, seperti yang ditunjukkan di bawah ini.

  • Navigasi ke http://localhost:8080 jika Anda menggunakan mesin Ubuntu lokal
  • Navigasikan ke alamat IP server Anda diikuti dengan port 8080 (mis., http://YOUR_SERVER_IP:8080) jika Anda menggunakan server awan.

Klik tautan metrik untuk mengakses metrik status internal cluster Anda.

Anda dapat melihat di bawah metrik status internal cluster yang serupa dengan milik Anda.

Memvisualisasikan Metrik Status Internal Cluster di Prometheus

Anda telah berhasil melakukan penyebaran kube-prometheus stack Helm chart, scrape kube-state-metrics, dan konfigurasi pekerjaan Prometheus. Akibatnya, CoreDNS, server kube-api, operator Prometheus, dan komponen Kubernetes lainnya telah secara otomatis ditetapkan sebagai target di Prometheus.

1. Navigasikan ke salah satu dari http://localhost:9090/targets atau http:// titik akhir di browser web Anda. Melakukannya memungkinkan Anda memverifikasi bahwa target ini telah dikonfigurasi dengan benar.

Mengakses titik akhir juga memungkinkan Anda memverifikasi bahwa Prometheus menggores metriknya dan menyimpan data dalam Basis Data Seri Waktu (TSDB),

Ingatlah untuk meneruskan Prometheus seperti yang ditunjukkan di bagian “Mengakses Instans Prometheus” di langkah kedua, sebelum menavigasi ke titik akhir. Anda juga dapat menjalankannya sebagai proses latar belakang.

Seperti yang Anda lihat di bawah, berbagai komponen internal dan komponen pemantauan Kubernetes dikonfigurasi sebagai target di Prometheus.

2. Klik Grafik menu untuk membuka halaman tempat Anda menjalankan kueri PromQL (Prometheus Query Language).

3. Masukkan contoh PromQL (Bahasa Kueri Prometheus) kueri di bawah ini ke dalam ruang ekspresi yang disediakan, lalu klik Eksekusi. Kueri mengembalikan jumlah total memori yang tidak digunakan di Cluster Anda.

sum((container_memory_usage_bytes{container!="POD",container!=""} - on (namespace,pod,container) avg by (namespace,pod,container)(kube_pod_container_resource_requests{resource="memory"})) * -1 >0 ) / (1024*1024*1024)

4. Untuk melihat hasil query PromQL yang dijalankan pada langkah 3 dalam format grafis, klik Graph . Grafik ini akan menampilkan jumlah total memori yang tidak terpakai di cluster Anda per waktu tertentu.

Setelah semuanya disiapkan dengan benar, metrik cluster sampel akan terlihat mirip dengan grafik di bawah ini.

Mengakses Dasbor Grafana

Anda mungkin telah memperhatikan bahwa kemampuan visualisasi Prometheus terbatas, karena Anda hanya terjebak dengan Graph pilihan. Prometheus sangat bagus untuk menggores metrik dari target yang dikonfigurasi sebagai pekerjaan, menggabungkan metrik tersebut, dan menyimpannya di TSDB secara lokal di mesin Ubuntu. Namun dalam hal pemantauan sumber daya standar, Prometheus dan Grafana adalah duo yang hebat.

Prometheus menggabungkan metrik yang diekspor oleh komponen server seperti pengekspor node, CoreDNS, dll. Sementara Grafana, dengan visualisasi yang paling sesuai, menerima metrik ini dari Prometheus dan menampilkannya melalui berbagai opsi visualisasi.

Selama penerapan stack helm kube-prometheus, Grafana telah diinstal dan dikonfigurasi secara otomatis, sehingga Anda dapat mengonfigurasi akses ke Grafana di Cluster Anda.

Untuk mengakses dasbor Grafana, Anda harus terlebih dahulu mengambil nama pengguna dan kata sandi yang disimpan sebagai rahasia yang secara otomatis dibuat secara default di cluster Kubernetes Anda.

1. Jalankan kubectl berikut ini perintah untuk melihat data yang disimpan sebagai secret di cluster Kubernetes Anda (prometheus-grafana ) dalam format YAML (-o yaml ).

kubectl get secret -n monitoring prometheus-grafana -o yaml

Seperti yang Anda lihat di bawah, nama pengguna dan kata sandi untuk mengakses dasbor Grafana Anda dikodekan di base64. Catat nilai dari admin-password dan admin-user rahasia karena Anda harus memecahkan kodenya di langkah berikutnya.

2. Selanjutnya, jalankan setiap perintah di bawah ini ke --decode kedua rahasia (admin-password dan admin-user ). Ganti YOUR_USERNAME , dan YOUR_PASSWORD dengan admin-password dan admin-user nilai rahasia yang Anda catat di langkah pertama.

Tutorial ini tidak memiliki output untuk setiap perintah karena alasan keamanan.

# Decode and print the username
echo YOUR_USERNAME | base64 --decode
# Decode and print the password
echo YOUR_PASSWORD | base64 --decode

3. Jalankan kubectl perintah di bawah ini untuk port-forward ke port lokal di 3000 dengan mengikat port Grafana 80 ke port 3000 . Melakukannya memberi Anda akses ke UI web Grafana di browser Anda.

kubectl port-forward svc/prometheus-grafana -n monitoring 3000:80

Tambahkan tanda –address 0.0.0.0 jika Anda mengikuti menggunakan mesin Ubuntu 20.04 yang dihosting oleh penyedia cloud.

4. Terakhir, di browser Anda, navigasikan ke salah satu titik akhir di bawah ini tergantung pada pengaturan mesin Anda:

  • http://localhost:3000 (lokal)
  • atau http://:3000 (awan)

Masukkan nilai rahasia yang telah didekodekan untuk admin-user dan admin-password di username dan password di tempat yang disediakan.

Setelah Anda masuk, Anda akan mendapatkan dasbor Grafana, seperti yang ditunjukkan di bawah ini.

Berinteraksi dengan Grafana

Secara default, tumpukan Kube-Prometheus menyebarkan Grafana dengan beberapa dasbor yang telah dikonfigurasi sebelumnya untuk setiap target yang dikonfigurasi di Prometheus. Dengan dasbor yang telah dikonfigurasi sebelumnya ini, Anda tidak perlu menyiapkan dasbor secara manual untuk memvisualisasikan setiap metrik yang dikumpulkan oleh Prometheus.

Klik ikon dasbor —> Jelajahi dan browser Anda dialihkan ke halaman tempat Anda akan melihat daftar dasbor (langkah kedua).

Klik salah satu dasbor yang telah dikonfigurasi sebelumnya di bawah ini untuk melihat sumber daya komputasi visualnya. Namun untuk tutorial ini, klik Kubernetes / Compute Resources / Namespace (Pods) dasbor.

Di bawah ini adalah contoh dasbor yang telah dikonfigurasi sebelumnya untuk memvisualisasikan penggunaan sumber daya komputasi oleh Pod di salah satu namespace yang tersedia.

Untuk tutorial ini, Sumber data telah disetel ke Prometheus dan ruang nama untuk visualisasi disetel ke pemantauan .

Kesimpulan

Dalam tutorial ini, Anda telah mempelajari cara men-deploy operator Prometheus menggunakan Helm dan melihat metrik status internal Cluster Anda untuk memantau cluster Kubernetes Anda. Anda juga telah mengonfigurasi Grafana dan melihat metrik Cluster Anda dengan mengonfigurasi dasbor Grafana Anda.

Pada titik ini, Anda sudah memiliki pemantauan cluster Kubernetes yang berfungsi penuh. Tetapi Anda dapat meningkatkan pengetahuan baru ini secara pribadi, seperti mengonfigurasi Alertmanager dengan Slack untuk menerima peringatan waktu nyata.


Linux
  1. Cara menggunakan Ansible untuk mengatur pemantauan sistem dengan Prometheus

  2. Pantau server linux menggunakan Prometheus dan Grafana

  3. Prometheus vs Zabbix:Perbandingan alat pemantauan jaringan

  1. Apa itu Kubernetes? Panduan Lengkap

  2. Cara men-deploy pod pertama Anda di Cluster Kubernetes

  3. Siapkan cluster Kubernetes dengan Rancher

  1. Tutorial Dasbor Grafana Prometheus

  2. Cara Memasang Cluster Kubernetes (k8s) di RHEL 8

  3. Cara Mengatur Cluster Kubernetes(k8s) di HA dengan Kubeadm