Panel Grafana untuk administrasi Kubernetes

Halo semuanya! Hari ini kami terus membagikan materi yang diterjemahkan secara khusus untuk siswa kursus Platform Infrastruktur berbasis Kubernetes . Selamat membaca.



Pendahuluan




Untuk beberapa waktu sekarang saya telah bereksperimen dengan membuat dasbor Grafana untuk mengelola Kubernetes. Sebagai pemilik dan administrator dari beberapa kluster Kubernetes, saya ingin mendapatkan representasi visual dari beberapa metrik. Pertama, saya perlu dashboard Grafana normal untuk Kubernetes Control Plane dan komponen Node: kube-api, kube-scheduler, kube-controller-manager, serta kubelet dan kube-proxy . Kedua, saya ingin memposting panel yang dihasilkan di GitHub sehingga orang lain dapat meninggalkan saran dan laporan kesalahan (masalah), mengirim permintaan untuk perubahan (menarik permintaan), memperbarui panel (menarik git) dan membantu saya bekerja pada mereka.

Publikasikan Dasbor Grafana


Panel Grafana sekarang sebagian besar diterbitkan di grafana.com/dashboards . Untuk mendapatkan panel yang diinginkan, Anda perlu menemukannya di halaman, salin pengenal dan impor ke instance Grafana lokal. Meskipun mengimpor dasbor relatif sederhana, pengalaman menunjukkan bahwa sebagian besar pengguna merasa tidak nyaman untuk bekerja dengannya. Ada beberapa alasan untuk ini.

Pertama, orang menggunakan pemilih tag yang berbeda untuk menunjukkan tujuan pemantauan di Prometheus. Kedua, dalam versi baru pengekspor Prometheus dan aplikasi untuk mengakses metrik, nama metrik terus berubah dan dihapus. Ketiga, sangat sulit untuk menemukan dasbor yang benar-benar berkualitas tinggi - Anda tidak pernah tahu apa yang akhirnya akan Anda dapatkan setelah impor. Setelah memilih panel, Anda harus menyisir semua grafik dan mengedit metrik bersama dengan pemilih label - dan ini adalah sejumlah besar pekerjaan manual.

Proyek Pemantauan Mixins


Saya menemukan proyek yang sangat keren yang disebut Monitoring Mixins. Bahkan, ini adalah semacam ekosistem yang dirancang untuk mengatasi semua masalah panel sakit. Idenya datang ke Frederic Branczyk, dan dialah yang menulis dokumen desain asli , yang saya sangat sarankan agar Anda baca. Selain itu, ia memikirkan mekanisme nyata untuk memperbarui dasbor dan mengekstraknya dari berbagai repositori GitHub. Mekanisme ini sangat mirip dengan go get , dan saya sangat menyukainya. Di sini Anda dapat membaca deskripsi singkat tentang manajer paket jsonnet-bundler menggunakan mekanisme ini. Terima kasih banyak kepada Frederick atas perkembangan yang bermanfaat!

Paket Mixin Kubernetes Grafana


Jika Anda membaca ke tempat ini, Anda dapat beristirahat dan menikmati gambar-gambar yang indah.

Server API



Dasbernetes API Server Dashboard

Manajer pengontrol



Dashboard Pengontrol Kubernetes

Perencana



Dashboard Penjadwal Kubernetes

Kublet (agen simpul)



Dashboard Kubernetes Cublet


Dashboard Kubernetes Cublet

Proksi kubus



Dasbor Proksi Kube

Menggunakan Kubernetes Grafana Mixin


Pertama, Anda perlu menginstal jsonnet dan jsonnet-bundler .

Jsonnet


Jika Anda menggunakan macOS, Anda dapat menggunakan perintah brew install jsonnet . Kalau tidak, lebih baik Anda mengkompilasi komponen ini sendiri.

 git clone https://github.com/google/jsonnet.git jsonnet_git cd jsonnet_git make sudo mv jsonnet /usr/local/bin/ 

Bundler Jsonnet


 go get -u github.com/jsonnet-bundler/jsonnet-bundler/cmd/jb 

Panel impor


Buat direktori baru untuk proyek dan masukkan dengan cd .

Pasang mixin :

 jb init jb install https://github.com/povilasv/kubernetes-grafana-mixin 

Sekarang buat file config.libsonnet baru.

 local kubedashboards = import 'kubernetes-grafana-mixin/mixin.libsonnet'; kubedashboards { _config+:: { kubeletSelector: 'job="kubernetes-nodes2"', kubeSchedulerSelector: 'job="kube-scheduler2"', kubeControllerManagerSelector: 'job="kube-controller-manager2"', kubeApiserverSelector: 'job="kube-apiserver2"', kubeProxySelector: 'job="kube-proxy2"', }, } 

Setelah itu, panel informasi diimpor dan penyeleksi pekerjaan ditimpa.
Perbaiki pemilih tag Prometheus yang sesuai dengan lingkungan Anda.
Sekarang buat direktori dashboards . Terakhir, jalankan jsonnet untuk mengkompilasi config.libsonnet :

 jsonnet -J vendor -m dashboards -e '(import "config.libsonnet").grafanaDashboards' 

Anda akan melihat daftar berikut:

 dashboards/kube-apiserver.json dashboards/kube-controller-manager.json dashboards/kube-proxy.json dashboards/kube-scheduler.json dashboards/kubelet.json 

Hasil


Tampilkan isi katalog dasbor.

 ls -l dashboards 

 -rw-r--r-- 1 povilasv povilasv 35746 Apr 26 08:29 kube-apiserver.json -rw-r--r-- 1 povilasv povilasv 34790 Apr 26 08:29 kube-controller-manager.json -rw-r--r-- 1 povilasv povilasv 62845 Apr 26 08:29 kubelet.json -rw-r--r-- 1 povilasv povilasv 27673 Apr 26 08:29 kube-proxy.json -rw-r--r-- 1 povilasv povilasv 25650 Apr 26 08:29 kube-scheduler.json 

Menambahkan dasbor ke Grafana


Saya sudah mengatakan bahwa saya sangat merekomendasikan menempatkan panel melalui file konfigurasi. Anda dapat mempelajari lebih lanjut tentang bagaimana hal ini dilakukan dalam dokumentasi Grafana .

Di sisi lain, tidak ada yang mencegah Anda membuka antarmuka Grafana dan menambahkan panel melalui itu.

Perbarui dasbor


Seiring waktu, panel akan berubah. Untuk memperbaruinya, perintah berikut cukup:

 jb update 

Itu saja untuk hari ini.

Saya harap Anda menikmati dasbor saya. Dalam artikel terpisah saya akan berbicara tentang bagaimana saya membuatnya dan mengapa saya membuatnya begitu saja, jadi pastikan untuk berlangganan pembaruan. Pelanggan melihat pekerjaan saya terlebih dahulu, bahkan sebelum publikasi.

Saya juga sangat tertarik dengan umpan balik Anda. Jika Anda menggunakan panel saya, evaluasi seberapa bermanfaatnya bagi Anda, atau bagikan jika mereka membantu Anda dalam situasi kerja yang nyata. Tinggalkan komentar!

Ngomong-ngomong, jika Anda ingin mengucapkan terima kasih atas upaya saya, Anda dapat melihat daftar keinginan saya yang terbuka dan membeli saya, misalnya, buku yang bagus.

Saya sangat menghargai proyek sumber terbuka berkualitas. Paket kubernetes-grafana-mixin tersedia di bawah lisensi lisensi Apache 2 . Jika Anda menyukai proyek ini, periksa di Github!

Source: https://habr.com/ru/post/id456946/


All Articles