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 DashboardManajer pengontrol
Dashboard Pengontrol KubernetesPerencana
Dashboard Penjadwal KubernetesKublet (agen simpul)
Dashboard Kubernetes Cublet
Dashboard Kubernetes CubletProksi kubus
Dasbor Proksi KubeMenggunakan 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:
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:
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!