Ngawasi Kluster Kubernetes: Ringkesan lan Pambuka kanggo Prometheus

Coba konsep pemantauan Kubernetes, kenalan karo alat Prometheus, lan pirembagan babagan menehi tandha.

Topik ngawasi akeh banget, ora bisa dibongkar ing siji artikel. Tujuwan saka teks iki yaiku kanggo menehi ringkesan babagan piranti, konsep lan pendekatan.

Materi artikel punika remet saka kuliah mbukak sekolah "Slurm". Yen sampeyan pengin njupuk kursus lengkap - ndhaptar kursus ing Infrastruktur ngawasi lan logging ing Kubernetes.

Ngawasi Kluster Kubernetes: Ringkesan lan Pambuka kanggo Prometheus

Apa sing dipantau ing kluster Kubernetes

Ngawasi Kluster Kubernetes: Ringkesan lan Pambuka kanggo Prometheus

server fisik. Yen kluster Kubernetes dipasang ing server, sampeyan kudu ngawasi kesehatane. Zabbix nangani tugas iki; yen sampeyan nggarap dheweke, sampeyan ora perlu nolak, ora bakal ana konflik. Iku Zabbix sing ngawasi kahanan server kita.

Ayo pindhah menyang ngawasi ing tingkat cluster.

Komponen Control Plane: API, Penjadwal lan liya-liyane. Paling ora, sampeyan kudu nggawe manawa API server utawa etcd luwih saka 0. Etcd bisa ngasilake akeh metrik: dening disk kang Spinning, kesehatan saka etcd cluster, lan liyane.

docker katon suwe banget lan kabeh wong ngerti masalahe: akeh kontaner nyebabake beku lan masalah liyane. Mulane, Docker dhewe, minangka sistem, uga kudu dikontrol, paling ora kanggo kasedhiyan.

DNS Yen DNS tiba ing kluster, mula kabeh layanan Discovery bakal mandheg, telpon saka pods menyang pods bakal mandheg. Ing praktikku, ora ana masalah kaya ngono, nanging iki ora ateges kahanan DNS ora perlu dipantau. Panjaluk latensi lan sawetara metrik liyane bisa dilacak ing CoreDNS.

Ingress. Sampeyan kudu ngontrol kasedhiyan ingress (kalebu Ingress Controller) minangka titik entri menyang proyek kasebut.

Komponen utama kluster wis dibongkar - saiki ayo mudhun menyang tingkat abstraksi.

Iku bakal katon yen aplikasi mbukak ing pods, kang tegese padha kudu kontrol, nanging ing kasunyatan padha ora. Pods sing ephemeral: dina iki padha mbukak ing siji server, sesuk ing liyane; dina iki ana 10, sesuk 2. Mula ora ana sing ngawasi polong. Ing arsitektur microservice, luwih penting kanggo ngontrol kasedhiyan aplikasi kanthi sakabehe. Utamane, priksa kasedhiyan titik pungkasan layanan: apa ana sing bisa digunakake? Yen aplikasi kasedhiya, banjur apa sing kedadeyan, pira replika saiki - iki pitakonan saka urutan kapindho. Ora perlu ngawasi kasus individu.

Ing tingkat pungkasan, sampeyan kudu ngontrol operasi aplikasi kasebut dhewe, njupuk metrik bisnis: jumlah pesenan, prilaku pangguna, lan liya-liyane.

Prometheus

Sistem paling apik kanggo ngawasi kluster yaiku Prometheus. Aku ora ngerti alat apa wae sing bisa cocog karo Prometheus babagan kualitas lan gampang digunakake. Iku apik kanggo infrastruktur fleksibel, supaya nalika padha ngomong "ngawasi Kubernetes", padha biasane tegese Prometheus.

Ana sawetara opsi kanggo miwiti Prometheus: nggunakake Helm, sampeyan bisa nginstal Prometheus biasa utawa Operator Prometheus.

  1. Prometheus biasa. Kabeh apik karo dheweke, nanging sampeyan kudu ngatur ConfigMap - nyatane, nulis file konfigurasi adhedhasar teks, kaya sing sadurunge, sadurunge arsitektur microservice.
  2. Operator Prometheus rada nyebar, rada rumit babagan logika internal, nanging luwih gampang digarap: ana obyek sing kapisah, abstraksi ditambahake ing kluster, saengga luwih trep kanggo ngontrol lan ngatur.

Kanggo ngerti produk kasebut, aku nyaranake nginstal Prometheus biasa dhisik. Sampeyan kudu ngatur kabeh liwat config, nanging iki bakal ono gunane: sampeyan bakal ngerti apa belongs kanggo apa lan carane iku diatur. Ing Operator Prometheus, sampeyan langsung munggah menyang abstraksi sing luwih dhuwur, sanajan sampeyan uga bisa nyelidiki jero yen pengin.

Prometheus uga terintegrasi karo Kubernetes: bisa ngakses lan sesambungan karo Server API.

Prometheus populer, mula akeh aplikasi lan basa pamrograman ndhukung. Dhukungan dibutuhake, amarga Prometheus duwe format metrik dhewe, lan kanggo nransfer, sampeyan butuh perpustakaan ing njero aplikasi utawa eksportir sing wis siap. Lan ana sawetara eksportir kaya ngono. Contone, ana PostgreSQL Exporter: njupuk data saka PostgreSQL lan ngowahi menyang format Prometheus supaya Prometheus bisa nggarap.

Arsitektur Prometheus

Ngawasi Kluster Kubernetes: Ringkesan lan Pambuka kanggo Prometheus

Server Prometheus yaiku mburi mburi, otak Prometheus. Metrik disimpen lan diproses ing kene.

Metrik disimpen ing basis data seri wektu (TSDB). TSDB ora database kapisah, nanging paket ing basa Go sing ditempelake ing Prometheus. Secara kasar, kabeh ana ing siji binar.

Aja nyimpen data ing TSDB kanggo dangu

Infrastruktur Prometheus ora cocok kanggo panyimpenan metrik jangka panjang. Periode panyimpenan standar yaiku 15 dina. Sampeyan bisa ngluwihi watesan iki, nanging elinga: luwih akeh data sing disimpen ing TSDB lan saya suwe sampeyan nindakake, luwih akeh sumber daya sing bakal dikonsumsi. Nyimpen data sajarah ing Prometheus dianggep laku ala.

Yen sampeyan duwe lalu lintas gedhe, jumlah metrik atusan ewu per detik, mula luwih becik mbatesi panyimpenan kanthi ruang disk utawa miturut periode. Biasane, "data panas" disimpen ing TSDB, metrik mung sawetara jam. Kanggo panyimpenan sing luwih dawa, panyimpenan eksternal digunakake ing basis data sing pancen cocok kanggo iki, contone, InfluxDB, ClickHouse, lan liya-liyane. Aku ndeleng review luwih apik babagan ClickHouse.

Prometheus Server dianggo ing model narik: dheweke golek metrik menyang titik pungkasan sing diwenehake. Padha ngandika: "menyang API Server", lan kang dadi ana saben n-th nomer detik lan njupuk metrik.

Kanggo obyek kanthi umur cendhak (proyek utawa cron proyek) sing bisa katon ing antarane periode scraping, ana komponen Pushgateway. Metrik saka obyek jangka pendek di-push menyang: proyek wis wungu, nindakake tumindak, dikirim metrik kanggo Pushgateway lan rampung. Sawise sawetara wektu, Prometheus bakal mudhun kanthi cepet lan njupuk metrik kasebut saka Pushgateway.

Kanggo ngatur kabar ing Prometheus ana komponen sing kapisah - Alertmanager. Lan aturan alerting. Contone, sampeyan kudu nggawe tandha yen API server 0. Nalika acara murub, tandha wis liwati menyang manager tandha kanggo kiriman luwih. Pangatur tandha nduweni setelan rute sing cukup fleksibel: siji klompok tandha bisa dikirim menyang obrolan telegram admin, liyane menyang obrolan pangembang, lan katelu menyang obrolan buruh infrastruktur. Kabar bisa dikirim menyang Slack, Telegram, email, lan saluran liyane.

Lan pungkasane, aku bakal ngandhani sampeyan babagan fitur pembunuh Prometheus - Nemokake. Nalika nggarap Prometheus, sampeyan ora perlu nemtokake alamat tartamtu obyek kanggo ngawasi, cukup kanggo nyetel jinise. Yaiku, sampeyan ora perlu nulis "iki alamat IP, iki port - monitor", nanging sampeyan kudu nemtokake prinsip apa kanggo nemokake obyek kasebut (target - gol). Prometheus dhewe, gumantung saka obyek sing saiki aktif, narik sing perlu lan ditambahake kanggo ngawasi.

Pendekatan iki mathuk uga karo struktur Kubernetes, ngendi kabeh uga ngambang: dina iki ana 10 server, sesuk 3. Supaya ora kanggo nemtokake alamat IP saka server saben wektu, padha wrote sapisan carane nemokake iku - lan Discovering bakal nindakaken. .

Basa Prometheus diarani PromQL. Nggunakake basa iki, sampeyan bisa entuk nilai metrik tartamtu banjur ngowahi, nggawe kalkulasi analitis adhedhasar.

https://prometheus.io/docs/prometheus/latest/querying/basics/

ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ запрос

    container_memory_usage_bytes

ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ

    container_memory_usage_bytes / 1024 / 1024

ВстроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

    sum(container_memory_usage_bytes) / 1024 / 1024

Π£Ρ‚ΠΎΡ‡Π½Π΅Π½ΠΈΠ΅ запроса

    100 - avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m]) * 100)

Antarmuka web Prometheus

Prometheus nduweni antarmuka web sing cukup minimalis. Mung cocok kanggo debug utawa demonstrasi.

Ngawasi Kluster Kubernetes: Ringkesan lan Pambuka kanggo Prometheus

Ing baris Ekspresi, sampeyan bisa nulis pitakon ing basa PromQL.

Tab Tandha ngemot aturan tandha, lan duwe telung status:

  1. ora aktif - yen tandha ora aktif saiki, yaiku, kabeh apik, lan ora bisa digunakake;
  2. ditundha - iki yen tandha bisa digunakake, nanging ngirim durung liwati. Wektu tundha disetel kanggo ngimbangi kedhip jaringan: yen layanan sing ditemtokake wis munggah sajrone menit, mula weker durung muni;
  3. diperlokakΓ© minangka status katelu nalika tandha murup lan ngirim pesen.

Ing menu Status sampeyan bakal nemokake akses menyang informasi babagan apa Prometheus. Ana uga transisi menyang target (target), sing kita rembugan ing ndhuwur.

Ngawasi Kluster Kubernetes: Ringkesan lan Pambuka kanggo Prometheus

Kanggo ringkesan sing luwih rinci babagan antarmuka Prometheus, waca ing kuliah Slurm babagan ngawasi kluster Kubernetes.

Integrasi karo Grafana

Ing antarmuka web Prometheus, sampeyan ora bakal nemokake grafik sing apik lan bisa dingerteni saka ngendi sampeyan bisa nggawe kesimpulan babagan kahanan kluster. Kanggo mbangun, Prometheus digabungake karo Grafana. We njaluk dashboard kuwi.

Ngawasi Kluster Kubernetes: Ringkesan lan Pambuka kanggo Prometheus

Nyiyapake integrasi Prometheus lan Grafana ora angel, sampeyan bisa nemokake instruksi ing dokumentasi: Dhukungan GRAFANA kanggo PROMETHEUSInggih, aku bakal mungkasi karo iki.

Ing artikel ing ngisor iki, kita bakal nerusake topik pemantauan: kita bakal ngomong babagan ngumpulake lan nganalisa log nggunakake Grafana Loki lan alat alternatif.

Pengarang: Marcel Ibraev, administrator Kubernetes sing disertifikasi, praktik insinyur ing perusahaan kasebut jembatan kidul, speaker lan mesthi pangembang Slurm.

Source: www.habr.com

Add a comment