Kuingia Kubernetes: EFK dhidi ya PLG

Kuingia Kubernetes: EFK dhidi ya PLG

Ufuatiliaji umekuwa sehemu muhimu sana ya kukua kwa ufumbuzi wa wingu kadiri ugumu wa mifumo iliyosambazwa unavyoongezeka. Inahitajika kuelewa tabia zao. Tunahitaji zana zinazoweza kuongezeka ambazo zinaweza kukusanya data kutoka kwa huduma zote - na kuwapa wataalamu kiolesura kimoja chenye uchanganuzi wa utendakazi, uonyeshaji wa makosa, upatikanaji na kumbukumbu.

Zana kama hizo lazima ziwe na tija na zenye tija. Katika makala hii, tutaangalia safu mbili za teknolojia maarufu: EFK (Elasticsearch) na PLG (Loki) na kuchunguza usanifu na tofauti zao.

Mkusanyiko wa EFK

Huenda tayari umesikia kuhusu ELK au EFK maarufu sana. Rafu hii ina sehemu kadhaa tofauti: Elasticsearch (hifadhi ya kitu), Logstash au FluentD (ukusanyaji wa kumbukumbu na ujumlisho), na Kibana kwa taswira.

Mtiririko wa kawaida wa kazi unaonekana kama hii:

Kuingia Kubernetes: EFK dhidi ya PLG

Elasticsearch - hifadhi ya kitu kilichosambazwa kwa utafutaji na uchanganuzi wa wakati halisi. Suluhisho bora kwa data iliyo na muundo kama vile kumbukumbu. Taarifa huhifadhiwa kama hati za JSON, zikiorodheshwa kwa wakati halisi na kusambazwa katika nodi za makundi. Faharasa iliyogeuzwa inatumiwa, iliyo na maneno yote ya kipekee na hati zinazohusiana kwa utafutaji wa maandishi kamili, ambayo kwa upande wake inategemea injini ya utafutaji ya Apache Lucene.

FasahaD ni mkusanyaji wa data anayeunganisha data wakati wa kuikusanya na kuitumia. Inajaribu kupanga data katika JSON iwezekanavyo. Usanifu wake unapanuliwa, kuna zaidi mamia ya upanuzi tofauti, inayoungwa mkono na jamii, kwa hafla zote.

Kibana - zana ya kuona data ya Elasticsearch yenye uwezo mbalimbali wa ziada, kwa mfano, uchanganuzi wa mfululizo wa saa, uchanganuzi wa grafu, ujifunzaji wa mashine na zaidi.

Usanifu wa Elasticsearch

Data ya nguzo ya Elasticsearch imehifadhiwa ikisambazwa katika nodi zake zote. Kundi linajumuisha nodi nyingi ili kuboresha upatikanaji na uthabiti. Nodi yoyote inaweza kutekeleza majukumu yote ya nguzo, lakini katika uwekaji wa kiwango kikubwa, nodi kwa kawaida hupewa kazi za kibinafsi.

Aina za nodi za nguzo:

  • nodi ya bwana - inasimamia nguzo, angalau tatu zinahitajika, moja ni kazi daima;
  • nodi ya data - huhifadhi data iliyoonyeshwa na hufanya kazi mbalimbali nayo;
  • nodi ya kumeza - hupanga bomba za kubadilisha data kabla ya kuashiria;
  • nodi ya kuratibu - maombi ya uelekezaji, kupunguza awamu ya usindikaji wa utaftaji, kuratibu indexing ya wingi;
  • nodi ya tahadhari - kuzindua kazi za tahadhari;
  • nodi ya kujifunza mashine - usindikaji kazi za kujifunza mashine.

Mchoro ulio hapa chini unaonyesha jinsi data inavyohifadhiwa na kunakiliwa katika sehemu zote ili kufikia upatikanaji wa data zaidi.

Kuingia Kubernetes: EFK dhidi ya PLG

Kila data ya nakala huhifadhiwa kwenye faharisi iliyogeuzwa, mchoro ulio hapa chini unaonyesha jinsi hii inavyotokea:

Kuingia Kubernetes: EFK dhidi ya PLG

Ufungaji

Maelezo yanaweza kutazamwa hapa, nitatumia chati ya usukani:

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

Rafu ya PLG

Usishangae ikiwa huwezi kupata kifupi hiki, kwani kinajulikana zaidi kama Grafana Loki. Kwa hali yoyote, stack hii inapata umaarufu kwa sababu inatumia ufumbuzi wa kiufundi uliothibitishwa. Huenda tayari umesikia kuhusu Grafana, chombo maarufu cha taswira. Waundaji wake, wakichochewa na Prometheus, walitengeneza Loki, mfumo wa ujumlishaji wa logi unaoweza kupanuka na wa utendaji wa juu. Loki hufahamisha metadata pekee, si majarida yenyewe, suluhisho la kiufundi ambalo huiruhusu kuwa rahisi kutumia na kwa gharama nafuu.

Promtail - wakala wa kutuma kumbukumbu kutoka kwa mfumo wa uendeshaji hadi kwenye nguzo ya Loki. grafana ni zana ya taswira kulingana na data kutoka Loki.

Kuingia Kubernetes: EFK dhidi ya PLG

Loki imejengwa kwa kanuni sawa na Prometheus, na kuifanya inafaa kwa kuhifadhi na kuchambua kumbukumbu za Kubernetes.

Usanifu wa Loki

Loki inaweza kuendeshwa kama mchakato mmoja au kama michakato mingi, ikiruhusu kuongeza mlalo.

Kuingia Kubernetes: EFK dhidi ya PLG

Inaweza pia kufanya kazi kama programu ya monolithic au kama huduma ndogo. Kuendesha kama mchakato mmoja kunaweza kuwa na manufaa kwa maendeleo ya ndani au kwa ufuatiliaji mdogo. Kwa utekelezaji wa viwanda na mzigo mkubwa wa kazi, inashauriwa kutumia chaguo la microservice. Njia za kuandika na kusoma data zimetenganishwa, kwa hivyo inaweza kusawazishwa vizuri na kuongezwa kama inavyohitajika.

Wacha tuangalie usanifu wa mfumo wa ukusanyaji wa logi bila kuingia kwa undani:

Kuingia Kubernetes: EFK dhidi ya PLG

Na hapa kuna maelezo (usanifu wa huduma ndogo):

Kuingia Kubernetes: EFK dhidi ya PLG

Vipengele:

Promtail - wakala aliyesakinishwa kwenye nodi (kama seti ya huduma), huondoa kumbukumbu kutoka kwa kazi na kufikia API ya Kubernetes ili kupata metadata ambayo itaweka kumbukumbu. Kisha hutuma logi kwa huduma kuu ya Loki. Ramani ya metadata inasaidia sheria sawa za kuweka lebo kama Prometheus.

Distributor - kisambazaji huduma kinachofanya kazi kama buffer. Ili kuchakata mamilioni ya rekodi, hupakia data inayoingia, na kuibana kwenye vizuizi inapofika. Sinki nyingi za data zinafanya kazi kwa wakati mmoja, lakini kumbukumbu za mtiririko mmoja wa data zinazoingia zinapaswa kuonekana tu katika mojawapo ya vizuizi vyake vyote. Hii imepangwa katika pete ya kuzama na hashing mfululizo. Kwa uvumilivu wa makosa na upungufu, hii inafanywa mara n (3 ikiwa haijasanidiwa).

Ingester - mpokeaji huduma. Vizuizi vya data hufika vikiwa vimebanwa na kumbukumbu zimeongezwa. Mara tu kizuizi kikiwa na ukubwa wa kutosha, kizuizi kinatupwa kwenye hifadhidata. Metadata huenda kwa faharisi, na data kutoka kwa kizuizi cha logi huenda kwa Chunks (kawaida uhifadhi wa kitu). Baada ya kuweka upya, mpokeaji huunda kizuizi kipya ambapo maingizo mapya yataongezwa.

Kuingia Kubernetes: EFK dhidi ya PLG

index - hifadhidata, DynamoDB, Cassandra, Google BigTable, nk.

Chunks β€” vizuizi vya magogo katika fomu iliyoshinikwa, kawaida huhifadhiwa kwenye uhifadhi wa kitu, kwa mfano, S3.

Muulizaji - njia ya kusoma ambayo hufanya kazi zote chafu. Huangalia safu ya saa na muhuri wa saa, na kisha huangalia faharasa ili kupata zinazolingana. Ifuatayo, inasoma vizuizi vya data na kuchuja ili kupata matokeo.

Sasa hebu tuone kila kitu kinavyofanya kazi.

Ufungaji

Njia rahisi zaidi ya kusakinisha Kubernetes ni kutumia helm. Tunadhania kuwa tayari umeisakinisha na kuisanidi (na toleo la tatu! takriban. mfasiri)

Ongeza hazina na usakinishe stack.

$ 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

Ifuatayo ni mfano wa dashibodi inayoonyesha data kutoka kwa Prometheus ya vipimo vya Etcd na Loki kwa kumbukumbu za pod Etcd.

Kuingia Kubernetes: EFK dhidi ya PLG

Sasa hebu tujadili usanifu wa mifumo yote miwili, na pia kulinganisha uwezo wao na kila mmoja.

Kulinganisha

Lugha ya kuuliza

Elasticsearch hutumia Hoji DSL na lugha ya hoja ya Lucene ili kutoa uwezo wa utafutaji wa maandishi kamili. Ni injini ya utafutaji iliyoanzishwa, yenye nguvu na usaidizi mpana wa waendeshaji. Kwa hiyo, unaweza kutafuta kwa muktadha na kupanga kwa umuhimu.

Kwa upande mwingine wa pete ni LogQL, inayotumiwa katika Loki, mrithi wa PromQL (Lugha ya maswali ya Prometheus). Inatumia vitambulisho vya kumbukumbu kuchuja na kuchagua data ya kumbukumbu. Inawezekana kutumia baadhi ya waendeshaji na hesabu kama ilivyoelezwa hapa, lakini kwa suala la uwezo iko nyuma ya lugha ya Elastic.

Kwa kuwa hoja katika Loki zinahusishwa na lebo, ni rahisi kuunganishwa na vipimo, na kwa sababu hiyo, ni rahisi kupanga ufuatiliaji wa uendeshaji nazo.

Scalability

Rafu zote mbili zinaweza kuongezeka kwa usawa, lakini Loki hurahisisha kwa sababu ina njia tofauti za kusoma na kuandika na usanifu wa huduma ndogo. Loki inaweza kubinafsishwa kulingana na mahitaji yako na inaweza kutumika kwa idadi kubwa sana ya data ya kumbukumbu.

Multitenancy

Cluster multitenancy ni mandhari ya kawaida katika kifupisho cha OPEX, rafu zote mbili hutoa multitenancy. Kuna kadhaa kwa Elasticsearch njia utengano wa mteja: faharasa tofauti kwa kila mteja, uelekezaji unaotegemea mteja, sehemu za kipekee za mteja, vichujio vya utafutaji. Loki ana kusaidia kwa namna ya kichwa cha HTTP X-Scope-OrgID.

Gharama

Loki ni ya gharama nafuu kwa sababu haielezi data, ni metadata tu. Hii inafanikiwa akiba kwenye hifadhi na kumbukumbu (cache), kwa kuwa uhifadhi wa kitu ni nafuu zaidi kuliko hifadhi ya kuzuia, ambayo hutumiwa katika makundi ya Elasticsearch.

Hitimisho

Rafu ya EFK inaweza kutumika kwa madhumuni mbalimbali, ikitoa usaidizi wa juu zaidi na kiolesura chenye vipengele vingi vya Kibana kwa uchanganuzi, taswira na hoja. Inaweza kuimarishwa zaidi na uwezo wa kujifunza kwa mashine.

Rafu ya Loki ni muhimu katika mfumo ikolojia wa Kubernetes kwa sababu ya utaratibu wake wa ugunduzi wa metadata. Unaweza kusawazisha data ya ufuatiliaji kwa urahisi kulingana na mfululizo wa saa katika Grafana na kumbukumbu.

Linapokuja suala la gharama na uhifadhi wa kumbukumbu wa muda mrefu, Loki ni mahali pazuri pa kuingia katika suluhisho za wingu.

Kuna njia mbadala zaidi kwenye soko - zingine zinaweza kuwa bora kwako. Kwa mfano, GKE ina ushirikiano wa Stackdriver ambayo hutoa ufumbuzi bora wa ufuatiliaji. Hatukujumuisha katika uchambuzi wetu katika makala hii.

Marejeo:

Nakala hiyo ilitafsiriwa na kutayarishwa kwa ajili ya Habr na wafanyakazi Kituo cha mafunzo cha slurm - kozi za kina, kozi za video na mafunzo ya ushirika kutoka kwa wataalamu wanaofanya mazoezi (Kubernetes, DevOps, Docker, Ansible, Ceph, SRE, Agile)

Chanzo: mapenzi.com

Kuongeza maoni