Kubernetesga kirish: EFK va PLG

Kubernetesga kirish: EFK va PLG

Taqsimlangan tizimlarning murakkabligi ortib borayotganligi sababli monitoring o'sib borayotgan bulutli echimlarning juda muhim tarkibiy qismiga aylandi. Ularning xatti-harakatlarini tushunish kerak. Bizga barcha xizmatlardan ma'lumotlarni to'plashi mumkin bo'lgan kengaytiriladigan vositalar kerak - va mutaxassislarga ishlash tahlili, xatolarni ko'rsatish, mavjudligi va jurnallari bilan yagona interfeys bilan ta'minlaydi.

Xuddi shu vositalar samarali va samarali bo'lishi kerak. Ushbu maqolada biz ikkita mashhur texnologiya steklarini ko'rib chiqamiz: EFK (Elasticsearch) va PLG (Loki) va ularning arxitekturasi va farqlarini ko'rib chiqamiz.

EFK to'plami

Siz allaqachon juda mashhur ELK yoki EFK haqida eshitgan bo'lishingiz mumkin. Stack bir nechta alohida qismlardan iborat: Elasticsearch (ob'ektni saqlash), Logstash yoki FluentD (jurnallarni yig'ish va yig'ish) va vizualizatsiya uchun Kibana.

Oddiy ish jarayoni quyidagicha ko'rinadi:

Kubernetesga kirish: EFK va PLG

Elasticsearch — qidiruv va real vaqtda tahlil qilish bilan taqsimlangan ob'ektni saqlash. Jurnallar kabi yarim tuzilgan ma'lumotlar uchun ajoyib yechim. Ma'lumotlar JSON hujjatlari sifatida saqlanadi, real vaqtda indekslanadi va klaster tugunlari bo'ylab taqsimlanadi. To'liq matnli qidirish uchun barcha noyob so'zlar va tegishli hujjatlarni o'z ichiga olgan invert indeks ishlatiladi, bu esa o'z navbatida Apache Lucene qidiruv tizimiga asoslangan.

FluentD ma'lumotlarni yig'ish va iste'mol qilishda ma'lumotlarni birlashtiruvchi ma'lumotlar yig'uvchisidir. U imkon qadar JSONdagi ma'lumotlarni tartibga solishga harakat qiladi. Uning arxitekturasi kengaytirilgan, ko'proq yuzlab turli kengaytmalar, barcha holatlar uchun hamjamiyat tomonidan qo'llab-quvvatlanadi.

kibana - turli xil qo'shimcha imkoniyatlarga ega Elasticsearch uchun ma'lumotlarni vizualizatsiya qilish vositasi, masalan, vaqt seriyalari tahlili, grafik tahlili, mashinani o'rganish va boshqalar.

Elasticsearch arxitekturasi

Elasticsearch klaster ma'lumotlari uning barcha tugunlari bo'ylab tarqalib saqlanadi. Klaster mavjudlik va chidamlilikni yaxshilash uchun bir nechta tugunlardan iborat. Har qanday tugun klasterning barcha rollarini bajarishi mumkin, lekin keng miqyosli joylashtirishda tugunlarga odatda individual vazifalar beriladi.

Klaster tugunlari turlari:

  • master tugun - klasterni boshqaradi, kamida uchtasi kerak, bittasi doimo faol;
  • ma'lumotlar tuguni - indekslangan ma'lumotlarni saqlaydi va u bilan turli vazifalarni bajaradi;
  • ingest node - indekslashdan oldin ma'lumotlarni o'zgartirish uchun quvurlarni tashkil qiladi;
  • muvofiqlashtiruvchi tugun - so'rovlarni yo'naltirish, qidiruvni qayta ishlash bosqichini qisqartirish, ommaviy indekslashni muvofiqlashtirish;
  • ogohlantiruvchi tugun — ogohlantirish vazifalarini ishga tushirish;
  • mashinani o'rganish tugun - mashinani o'rganish vazifalarini qayta ishlash.

Quyidagi diagrammada yuqoriroq ma'lumotlar mavjudligiga erishish uchun ma'lumotlar qanday saqlanishi va tugunlar bo'ylab takrorlanishi ko'rsatilgan.

Kubernetesga kirish: EFK va PLG

Har bir replika ma'lumotlari teskari indeksda saqlanadi, quyidagi diagrammada bu qanday sodir bo'lishi ko'rsatilgan:

Kubernetesga kirish: EFK va PLG

sozlama

Tafsilotlarni ko'rish mumkin shu yerda, Men rul diagrammasidan foydalanaman:

$ helm install efk-stack stable/elastic-stack --set logstash.enabled=false --set fluentd.enabled=true --set fluentd-elastics

PLG to'plami

Agar bu qisqartmani topa olmasangiz hayron bo'lmang, chunki u Grafana Loki nomi bilan mashhur. Har qanday holatda, bu stek mashhurlik kasb etmoqda, chunki u tasdiqlangan texnik echimlardan foydalanadi. Mashhur vizualizatsiya vositasi Grafana haqida allaqachon eshitgan bo'lishingiz mumkin. Uning yaratuvchilari Prometeydan ilhomlanib, gorizontal ravishda kengaytiriladigan, yuqori unumli loglarni yig'ish tizimi Lokini ishlab chiqdilar. Loki jurnallarning o'zini emas, faqat metama'lumotlarni indekslaydi, bu texnik yechimdan foydalanish oson va tejamkor bo'lishiga imkon beradi.

Promtail - operatsion tizimdan Loki klasteriga jurnallarni yuborish agenti. grafana Loki maʼlumotlariga asoslangan vizualizatsiya vositasidir.

Kubernetesga kirish: EFK va PLG

Loki Prometey bilan bir xil tamoyillar asosida qurilgan bo'lib, u Kubernetes jurnallarini saqlash va tahlil qilish uchun juda mos keladi.

Loki arxitekturasi

Loki gorizontal masshtablash imkonini beruvchi bitta jarayon yoki bir nechta jarayon sifatida ishga tushirilishi mumkin.

Kubernetesga kirish: EFK va PLG

U monolit dastur yoki mikroservis sifatida ham ishlashi mumkin. Yagona jarayon sifatida ishlash mahalliy rivojlanish yoki kichik monitoring uchun foydali bo'lishi mumkin. Sanoatda joriy etish va kengaytiriladigan ish yuki uchun mikroservis opsiyasidan foydalanish tavsiya etiladi. Ma'lumotlarni yozish va o'qish yo'llari ajratilgan, shuning uchun kerak bo'lganda uni nozik sozlash va o'lchash mumkin.

Keling, batafsil ma'lumot bermasdan jurnallarni yig'ish tizimining arxitekturasini ko'rib chiqaylik:

Kubernetesga kirish: EFK va PLG

Va bu erda tavsif (mikroservis arxitekturasi):

Kubernetesga kirish: EFK va PLG

Komponentlar:

Promtail — tugunlarga oʻrnatilgan agent (xizmatlar toʻplami sifatida), u vazifalardan jurnallarni olib tashlaydi va jurnallarni belgilovchi metamaʼlumotlarni olish uchun Kubernetes APIʼga kiradi. Keyin u jurnalni asosiy Loki xizmatiga yuboradi. Metadata xaritalash Prometey bilan bir xil teglash qoidalarini qo'llab-quvvatlaydi.

Distributor — bufer sifatida ishlaydigan xizmat distribyutori. Millionlab yozuvlarni qayta ishlash uchun u kiruvchi ma'lumotlarni to'playdi va kelganda ularni bloklarga siqib chiqaradi. Bir vaqtning o'zida bir nechta ma'lumotlarni to'plash moslamalari ishlaydi, lekin bitta kiruvchi ma'lumotlar oqimiga tegishli jurnallar faqat ularning birida uning barcha bloklari uchun paydo bo'lishi kerak. Bu lavabolar halqasi va ketma-ket xeshlash shaklida tashkil etilgan. Xatolarga chidamlilik va ortiqchalik uchun bu n marta amalga oshiriladi (agar sozlanmagan bo'lsa 3).

Ingester - xizmat ko'rsatuvchi qabul qiluvchi. Ma'lumotlar bloklari jurnallar qo'shilgan holda siqilgan holda keladi. Blok etarli hajmga ega bo'lgach, blok ma'lumotlar bazasiga o'tkaziladi. Metadata indeksga o'tadi va jurnal blokidagi ma'lumotlar Chunks (odatda ob'ektlarni saqlash) ga o'tadi. Qayta tiklashdan so'ng, qabul qiluvchi yangi yozuvlar qo'shiladigan yangi blok yaratadi.

Kubernetesga kirish: EFK va PLG

indeks - ma'lumotlar bazasi, DynamoDB, Cassandra, Google BigTable va boshqalar.

Parchalar — siqilgan shakldagi log bloklari, odatda ob'ektlarni saqlashda saqlanadi, masalan, S3.

So'rovchi - barcha iflos ishlarni bajaradigan o'qish yo'li. U vaqt oralig'i va vaqt tamg'asiga qaraydi, so'ngra mos keladiganlarni topish uchun indeksga qaraydi. Keyinchalik, u ma'lumotlar bloklarini o'qiydi va natijani olish uchun ularni filtrlaydi.

Keling, hamma narsani amalda ko'rib chiqaylik.

sozlama

Kubernetes-da o'rnatishning eng oson yo'li ruldan foydalanishdir. Siz uni allaqachon o'rnatgan va sozlagan deb taxmin qilamiz (va uchinchi versiya! taxminan. tarjimon)

Ombor qo'shing va stekni o'rnating.

$ helm repo add loki https://grafana.github.io/loki/charts
$ helm repo update
$ helm upgrade --install loki loki/loki-stack --set grafana.enabled=true,prometheus.enabled=true,prometheus.alertmanager.persistentVolume.enabled=false,prometheus.server.persistentVolume.enabled=false

Quyida Etcd ko'rsatkichlari uchun Prometey va Etcd pod jurnallari uchun Loki ma'lumotlarini ko'rsatadigan misol asboblar paneli mavjud.

Kubernetesga kirish: EFK va PLG

Endi ikkala tizimning arxitekturasini muhokama qilaylik, shuningdek, ularning imkoniyatlarini bir-biri bilan solishtiramiz.

Taqqoslash

So'rov tili

Elasticsearch to'liq matnli qidiruv imkoniyatlarini ta'minlash uchun Query DSL va Lucene so'rov tilidan foydalanadi. Bu keng ko'lamli operator qo'llab-quvvatlashiga ega o'rnatilgan, kuchli qidiruv tizimi. Uning yordamida siz kontekst bo'yicha qidirishingiz va dolzarbligi bo'yicha saralashingiz mumkin.

Ringning boshqa tomonida PromQL (Prometey so'rovlar tili) ning vorisi Loki-da qo'llaniladigan LogQL joylashgan. U jurnal ma'lumotlarini filtrlash va tanlash uchun jurnal teglaridan foydalanadi. Ta'riflanganidek, ba'zi operatorlar va arifmetikadan foydalanish mumkin shu yerda, lekin imkoniyatlari jihatidan u Elastik tildan orqada qoladi.

Loki-dagi so'rovlar teglar bilan bog'langanligi sababli, ularni ko'rsatkichlar bilan bog'lash oson va natijada ular yordamida operatsion monitoringni tashkil qilish osonroq.

Miqyosi

Ikkala stek ham gorizontal ravishda kengaytirilishi mumkin, ammo Loki buni osonlashtiradi, chunki u alohida o'qish va yozish yo'llari va mikroservis arxitekturasiga ega. Loki sizning ehtiyojlaringizga mos ravishda sozlanishi va juda katta hajmdagi jurnal ma'lumotlari uchun ishlatilishi mumkin.

Ko'p ijaraga olish

Klaster ko'p ijaraga olish OPEX qisqartmasidagi umumiy mavzu bo'lib, ikkala stek ham ko'p ijaraga olishni ta'minlaydi. Elasticsearch uchun bir nechta mavjud yo'llari mijozlarni ajratish: har bir mijoz uchun alohida indeks, mijozga asoslangan marshrutlash, noyob mijoz maydonlari, qidiruv filtrlari. Loki bor qo'llab-quvvatlash HTTP X-Scope-OrgID sarlavhasi shaklida.

qiymati

Loki juda tejamkor, chunki u ma'lumotlarni indekslamaydi, faqat metadata. Bu erishadi saqlash uchun tejash va xotira (kesh), chunki ob'ektni saqlash Elasticsearch klasterlarida ishlatiladigan blokli saqlashga qaraganda arzonroq.

xulosa

EFK stekidan turli maqsadlarda foydalanish mumkin, bu maksimal moslashuvchanlikni va analitik, vizualizatsiya va so'rovlar uchun boy funksiyalarga boy Kibana interfeysini ta'minlaydi. Uni mashinani o'rganish imkoniyatlari orqali yanada yaxshilash mumkin.

Loki stek metadata kashfiyot mexanizmi tufayli Kubernetes ekotizimida foydalidir. Grafana va jurnallardagi vaqt seriyalari asosida monitoring uchun ma'lumotlarni osongina o'zaro bog'lashingiz mumkin.

Narxlari va uzoq muddatli jurnallarni saqlash haqida gap ketganda, Loki bulutli echimlarga ajoyib kirish nuqtasidir.

Bozorda ko'proq alternativalar mavjud - ba'zilari siz uchun yaxshiroq bo'lishi mumkin. Masalan, GKE mukammal monitoring yechimini ta'minlovchi Stackdriver integratsiyasiga ega. Biz ularni ushbu maqoladagi tahlilimizga kiritmadik.

Manbalar:

Maqola xodimlar tomonidan tarjima qilingan va Habr uchun tayyorlangan Slurm o'quv markazi — amaliyotchi mutaxassislardan intensiv kurslar, video kurslar va korporativ treninglar (Kubernetes, DevOps, Docker, Ansible, Ceph, SRE, Agile)

Manba: www.habr.com

a Izoh qo'shish