Kubernetes klasterini kuzatish: Prometeyga umumiy nuqtai va kirish

Kubernetes monitoringi kontseptsiyasini ko'rib chiqing, Prometey vositasi bilan tanishing va ogohlantirish haqida gapiring.

Monitoring mavzusi juda katta, uni bitta maqolada qismlarga ajratib bo'lmaydi. Ushbu matnning maqsadi vositalar, tushunchalar va yondashuvlar haqida umumiy ma'lumot berishdir.

Maqolaning materiali - siqish "Slurm" maktabining ochiq ma'ruzasi. Agar siz to'liq kursni olishni istasangiz - kursga yoziling Kubernetesdagi infratuzilmani kuzatish va qayd etish.

Kubernetes klasterini kuzatish: Prometeyga umumiy nuqtai va kirish

Kubernetes klasterida nima nazorat qilinadi

Kubernetes klasterini kuzatish: Prometeyga umumiy nuqtai va kirish

jismoniy serverlar. Agar Kubernetes klasteri o'z serverlarida o'rnatilgan bo'lsa, ularning sog'lig'ini kuzatishingiz kerak. Zabbix bu vazifani bajaradi; agar siz u bilan ishlasangiz, unda siz rad qilishingiz shart emas, hech qanday nizolar bo'lmaydi. Bu Zabbix bizning serverlarimiz holatini kuzatib boradi.

Keling, klaster darajasidagi monitoringga o'tamiz.

Boshqaruv tekisligi komponentlari: API, Scheduler va boshqalar. Hech bo'lmaganda, serverlar yoki etcd API 0 dan katta ekanligiga ishonch hosil qilishingiz kerak. Etcd juda ko'p ko'rsatkichlarni qaytarishi mumkin: u aylanayotgan disklar, etcd klasterining sog'lig'i va boshqalar bo'yicha.

Docker uzoq vaqt oldin paydo bo'lgan va har bir kishi uning muammolarini yaxshi biladi: ko'plab konteynerlar muzlash va boshqa muammolarni keltirib chiqaradi. Shuning uchun, Dockerning o'zi, tizim sifatida, hech bo'lmaganda mavjudligi uchun nazorat qilinishi kerak.

dns. Agar klasterda DNS uzilib qolsa, undan keyin butun Discovery xizmati ishdan chiqadi, podlardan podlarga qo'ng'iroqlar ishlamay qoladi. Mening amaliyotimda bunday muammolar yo'q edi, ammo bu DNS holatini kuzatish kerak emas degani emas. Soʻrovning kechikishi va boshqa baʼzi koʻrsatkichlarni CoreDNS da kuzatish mumkin.

Kirish. Loyihaga kirish nuqtalari sifatida kirishlar mavjudligini (shu jumladan Ingress Controller) nazorat qilish kerak.

Klasterning asosiy komponentlari demontaj qilindi - endi abstraktsiyalar darajasiga tushamiz.

Ko'rinishidan, ilovalar podlarda ishlaydi, ya'ni ularni nazorat qilish kerak, lekin aslida ular yo'q. Podlar vaqtinchalik: bugun ular bir serverda, ertaga boshqa serverda ishlaydi; bugun ular 10 ta, ertaga 2. Shuning uchun hech kim podlarni kuzatmaydi. Mikroservis arxitekturasida umuman ilovaning mavjudligini nazorat qilish muhimroqdir. Xususan, xizmat ko'rsatish so'nggi nuqtalarining mavjudligini tekshiring: biror narsa ishlaydimi? Agar dastur mavjud bo'lsa, unda nima sodir bo'ladi, hozir qancha nusxalar bor - bu ikkinchi darajali savollar. Alohida holatlarni kuzatishning hojati yo'q.

Oxirgi darajada siz dasturning o'zi ishlashini nazorat qilishingiz, biznes ko'rsatkichlarini olishingiz kerak: buyurtmalar soni, foydalanuvchi xatti-harakati va boshqalar.

Prometheus

Klaster monitoringi uchun eng yaxshi tizim Prometheus. Sifat va foydalanish qulayligi jihatidan Prometeyga mos keladigan biron bir vositani bilmayman. Bu moslashuvchan infratuzilma uchun juda yaxshi, shuning uchun ular "Kubernetes monitoringi" deganda, odatda Prometeyni nazarda tutadilar.

Prometey bilan ishlashni boshlash uchun bir nechta variant mavjud: Helm-dan foydalanib, siz oddiy Prometey yoki Prometey Operatorini o'rnatishingiz mumkin.

  1. Oddiy Prometey. U bilan hamma narsa yaxshi, lekin siz ConfigMap-ni sozlashingiz kerak - aslida, biz mikroservis arxitekturasidan oldin qilganimizdek, matnga asoslangan konfiguratsiya fayllarini yozing.
  2. Prometey Operatori biroz kengroq tarqalgan, ichki mantiq nuqtai nazaridan biroz murakkabroq, lekin u bilan ishlash osonroq: alohida ob'ektlar mavjud, klasterga abstraktsiyalar qo'shiladi, shuning uchun ularni boshqarish va sozlash ancha qulayroq.

Mahsulotni tushunish uchun avvalo oddiy Prometeyni o'rnatishni tavsiya etaman. Siz konfiguratsiya orqali hamma narsani sozlashingiz kerak bo'ladi, lekin bu foydali bo'ladi: nimaga tegishli ekanligini va u qanday tuzilganligini aniqlaysiz. Prometey Operatorida siz darhol yuqoriroq mavhumlikka ko'tarilasiz, garchi xohlasangiz, chuqurlikka ham kirishingiz mumkin.

Prometey Kubernetes bilan yaxshi integratsiyalashgan: u API serveriga kirishi va u bilan o'zaro aloqada bo'lishi mumkin.

Prometey mashhur, shuning uchun ko'plab ilovalar va dasturlash tillari uni qo'llab-quvvatlaydi. Yordam kerak, chunki Prometey o'zining o'lchov formatiga ega va uni o'tkazish uchun sizga ilova ichidagi kutubxona yoki tayyor eksportyor kerak bo'ladi. Va bunday eksportchilar juda kam. Masalan, PostgreSQL Exporter mavjud: u PostgreSQL-dan ma'lumotlarni oladi va Prometey u bilan ishlashi uchun uni Prometey formatiga o'zgartiradi.

Prometey arxitekturasi

Kubernetes klasterini kuzatish: Prometeyga umumiy nuqtai va kirish

Prometey serveri orqa uchi, Prometeyning miyasi. Ko'rsatkichlar bu erda saqlanadi va qayta ishlanadi.

Ko'rsatkichlar vaqt seriyalari ma'lumotlar bazasida (TSDB) saqlanadi. TSDB alohida ma'lumotlar bazasi emas, balki Prometeyga o'rnatilgan Go tilidagi paketdir. Taxminan aytganda, hamma narsa bitta binarda.

TSDBda ma'lumotlarni uzoq vaqt saqlamang

Prometey infratuzilmasi ko'rsatkichlarni uzoq muddatli saqlash uchun mos emas. Standart saqlash muddati 15 kun. Siz ushbu chegaradan oshib ketishingiz mumkin, lekin yodda tuting: TSDBda qancha ko'p ma'lumot saqlasangiz va uni qancha uzoq vaqt bajarsangiz, u shunchalik ko'p resurslarni sarflaydi. Prometeyda tarixiy ma'lumotlarni saqlash yomon amaliyot hisoblanadi.

Agar sizda katta trafik bo'lsa, ko'rsatkichlar soni sekundiga yuz minglab, keyin ularni saqlashni diskdagi bo'sh joy yoki davr bo'yicha cheklash yaxshiroqdir. Odatda, "issiq ma'lumotlar" TSDBda saqlanadi, ko'rsatkichlar bir necha soat ichida. Uzoqroq saqlash uchun tashqi xotira buning uchun juda mos bo'lgan ma'lumotlar bazalarida ishlatiladi, masalan, InfluxDB, ClickHouse va boshqalar. Men ClickHouse haqida ko'proq yaxshi sharhlarni ko'rdim.

Prometey serveri model ustida ishlaydi Torting: u o'lchovlar uchun biz unga bergan so'nggi nuqtalarga boradi. Ular: "API serveriga o'ting", deyishdi va u har n-sonli soniyalarda u erga boradi va ko'rsatkichlarni oladi.

Olib tashlash davrlari orasida paydo bo'lishi mumkin bo'lgan qisqa muddatli (ish yoki cron ishi) ob'ektlar uchun Pushgateway komponenti mavjud. Qisqa muddatli ob'ektlarning ko'rsatkichlari unga suriladi: ish ko'tarildi, harakat bajarildi, Pushgateway-ga o'lchovlar yuborildi va tugallandi. Bir muncha vaqt o'tgach, Prometey o'z tezligida tushadi va Pushgateway-dan ushbu ko'rsatkichlarni oladi.

Prometeyda bildirishnomalarni sozlash uchun alohida komponent mavjud - Ogohlantirish boshqaruvchisi. Va ogohlantirish qoidalari. Misol uchun, agar server API 0 bo'lsa, ogohlantirish yaratishingiz kerak. Hodisa boshlanganda ogohlantirish keyingi jo'natish uchun ogohlantirish menejeriga uzatiladi. Ogohlantirish menejerida juda moslashuvchan marshrutlash sozlamalari mavjud: ogohlantirishlarning bir guruhi administratorlarning telegram chatiga, ikkinchisi dasturchilar chatiga, uchinchisi esa infratuzilma xodimlarining chatiga yuborilishi mumkin. Bildirishnomalar Slack, Telegram, elektron pochta va boshqa kanallarga yuborilishi mumkin.

Va nihoyat, men sizga Prometey qotilining xususiyati haqida gapirib beraman - kashf. Prometey bilan ishlashda monitoring uchun ob'ektlarning aniq manzillarini ko'rsatish shart emas, ularning turini belgilash kifoya. Ya'ni, "mana IP-manzil, mana port - monitor" deb yozishning hojati yo'q, buning o'rniga ushbu ob'ektlarni qanday printsiplarga ko'ra topish kerakligini aniqlash kerak (maqsadlar - maqsadlar). Prometeyning o'zi, qaysi ob'ektlar hozirda faol bo'lishiga qarab, kerakli narsalarni tortib oladi va ularni monitoringga qo'shadi.

Bu yondashuv Kubernetes tuzilmasi bilan yaxshi mos keladi, u erda hamma narsa suzadi: bugun 10 ta server bor, ertaga 3. Serverning IP manzilini har safar ko'rsatmaslik uchun ular uni qanday topishni bir marta yozishgan - va Discovering buni amalga oshiradi. .

Prometey tili deyiladi PromQL. Ushbu tildan foydalanib, siz aniq ko'rsatkichlarning qiymatlarini olishingiz va keyin ularni o'zgartirishingiz, ular asosida analitik hisob-kitoblarni yaratishingiz mumkin.

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)

Prometey veb-interfeysi

Prometey o'zining juda minimalist veb-interfeysiga ega. Faqat disk raskadrovka yoki namoyish qilish uchun javob beradi.

Kubernetes klasterini kuzatish: Prometeyga umumiy nuqtai va kirish

Ifoda qatorida siz PromQL tilida so'rov yozishingiz mumkin.

Ogohlantirishlar yorlig'i ogohlantirish qoidalarini o'z ichiga oladi va ular uchta holatga ega:

  1. faol emas - agar ogohlantirish hozirda faol bo'lmasa, ya'ni u bilan hamma narsa yaxshi va u ishlamasa;
  2. kutilmoqda - bu ogohlantirish ishlagan bo'lsa, lekin yuborish hali o'tmagan bo'lsa. Kechikish tarmoqning miltillashini qoplash uchun o'rnatiladi: agar ko'rsatilgan xizmat bir daqiqa ichida ko'tarilgan bo'lsa, u holda signal hali chalinmasligi kerak;
  3. otish - ogohlantirish yonib, xabarlar yuborilganda uchinchi holat.

Status menyusida siz Prometey nima ekanligi haqidagi ma'lumotlarga kirish huquqini topasiz. Biz yuqorida aytib o'tgan maqsadlarga (maqsadlarga) o'tish ham mavjud.

Kubernetes klasterini kuzatish: Prometeyga umumiy nuqtai va kirish

Prometey interfeysi haqida batafsil ma'lumot uchun qarang Slurmning Kubernetes klasterini kuzatish bo'yicha ma'ruzasida.

Grafana bilan integratsiya

Prometey veb-interfeysida siz klaster holati haqida xulosa chiqarishingiz mumkin bo'lgan chiroyli va tushunarli grafiklarni topa olmaysiz. Ularni qurish uchun Prometey Grafana bilan birlashtirilgan. Biz bunday asboblar panelini olamiz.

Kubernetes klasterini kuzatish: Prometeyga umumiy nuqtai va kirish

Prometey va Grafana integratsiyasini o'rnatish umuman qiyin emas, siz hujjatlarda ko'rsatmalarni topishingiz mumkin: PROMETEYGA GRAFANA YORDAMXo'sh, men shu bilan tugataman.

Keyingi maqolalarda biz monitoring mavzusini davom ettiramiz: biz Grafana Loki va muqobil vositalar yordamida jurnallarni yig'ish va tahlil qilish haqida gapiramiz.

Muallif: Marsel Ibraev, sertifikatlangan Kubernetes administratori, kompaniyada amaliyotchi muhandis Sautbrij, ma'ruzachi va kursni ishlab chiquvchi Slurm.

Manba: www.habr.com

a Izoh qo'shish