Yury Bushmelev "Mapu a reke m'munda wosonkhanitsa ndi kutumiza zipika" - zolembedwa za lipotilo

Zipika ndi gawo lofunikira la dongosolo, zomwe zimakulolani kumvetsetsa kuti zimagwira ntchito (kapena sizikugwira ntchito) monga momwe mukuyembekezerera. Pansi pa zomangamanga za microservice, kugwira ntchito ndi zipika kumakhala njira yosiyana ya Olympiad Yapadera. Pali zovuta zambiri zomwe ziyenera kuthetsedwa:

  • momwe mungalembe zipika kuchokera ku pulogalamu;
  • kumene kulemba zipika;
  • momwe mungatumizire zipika kuti zisungidwe ndi kukonza;
  • momwe mungasungire ndi kusunga zipika.

Kugwiritsiridwa ntchito kwa matekinoloje odziwika omwe ali pakali pano kumawonjezera mchenga pamwamba pa nkhokwe m'malo othetsa mavuto.

Pafupifupi izi ndi zolembedwa za lipoti la Yuri Bushmelev "Mapu a reke m'munda wotolera ndi kutumiza zipika"

Ndani amasamala, chonde pansi pa mphaka.

Dzina langa ndine Yuri Bushmelev. Ndimagwira ntchito ku Lazada. Lero ndikamba za mmene tinapangira mitengo yathu, mmene tinatolera, ndi zimene timalemba kumeneko.

Yury Bushmelev "Mapu a reke m'munda wosonkhanitsa ndi kutumiza zipika" - zolembedwa za lipotilo

Kodi timachokera kuti? Ndife yani? Lazada ndi #1 wogulitsa pa intaneti m'maiko asanu ndi limodzi ku Southeast Asia. Maiko onsewa amagawidwa pakati pa malo opangira deta. Panopa pali malo okwana 4. Chifukwa chiyani izi ndizofunikira? Chifukwa zisankho zina zidachitika chifukwa chakuti pali kulumikizana kofooka kwambiri pakati pa malowa. Tili ndi kamangidwe ka microservice. Ndinadabwa kupeza kuti tili kale ndi ma microservices 80. Pamene ndinayamba ntchitoyi ndi zipika, zinalipo 20. Komanso, pali gawo lalikulu la cholowa cha PHP, chomwe ndimayenera kukhala nacho ndi kupirira. Zonsezi zimapangira ife pakadali pano mauthenga oposa 6 miliyoni pamphindi pa dongosolo lonse. Komanso ndikuwonetsa momwe tikuyesera kukhala ndi izi, ndi chifukwa chiyani zili choncho.

Yury Bushmelev "Mapu a reke m'munda wosonkhanitsa ndi kutumiza zipika" - zolembedwa za lipotilo

Muyenera kukhala ndi mauthenga 6 miliyoni awa mwanjira ina. Kodi tiyenera kuchita chiyani nawo? Mauthenga 6 miliyoni ofunikira:

  • tumizani ku app
  • kuvomereza kuti atumizidwe
  • perekani kuti mufufuze ndi kusungidwa.
  • pendani
  • sungani mwanjira ina.

Yury Bushmelev "Mapu a reke m'munda wosonkhanitsa ndi kutumiza zipika" - zolembedwa za lipotilo

Pamene panali mauthenga mamiliyoni atatu, ndinali ndi maonekedwe ofanana. Chifukwa tinayamba ndi ndalama zina. N'zoonekeratu kuti zolemba zolembera zalembedwa pamenepo. Mwachitsanzo, sinathe kulumikizidwa ku database, imatha kulumikizana ndi database, koma sinathe kuwerenga china chake. Koma kuwonjezera pa izi, iliyonse ya microservices yathu imalembanso chipika chofikira. Pempho lililonse lomwe likufika ku microservice limagwera mu chipika. N’chifukwa chiyani tikuchita zimenezi? Madivelopa akufuna kuti athe kutsatira. chipika chilichonse chofikira chimakhala ndi gawo la traceid, momwe mawonekedwe apadera amamasula unyolo wonse ndikuwonetsa bwino. Kufufuzaku kukuwonetsa momwe pempholi linayendera, ndipo izi zimathandiza opanga athu kuthana ndi zinyalala zosadziwika mwachangu.

Yury Bushmelev "Mapu a reke m'munda wosonkhanitsa ndi kutumiza zipika" - zolembedwa za lipotilo

Kodi kukhala nazo bwanji? Tsopano ndikufotokozerani mwachidule gawo la zosankha - momwe vutoli limathetsedwera nthawi zambiri. Momwe mungathetsere vuto la kutolera, kusamutsa ndi kusunga zipika.

Yury Bushmelev "Mapu a reke m'munda wosonkhanitsa ndi kutumiza zipika" - zolembedwa za lipotilo

Kodi kulemba kuchokera ntchito? N’zoonekeratu kuti pali njira zosiyanasiyana. Makamaka, pali machitidwe abwino, monga momwe ma comrades apamwamba amatiuzira. Pali mitundu iwiri ya sukulu yakale, monga agogo aamuna adanena. Palinso njira zina.

Yury Bushmelev "Mapu a reke m'munda wosonkhanitsa ndi kutumiza zipika" - zolembedwa za lipotilo

Ndi kusonkhanitsa zipika, zinthu pafupifupi zofanana. Palibe njira zambiri zothetsera gawoli. Pali ochuluka a iwo, koma osachulukabe.

Yury Bushmelev "Mapu a reke m'munda wosonkhanitsa ndi kutumiza zipika" - zolembedwa za lipotilo

Koma popereka ndi kusanthula kotsatira, chiwerengero cha zosiyana chimayamba kuphulika. Sindifotokoza njira iliyonse tsopano. Ndikuganiza kuti zosankha zazikuluzikulu zimadziwika bwino kwa aliyense amene anali ndi chidwi ndi mutuwo.

Yury Bushmelev "Mapu a reke m'munda wosonkhanitsa ndi kutumiza zipika" - zolembedwa za lipotilo

Ndikuwonetsani momwe tinachitira ku Lazada ndi momwe zidayambira.

Yury Bushmelev "Mapu a reke m'munda wosonkhanitsa ndi kutumiza zipika" - zolembedwa za lipotilo

Chaka chapitacho, ndinabwera ku Lazada ndipo ndinatumizidwa ku polojekiti ya zipika. Zinali chonchi kumeneko. Chipika chochokera ku pulogalamuyi chinalembedwa kuti stdout ndi stderr. Chilichonse chinkachitika m'njira yodziwika bwino. Koma otukulawo adayiponya kunja kwa mitsinje yokhazikika, ndiyeno akatswiri azachitukuko adzazindikira mwanjira ina. Pakati pa akatswiri a zomangamanga ndi omanga, palinso omasulidwa omwe anati: "uh ... chabwino, tiyeni tingowakulunga mu fayilo ndi chipolopolo, ndipo ndizomwezo." Ndipo popeza zonsezi zili m'chidebe, adazikulunga mu chidebecho momwemo, ndikujambula zolembazo mkati ndikuziyika pamenepo. Ndikuganiza kuti ndizodziwikiratu kwa aliyense zomwe zidachitika.

Yury Bushmelev "Mapu a reke m'munda wosonkhanitsa ndi kutumiza zipika" - zolembedwa za lipotilo

Tiyeni tione patsogolo pang'ono. Momwe timaperekera zipikazi. Wina adasankha td-agent, yemwe amalankhula bwino koma osalankhula bwino. Sindikumvetsabe ubale wa mapulojekiti awiriwa, koma zikuwoneka kuti ndi zofanana. Ndipo izi bwino, zolembedwa mu Ruby, werengani mafayilo olembera, kuwagawa mu JSON pogwiritsa ntchito mawu okhazikika. Kenako anatumizidwa ku Kafka. Komanso, ku Kafka, tinali ndi mitu 4 yosiyana pa API iliyonse. Chifukwa 4? Chifukwa pali moyo, pali siteji, ndipo chifukwa pali stdout ndi stderr. Madivelopa amawapanga, ndipo ogwira ntchito zamagulu ayenera kuwapanga ku Kafka. Komanso, Kafka inkalamulidwa ndi dipatimenti ina. Chifukwa chake, kunali kofunikira kupanga tikiti kuti apange mitu 4 pamenepo pa api iliyonse. Aliyense anayiwala za izo. Mwambiri, zinali zinyalala ndi zinyalala.

Yury Bushmelev "Mapu a reke m'munda wosonkhanitsa ndi kutumiza zipika" - zolembedwa za lipotilo

Kenako tinachita chiyani nazo? Tinatumiza ku kafka. Kupitilira ku Kafka, theka la mitengoyo idawulukira ku Logstash. Theka lina la mitengoyo linagawidwa. Ena adawulukira ku Graylog ina, ena kupita ku Graylog ina. Zotsatira zake, zonsezi zidawulukira mgulu limodzi la Elasticsearch. Ndiko kuti, chisokonezo chonsechi chinagwera pamapeto apo. Simukuyenera kutero!

Yury Bushmelev "Mapu a reke m'munda wosonkhanitsa ndi kutumiza zipika" - zolembedwa za lipotilo

Izi ndi momwe zimawonekera mukaziwona kuchokera pamwamba. Simukuyenera kutero! Apa, madera ovuta amalembedwa nthawi yomweyo ndi manambala. Pali ochulukirapo, koma 6 ndizovuta kwambiri, zomwe ziyenera kuchitika. Ndidzawauza padera tsopano.

Yury Bushmelev "Mapu a reke m'munda wosonkhanitsa ndi kutumiza zipika" - zolembedwa za lipotilo

Apa (1,2,3) timalemba mafayilo ndipo, motero, pali ma rakes atatu nthawi imodzi.

Choyamba (1) ndi chakuti tiyenera kuzilemba penapake. Sikoyenera nthawi zonse kupatsa API luso lolemba mwachindunji ku fayilo. Ndikofunikira kuti API ikhale yokha mu chidebe, ndipo ngakhale bwino, kuti iwerengedwe kokha. Ndine woyang'anira dongosolo, kotero ndili ndi malingaliro ena pang'ono pazinthu izi.

Mfundo yachiwiri (2,3) ndikuti tili ndi zopempha zambiri zomwe zikubwera ku API. API imalemba zambiri ku fayilo. Mafayilo akukula. Tiyenera kuwazungulira. Chifukwa mwina simungathe kusunga ma disc aliwonse pamenepo. Kuzizungulira ndizoyipa chifukwa zimasinthidwa kudzera mu chipolopolo kupita ku chikwatu. Palibe njira yomwe tingazizungulire. Simungauze pulogalamuyo kuti itsegulenso zogwirira. Chifukwa opanga adzakuyang'anani ngati chitsiru: "Mafotokozedwe anji? Nthawi zambiri timalembera stdout. Ma frameworks adapanga copytruncate kukhala logrotate, zomwe zimangopanga kope la fayilo ndi thunthu kukhala loyambirira. Chifukwa chake, pakati pa njira zokopera izi, malo a disk nthawi zambiri amatha.

(4) Tinali ndi maonekedwe osiyanasiyana mu ma API osiyanasiyana. Zinali zosiyana pang'ono, koma regexp idayenera kulembedwa mosiyana. Popeza zonsezi zinkayendetsedwa ndi Chidole, panali makalasi ambiri okhala ndi mphemvu zawo. Kuphatikiza apo, td-agent nthawi zambiri amatha kudya kukumbukira, kukhala opusa, amangoyerekeza kuti akugwira ntchito osachita chilichonse. Kunja, kunali kosatheka kumvetsetsa kuti sanali kuchita kalikonse. Pabwino, adzagwa, ndipo wina adzamunyamula pambuyo pake. Kunena zowona, chenjezo lidzawulukira, ndipo wina adzapita ndikulikweza ndi manja awo.

Yury Bushmelev "Mapu a reke m'munda wosonkhanitsa ndi kutumiza zipika" - zolembedwa za lipotilo

(6) Ndipo kwambiri zinyalala ndi zinyalala - anali elasticsearch. Chifukwa linali Baibulo lakale. Chifukwa tinalibe ambuye odzipatulira panthawiyo. Tinali ndi zipika zamitundumitundu zomwe minda yake imatha kupindika. Zipika zosiyanasiyana za mapulogalamu osiyanasiyana zitha kulembedwa ndi mayina amasamba omwewo, koma nthawi yomweyo pangakhale deta yosiyana mkati. Ndiye kuti, chipika chimodzi chimabwera ndi Integer m'munda, mwachitsanzo, mlingo. chipika china chimabwera ndi Chingwe pagawo lamulingo. Kupanda kupanga mapu osasunthika, chinthu chodabwitsa chotere chimachitika. Ngati, pambuyo pozungulira index, uthenga wokhala ndi chingwe udafika koyamba mu elasticsearch, ndiye kuti timakhala bwino. Ndipo ngati woyamba adafika ndi Integer, ndiye kuti mauthenga onse omwe adafika ndi String amangotayidwa. Chifukwa mtundu wamunda sukugwirizana.

Yury Bushmelev "Mapu a reke m'munda wosonkhanitsa ndi kutumiza zipika" - zolembedwa za lipotilo

Tinayamba kufunsa mafunso awa. Tinaganiza kuti tisayang'ane olakwa.

Yury Bushmelev "Mapu a reke m'munda wosonkhanitsa ndi kutumiza zipika" - zolembedwa za lipotilo

Koma chinachake chiyenera kuchitika! Chodziwikiratu ndi chakuti tiyenera kukhazikitsa miyezo. Tinali ndi miyezo ina. Zina tinabwera nazo patapita nthawi. Mwamwayi, mtundu umodzi wa chipika cha ma API onse anali ovomerezeka kale panthawiyo. Zimalembedwa mwachindunji muzochita zogwirizanitsa ntchito. Motero, amene akufuna kulandira zipika azilemba motere. Ngati wina salemba zipika mwanjira iyi, ndiye kuti sitikutsimikizira chilichonse.

Komanso, ndikufuna kukhala ndi muyezo umodzi wa njira zojambulira, kutumiza ndi kusonkhanitsa zipika. Kwenikweni, komwe mungawalembere, ndi momwe mungawaperekere. Mkhalidwe wabwino ndi pamene mapulojekiti amagwiritsa ntchito laibulale yomweyo. Pali laibulale yosiyana yodula mitengo ya Go, pali laibulale yosiyana ya PHP. Aliyense amene tili nawo, aliyense ayenera kuwagwiritsa ntchito. Pakali pano, ndinganene kuti tikupambana ndi 80 peresenti. Koma ena akupitiriza kudya cacti.

Ndipo pamenepo (pa slide) "SLA yopereka chipika" ikuyamba kuwonekera. Palibe panobe, koma tikugwira ntchito. Chifukwa ndizosavuta kwambiri pamene infra imanena kuti ngati mulemba mumtundu woterewu ku malo otere komanso osaposa mauthenga a N pamphindikati, ndiye kuti tidzapereka kumeneko. Zimachotsa mutu wambiri. Ngati pali SLA, ndiye zabwino basi!

Yury Bushmelev "Mapu a reke m'munda wosonkhanitsa ndi kutumiza zipika" - zolembedwa za lipotilo

Tinayamba bwanji kuthetsa vutolo? Chokwera chachikulu chinali ndi td-agent. Sizikudziwika kumene mitengo yathu imapita. Kodi amaperekedwa? Kodi akupita? Nanga ali kuti? Chifukwa chake, adaganiza zosintha td-agent ndi chinthu choyamba. Zosankha zomwe mungasinthire nazo, ndafotokoza mwachidule apa.

Wophunzira bwino. Choyamba, ndinamupeza ali pantchito yam'mbuyomu, ndipo nthawi zina amagwera pamenepo. Kachiwiri, izi ndizofanana, mumbiri.

filebeat. Zinali zabwino bwanji kwa ife? Mfundo yakuti ali mu Go, ndipo tili ndi ukatswiri waukulu mu Go. Chifukwa chake, ngati pali chilichonse, titha kudziwonjezera mwanjira ina. Ndicho chifukwa chake sitinachitenge. Kotero kuti pasakhale ngakhale yesero loti muyambe kulembanso nokha.

Yankho lodziwikiratu la sysadmin ndi mitundu yonse ya ma syslogs mu kuchuluka uku (syslog-ng/rsyslog/nxlog).

Kapena lembani zanuzanu, koma tazitaya, komanso filebeat. Ngati mulemba chinachake, ndiye kuti ndi bwino kulemba chinachake chothandiza pa bizinesi. Kuti mupereke zipika, ndi bwino kutenga chinthu chokonzekera.

Chifukwa chake, kusankha kudabwera pakusankha pakati pa syslog-ng ndi rsyslog. Ndidatsamira ku rsyslog chifukwa tinali ndi makalasi a rsyslog mu Chidole, ndipo sindinapeze kusiyana koonekeratu pakati pawo. Kodi syslog ndi chiyani, syslog ndi chiyani. Inde, zolemba zina ndizoyipa, zina zabwinoko. Amadziwa mwanjira imeneyi, ndipo amazichita mosiyana.

Yury Bushmelev "Mapu a reke m'munda wosonkhanitsa ndi kutumiza zipika" - zolembedwa za lipotilo

Ndipo pang'ono za rsyslog. Choyamba, ndizozizira chifukwa zili ndi ma modules ambiri. Ili ndi RainerScript yowerengeka ndi anthu (chilankhulo chamakono). Bonasi yodabwitsa ndikuti titha kutengera machitidwe a td-agent ndi zida zake zokhazikika, ndipo palibe chomwe chasintha pamagwiritsidwe ntchito. Ndiye kuti, timasintha td-agent kukhala rsyslog, ndipo osakhudza china chilichonse. Ndipo nthawi yomweyo timapeza ntchito yobereka. Chotsatira, mmnormalize ndiye chinthu chabwino chokhudza rsyslog. Zimakulolani kuti muwerenge zipika, koma osati ndi Grok ndi regexp. Zimapanga mtengo wosawoneka bwino wa syntax. Imagawa zipika mofanana ndi momwe wopanga amagawira ma source code. Izi zimakulolani kuti mugwire ntchito mofulumira kwambiri, kudya CPU yaying'ono, ndipo, kawirikawiri, ndi chinthu chozizira kwambiri. Pali mulu wa mabonasi ena. sindikhala pa iwo.

Yury Bushmelev "Mapu a reke m'munda wosonkhanitsa ndi kutumiza zipika" - zolembedwa za lipotilo

rsyslog ili ndi zovuta zambiri. Iwo ali ofanana ndi mabonasi. Zovuta zazikulu ndikuti muyenera kuziphika, ndipo muyenera kusankha mtundu.

Yury Bushmelev "Mapu a reke m'munda wosonkhanitsa ndi kutumiza zipika" - zolembedwa za lipotilo

Tinaganiza kuti tilembe zipika mu soketi ya unix. Ndipo osati mu /dev/log, chifukwa kumeneko tili ndi chisokonezo cha mitengo, pali zolembedwa mupaipi iyi. Ndiye tiyeni tilembe ku socket yokhazikika. Tidzachiphatikizira ku dongosolo lapadera. Tisasokoneze chilichonse. Chilichonse chidzakhala chowonekera komanso chomveka. Kotero ife tinaterodi. Chikwatu chokhala ndi sockets ndi chokhazikika ndikutumizidwa ku makontena onse. Zotengera zimatha kuwona soketi yomwe akufuna, kuzitsegula ndikuzilembera.

Bwanji osalemba fayilo? Chifukwa aliyense wawerenga nkhani za Badushechka, yomwe idayesa kutumiza fayilo ku docker, ndipo idapeza kuti mutayambitsanso rsyslog, chofotokozera cha fayilo chimasintha, ndipo docker imataya fayiloyi. Amatsegula chinthu china, koma osati socket yomwe amalembera. Tinaganiza kuti tilambalale vutoli, ndipo, nthawi yomweyo, kulambalala vuto lotsekereza.

Yury Bushmelev "Mapu a reke m'munda wosonkhanitsa ndi kutumiza zipika" - zolembedwa za lipotilo

Rsyslog imachita zomwe zasonyezedwa pa slide ndikutumiza zipika ku relay kapena Kafka. Kafka amatsatira njira yakale. Rayleigh - Ndinayesa kugwiritsa ntchito rsyslog yoyera kuti ndipereke zipika. Popanda Mndandanda wa Mauthenga, pogwiritsa ntchito zida za rsyslog. Kwenikweni, zimagwira ntchito.

Yury Bushmelev "Mapu a reke m'munda wosonkhanitsa ndi kutumiza zipika" - zolembedwa za lipotilo

Koma pali ma nuances amomwe mungawayikire pambuyo pake mu gawo ili (Logstash/Graylog/ES). Gawo ili (rsyslog-rsyslog) limagwiritsidwa ntchito pakati pa datacenters. Pano pali ulalo woponderezedwa wa tcp, womwe umakulolani kuti musunge bandwidth ndipo, moyenerera, mwanjira ina ndikuwonjezera mwayi woti tilandire zipika kuchokera kumalo ena a data pomwe njirayo ili yodzaza. Chifukwa tili ndi Indonesia, komwe zonse ndi zoipa. Ndiko komwe kuli vuto lokhazikika.

Yury Bushmelev "Mapu a reke m'munda wosonkhanitsa ndi kutumiza zipika" - zolembedwa za lipotilo

Tidaganiza za momwe timawonera, ndi mwayi wotani kuti zolemba zomwe tidalemba kuchokera ku pulogalamuyi zimatha kufika pamenepo? Tinaganiza zoyambitsa ma metric. Rsyslog ili ndi gawo lake lotolera ziwerengero, lomwe lili ndi zowerengera zamtundu wina. Mwachitsanzo, ikhoza kukuwonetsani kukula kwa mzere, kapena ndi mauthenga angati omwe adabwera kuti achite izi. Inu mukhoza kutenga kale chinachake kwa iwo. Kuphatikiza apo, ili ndi zowerengera zomwe mungathe kuzikonza, ndipo ikuwonetsani, mwachitsanzo, kuchuluka kwa mauthenga omwe API ina yalemba. Kenaka, ndinalemba rsyslog_exporter ku Python, ndipo tinatumiza zonse ku Prometheus ndikukonzekera. Tinkafuna kwambiri ma metric a Graylog, koma mpaka pano sitinakhale ndi nthawi yowakhazikitsa.

Yury Bushmelev "Mapu a reke m'munda wosonkhanitsa ndi kutumiza zipika" - zolembedwa za lipotilo

Mavuto ndi chiyani? Vuto lidabwera chifukwa tidapeza (MODZIWADZIWA!) Kuti ma API athu a Live amalemba mauthenga a 50k pamphindikati. Iyi ndi Live API yokha popanda siteji. Ndipo Graylog amangotiwonetsa mauthenga 12 zikwi pamphindikati. Ndipo funso lomveka linabuka, otsalirawo ali kuti? Kuchokera pamene tinaganiza kuti Graylog sangathe kupirira. Tidayang'ana, ndipo, ndithudi, Graylog yokhala ndi Elasticsearch sanadziwe bwino izi.

Kenako, zinthu zina zimene tatulukira m'njira.

Zolembera ku socket zatsekedwa. Zinachitika bwanji? Ndikagwiritsa ntchito rsyslog popereka, nthawi ina tidathyola njira pakati pa ma data. Kutumiza kunakwera pamalo amodzi, kubweretsa kunakwera kwina. Zonsezi zatsikira pamakina omwe ali ndi ma API omwe amalembera socket ya rsyslog. Panali mzera. Kenako mzere wolembera ku socket unix udadzaza, womwe mwachisawawa ndi mapaketi 128. Ndipo chotsatira cholemba () mu midadada yofunsira. Tikayang'ana laibulale yomwe timagwiritsa ntchito mu Go applications, zidalembedwa pamenepo kuti kulembera ku socket kumachitika mosatsekereza. Tinali otsimikiza kuti palibe chomwe chinatsekedwa. Chifukwa tawerenga nkhani za Badushechkaamene analemba za izo. Koma pali mphindi. Panalinso kuzungulira kopanda malire kuzungulira kuyimba uku, momwe munali kuyesa kosalekeza kukankhira uthenga mu socket. Sitinamuzindikire. Ndinayenera kulembanso laibulale. Kuyambira nthawi imeneyo, zasintha kangapo, koma tsopano tachotsa maloko m'magawo onse. Chifukwa chake, mutha kuyimitsa rsyslog ndipo palibe chomwe chidzagwa.

Ndikofunikira kuyang'anira kukula kwa mizere, zomwe zimathandiza kuti musapondepo. Choyamba, tikhoza kuwunika tikayamba kutaya mauthenga. Chachiwiri, titha kuyang'anira kuti tili ndi zovuta pakubereka.

Ndipo mphindi ina yosasangalatsa - kukulitsa nthawi 10 muzomangamanga za microservice ndikosavuta. Tilibe zopempha zambiri zomwe zikubwera, koma chifukwa cha graph yomwe mauthengawa amapita patsogolo, chifukwa cha zipika zolowera, timawonjezera katundu pazipika pafupifupi nthawi khumi. Tsoka ilo, ndinalibe nthawi yowerengera manambala enieni, koma ma microservices ndi omwe ali. Izi ziyenera kukumbukiridwa. Zikuoneka kuti pakali pano ndondomeko yosonkhanitsira chipika ndiyo yodzaza kwambiri ku Lazada.

Yury Bushmelev "Mapu a reke m'munda wosonkhanitsa ndi kutumiza zipika" - zolembedwa za lipotilo

Momwe mungathetsere vuto la elasticsearch? Ngati mukufuna kupeza mwachangu zipika pamalo amodzi, kuti musathamangire pamakina onse ndikusonkhanitsa pamenepo, gwiritsani ntchito kusungirako mafayilo. Izi zimatsimikiziridwa kuti zigwira ntchito. Zimapangidwa kuchokera ku seva iliyonse. Mukungoyenera kumamatira ma disks pamenepo ndikuyika syslog. Pambuyo pake, mukutsimikiziridwa kuti muli ndi zipika zonse pamalo amodzi. Ndiye zidzatheka kukonza pang'onopang'ono elasticsearch, graylog, kapena china. Koma mudzakhala kale ndi zipika zonse, ndipo, kuwonjezera apo, mukhoza kuzisunga, monga pali ma disks okwanira.

Yury Bushmelev "Mapu a reke m'munda wosonkhanitsa ndi kutumiza zipika" - zolembedwa za lipotilo

Panthawi ya lipoti langa, ndondomekoyi inayamba kuwoneka motere. Tinasiya kulembera fayiloyo. Tsopano, mothekera, tidzazimitsa zotsalira. Pamakina am'deralo omwe akuyendetsa API, tidzasiya kulembera mafayilo. Choyamba, pali kusungirako mafayilo, komwe kumagwira ntchito bwino kwambiri. Kachiwiri, makinawa akutha nthawi zonse, muyenera kuyang'anira nthawi zonse.

Gawo ili ndi Logstash ndi Graylog, likukweradi. Choncho, muyenera kuchotsa izo. Muyenera kusankha chimodzi.

Yury Bushmelev "Mapu a reke m'munda wosonkhanitsa ndi kutumiza zipika" - zolembedwa za lipotilo

Tinaganiza zosiya Logstash ndi Kibana. Chifukwa tili ndi dipatimenti yachitetezo. kugwirizana ndi chiyani? Kulumikizana ndikuti Kibana wopanda X-Pack komanso wopanda Shield samakulolani kusiyanitsa ufulu wopeza zipika. Chifukwa chake, adatenga Graylog. Izo ziri nazo zonse. Sindimakonda, koma zimagwira ntchito. Tidagula zida zatsopano, ndikuyika Graylog yatsopano pamenepo, ndikusuntha mitengo yonse yokhala ndi mawonekedwe okhwima kupita ku Graylog yosiyana. Tathetsa vutoli ndi mitundu yosiyanasiyana ya magawo omwewo mwadongosolo.

Yury Bushmelev "Mapu a reke m'munda wosonkhanitsa ndi kutumiza zipika" - zolembedwa za lipotilo

Zomwe kwenikweni zikuphatikizidwa mu Graylog yatsopano. Tinangolemba zonse mu docker. Tidatenga ma seva ambiri, tidatulutsa ma Kafka atatu, ma seva 7 a Graylog 2.3 (chifukwa ndimafuna mtundu wa Elasticsearch 5). Zonsezi zidakwezedwa pakuwukira kwa HDD. Tidawona kuchuluka kwa mauthenga ofikira 100 zikwi pa sekondi imodzi. Tidawona kuchuluka kwa data 140 terabytes pa sabata.

Yury Bushmelev "Mapu a reke m'munda wosonkhanitsa ndi kutumiza zipika" - zolembedwa za lipotilo

Ndipo kachiwiri chowotcha! Tili ndi malonda awiri omwe akubwera. Tadutsa ma post 6 miliyoni. Ife Graylog alibe nthawi kutafuna. Mwanjira ina muyenera kupulumuka kachiwiri.

Yury Bushmelev "Mapu a reke m'munda wosonkhanitsa ndi kutumiza zipika" - zolembedwa za lipotilo

Umu ndi mmene tinapulumukira. Anawonjezera ma seva ena angapo ndi ma SSD. Pakali pano tikukhala chonchi. Tsopano tikudya kale mauthenga okwana 160k pamphindikati. Sitinafikebe mpaka pano, kotero sizikudziwika kuti tingathe kupeza zochuluka motani.

Yury Bushmelev "Mapu a reke m'munda wosonkhanitsa ndi kutumiza zipika" - zolembedwa za lipotilo

Awa ndi mapulani athu amtsogolo. Mwa izi, chofunikira kwambiri ndi kupezeka kwakukulu. Ife tiribe iyo panobe. Magalimoto angapo amakhazikitsidwa mofanana, koma mpaka pano zonse zikudutsa galimoto imodzi. M'pofunika kuthera nthawi kukhazikitsa failover pakati pawo.

Sungani ma metric kuchokera ku Graylog.

Pangani malire kuti mukhale ndi API yopenga yomwe satipha bandwidth ndi china chilichonse.

Ndipo potsiriza, saina mtundu wina wa SLA ndi opanga kuti titha kutumikira kwambiri. Ngati mulemba zambiri, pepani.

Ndipo lembani zolembedwa.

Yury Bushmelev "Mapu a reke m'munda wosonkhanitsa ndi kutumiza zipika" - zolembedwa za lipotilo

Mwachidule, zotsatira za zonse zomwe takumana nazo. Choyamba, miyezo. Chachiwiri, syslog ndi keke. Chachitatu, rsyslog imagwira ntchito ndendende momwe idalembedwera pa slide. Ndipo tiyeni tifike ku mafunso.

Mafunso anu.

funso: Chifukwa chiyani adasankha kusatenga ... (filebeat?)

Yankhani: Muyenera kulemba ku fayilo. Sindinkafuna kwenikweni. API yanu ikalemba masauzande a mauthenga pamphindikati, ngakhale mutazungulira kamodzi pa ola, ichi sichingakhale chosankha. Mutha kulemba ku chitoliro. Kumene opanga adandifunsa kuti: "Kodi chingachitike ndi chiyani ngati njira yomwe timalemba ikagwa"? Sindinapeze choti ndiwayankhe, ndipo ndinati: "Chabwino, chabwino, tisachite zimenezo."

funso: Bwanji osangolemba zipika ku HDFS?

YankhaniA: Iyi ndi siteji yotsatira. Tidaziganizira koyambirira, koma popeza palibe zothandizira kuthana nazo pakadali pano, zimakhazikika munjira yathu yayitali.

funso: Mtundu wa mzati ungakhale woyenera kwambiri.

Yankhani: Ndikumvetsa. Ndife "a" ndi manja onse awiri.

funso: Mukulemba ku rsyslog. Onse TCP ndi UDP zilipo kumeneko. Koma ngati UDP, ndiye mumatsimikizira bwanji kutumiza?

YankhaniA: Pali mfundo ziwiri. Choyamba, nthawi yomweyo ndimauza aliyense kuti sitikutsimikizira kubweretsa zipika. Chifukwa pamene opanga abwera ndi kunena kuti: "Tiyeni tiyambe kulemba deta yachuma kumeneko, ndipo mudzatiyika kwinakwake ngati chinachake chichitika," timawayankha kuti, "Zabwino! Tiyeni tiyambe kutsekereza polemba ku socket, ndikuzichita muzochita, kuti mutsimikize kutiyika muzitsulo kwa ife ndikuonetsetsa kuti talandira kuchokera kumbali ina. Ndipo panthawiyi, aliyense nthawi yomweyo amakhala wosafunikira. Ndipo ngati sichoncho, ndiye kuti tili ndi mafunso otani? Ngati simukufuna kutsimikizira kalata ku socket, ndiye chifukwa chiyani tikukutsimikizirani kutumizidwa? Tikuchita khama kwambiri. Timayesetsa kupereka momwe tingathere komanso momwe tingathere, koma sitipereka chitsimikizo cha 100%. Choncho, simuyenera kulemba deta zachuma kumeneko. Pali zosunga zobwezeretsera za izi.

funso: API ikapanga uthenga ku chipika ndikusamutsa kuwongolera ku ma microservices, kodi mwakumana ndi vuto loti mauthenga ochokera ku ma microservices osiyanasiyana amafika molakwika? Chifukwa cha ichi, chisokonezo chimawuka.

YankhaniA: Ndi zachilendo kuti amabwera mosiyanasiyana. Muyenera kukhala okonzekera izi. Chifukwa kutumiza kulikonse pa intaneti sikukutsimikizirani dongosolo, kapena muyenera kugwiritsa ntchito zida zapadera pa izi. Ngati titenga mafayilo osungira, ndiye kuti API iliyonse imasunga zipika ku fayilo yake. M'malo mwake, rsyslog imawawola kukhala mayendedwe pamenepo. API iliyonse ili ndi zipika zake kumeneko, komwe mungapite kukayang'ana, ndiyeno mutha kuzifanizira pogwiritsa ntchito sitampu yanthawi mu chipikachi. Ngati apita kukayang'ana mu Graylog, ndiye pamenepo adzasanjidwa ndi sitampu yanthawi. Zonse zikhala bwino pamenepo.

funso: Chidindo chanthawi chikhoza kusiyana ndi ma milliseconds.

Yankhani: The timestamp imapangidwa ndi API yokha. Izi, kwenikweni, ndiye mfundo yonse. Tili ndi NTP. API imapanga sitampu yanthawi yomwe ili kale mu uthenga womwewo. Sichiwonjezedwa ndi rsyslog.

funso: Kuyanjana pakati pa malo opangira deta sikumveka bwino. Mkati mwa dongosolo la data center, zikuwonekeratu momwe zipikazo zinasonkhanitsira ndi kukonzedwa. Kodi kuyanjana pakati pa ma data center kuli bwanji? Kapena kodi deta iliyonse imakhala ndi moyo wake?

Yankhani: Pafupifupi. Tili ndi dziko lililonse lomwe lili pamalo amodzi a data. Pakalipano sitinafalikire, kotero kuti dziko limodzi limayikidwa m'malo osiyanasiyana a deta. Choncho, palibe chifukwa chowaphatikiza. Mkati mwa likulu lililonse muli Log Relay. Iyi ndi seva ya Rsyslog. Ndipotu, makina awiri oyang'anira. Amakhazikitsidwa chimodzimodzi. Koma pakadali pano, magalimoto amangodutsa m'modzi mwa iwo. Iye amalemba zonse aggregates. Ili ndi mzere wa disk ngati ungakhalepo. Amakankhira zipikazo ndikuzitumiza ku malo apakati a data (Singapore), komwe kupitilira apo ali ndi poizoni ku Graylog. Ndipo malo aliwonse a data ali ndi malo ake osungirako mafayilo. Ngati tataya kulumikizana, tili ndi zipika zonse pamenepo. Iwo adzakhala kumeneko. Adzasungidwa kumeneko.

funso: Kodi mumapeza zipika kuchokera kumeneko pakachitika zachilendo?

Yankhani: Mutha kupita kumeneko (kusungirako mafayilo) ndikuyang'ana.

funso: Mumawunika bwanji kuti musataye zipika?

Yankhani: Tikuwataya, ndipo tikuwunika. Kuyang'anira kudayamba mwezi wapitawo. Laibulale yomwe ma Go APIs amagwiritsa ntchito ili ndi ma metric. Amatha kuwerengera kuti adalephera kangati kulemba ku socket. Pakali pano pali heuristic yachinyengo. Pali buffer pamenepo. Imayesa kulemba uthenga kuchokera pamenepo kupita ku socket. Ngati buffer ikasefukira, imayamba kuwagwetsa. Ndipo amawerengera kuti adagwetsa zingati. Ngati zowerengera ziyamba kusefukira pamenepo, tidzadziwa za izi. Tsopano akubweranso ku prometheus, ndipo mutha kuwona ma graph ku Grafana. Mutha kukhazikitsa zidziwitso. Koma sizinadziwikebe kuti awatumize kwa ndani.

funso: Mu elasticsearch, mumasunga zipika ndi redundancy. Kodi muli ndi zofananira zingati?

Yankhani: Chifaniziro chimodzi.

funso: Kodi ndi mzere umodzi wokha?

Yankhani: Uyu ndiye mbuye ndi chofanizira. Zambiri zimasungidwa muwiri.

funso: Kodi munasintha kukula kwa buffer ya rsyslog mwanjira ina?

Yankhani: Timalemba ma datagraphs ku socket ya unix. Izi nthawi yomweyo zimatipatsa malire a 128 kilobytes pa ife. Sitingathe kulemba zambiri mu izo. Talemba izi mu muyezo. Amene akufuna kulowa mu yosungirako, amalemba 128 kilobytes. Ma library, kuwonjezera apo, amadula, ndikuyika mbendera kuti uthengawo wadulidwa. Tili ndi gawo lapadera mu muyezo wa uthenga wokha, womwe umasonyeza ngati unadulidwa panthawi yojambula kapena ayi. Chifukwa chake tili ndi mwayi wotsata mphindi ino.

Funso: Mukulemba JSON wosweka?

Yankhani: JSON yosweka idzatayidwa mwina panthawi yopatsirana chifukwa paketi ndi yayikulu kwambiri. Kapena Graylog idzagwetsedwa, chifukwa siidzatha kufotokoza JSON. Koma pali ma nuances pano omwe amafunika kukonzedwa, ndipo amamangiriridwa ku rsyslog. Ndalemba kale zolemba zingapo kumeneko, zomwe zikufunikabe kukonzedwa.

Funso: Chifukwa Kafka? Kodi mwayesapo RabbitMQ? Graylog sichikuwonjezera pansi pa katundu wotere?

Yankhani: Sizikuyenda ndi Graylog. Ndipo Graylog ikukula. Ndizovuta kwambiri kwa iye. Iye ali ngati chinthu. Ndipo, kwenikweni, sikufunika. Ndikadakonda kulemba kuchokera ku rsyslog mwachindunji kupita ku elasticsearch kenako ndikuwonera Kibana. Koma tiyenera kuthetsa nkhaniyo ndi alonda. Izi ndizosiyana zotheka zachitukuko chathu tikataya Graylog ndikugwiritsa ntchito Kibana. Logstash sizingakhale zomveka. Chifukwa nditha kuchita chimodzimodzi ndi rsyslog. Ndipo ili ndi gawo lolembera elasticsearch. Ndi Graylog tikuyesera kukhala moyo mwanjira ina. Ife ngakhale kusintha pang'ono. Koma pali malo oti tiwongolere.

About Kafka. Umo ndi momwe zinachitikira mbiriyakale. Nditafika ndinapeza kuti zinali kale, ndipo zipika zinali zitalembedwa kale. Tinangokweza gulu lathu ndikusuntha zipika mmenemo. Timamuwongolera, timadziwa momwe amamvera. Koma RabbitMQ... tili ndi vuto ndi RabbitMQ. Ndipo RabbitMQ imatipangira ife. Tili nazo popanga, ndipo panali zovuta nazo. Tsopano, asanamugulitse, anali wonyada, ndipo amayamba kugwira ntchito bwinobwino. Koma izi zisanachitike, ndinali ndisanakonzekere kuzitulutsa kuti zipangidwe. Pali mfundo inanso. Graylog imatha kuwerenga mtundu wa AMQP 0.9 ndipo rsyslog imatha kulemba mtundu wa AMQP 1.0. Ndipo palibe yankho limodzi lomwe lingachite zonse pakati. Pali chimodzi kapena chimzake. Kotero pakadali pano ndi Kafka yekha. Koma palinso ma nuances. Chifukwa omkafka wa mtundu wa rsyslog womwe timagwiritsa ntchito ukhoza kutaya buffer yonse ya uthenga yomwe idatenga kuchokera ku rsyslog. Bola ife tizipirira nazo.

Funso: Kodi mukugwiritsa ntchito Kafka chifukwa muli nayo? Osagwiritsidwa ntchito pazifukwa zina zilizonse?

Yankhani: Kafka, yomwe idagwiritsidwa ntchito ndi gulu la Data Science. Iyi ndi ntchito yosiyana kotheratu, yomwe ine, mwatsoka, sindingathe kunena kalikonse. Sindikudziwa. Anayendetsedwa ndi gulu la Data Science. Mitengoyo itayamba, anaganiza zoigwiritsa ntchito kuti asamayike ake. Tsopano tasintha Graylog, ndipo tataya kuyanjana, chifukwa pali mtundu wakale wa Kafka. Tinayenera kupanga zathuzathu. Nthawi yomweyo, tinachotsa mitu inayi pa API iliyonse. Tinapanga nsonga imodzi yotakata kwa onse okhala, nsonga imodzi yotakata kwa masiteji onse ndipo timangowombera chilichonse pamenepo. Graylog amachotsa zonsezi mofananira.

Funso: Chifukwa chiyani timafunikira shamanism yokhala ndi sockets? Mwayesapo kugwiritsa ntchito syslog log driver pazotengera.

Yankhani: Nthawi yomwe timafunsa funsoli, tinali ndi ubale wolimba ndi docker. Inali docker 1.0 kapena 0.9. Docker yokha inali yodabwitsa. Kachiwiri, ngati mungakankhirenso zipika mmenemo ... Ndili ndi chikayikiro chosatsimikizirika kuti chimadutsa matabwa onse kupyolera mu daemon ya docker. Ngati tili ndi API imodzi yomwe ikupenga, ndiye kuti ma API ena onse adzathamangira kuti sangathe kutumiza stdout ndi stderr. Sindikudziwa kuti izi zitsogolera kuti. Ndili ndi chikayikiro pamlingo wodzimva kuti sikoyenera kugwiritsa ntchito docker syslog driver pamalo ano. Dipatimenti yathu yoyesa ntchito ili ndi gulu lake la Graylog lokhala ndi zipika. Amagwiritsa ntchito ma driver a log docker ndipo zonse zikuwoneka kuti zili bwino pamenepo. Koma nthawi yomweyo amalemba GELF ku Graylog. Panthawi yomwe tidayamba zonsezi, timafunikira kuti tingogwira ntchito. Mwinamwake pambuyo pake, pamene wina abwera ndi kunena kuti yakhala ikugwira ntchito bwino kwa zaka zana, tidzayesa.

Funso: Mumapereka pakati pa ma data pogwiritsa ntchito rsyslog. Bwanji osapita ku Kafka?

Yankhani: Timachita izi, ndipo umu ndi momwe zilili. Pazifukwa ziwiri. Ngati njirayo yafa kwathunthu, ndiye kuti mitengo yathu yonse, ngakhale mu mawonekedwe oponderezedwa, sidzakwera kudutsamo. Ndipo kafka amawalola kuti angotaya nthawi. Mwanjira iyi, timachotsa zomata za zipikazi. Tikungogwiritsa ntchito Kafka pankhaniyi mwachindunji. Ngati tili ndi njira yabwino ndipo tikufuna kuimasula, ndiye kuti timagwiritsa ntchito rsyslog yawo. Koma kwenikweni, mutha kuyikhazikitsa kuti igwetse zomwe sizinadutse. Pakadali pano tikungogwiritsa ntchito rsyslog kutumiza mwachindunji kwinakwake, kwinakwake Kafka.

Source: www.habr.com

Kuwonjezera ndemanga