Yury Bushmelev "Mapa sa usa ka rake sa natad sa pagkolekta ug paghatud sa mga troso" - transcript sa taho

Ang mga log usa ka importante nga bahin sa sistema, nga nagtugot kanimo nga masabtan nga kini molihok (o dili molihok) sama sa gipaabut. Ubos sa mga kondisyon sa arkitektura sa microservice, ang pagtrabaho sa mga troso nahimong lahi nga disiplina sa Espesyal nga Olympiad. Adunay daghang mga isyu nga kinahanglan sulbaron:

  • unsaon pagsulat og mga log gikan sa aplikasyon;
  • asa isulat ang mga troso;
  • unsaon paghatud sa mga troso alang sa pagtipig ug pagproseso;
  • unsaon pagproseso ug pagtipig sa mga troso.

Ang paggamit sa karon nga popular nga mga teknolohiya sa containerization nagdugang balas sa ibabaw sa rake sa natad sa mga kapilian sa pagsulbad sa problema.

Mahitungod niini mao ang transcript sa taho ni Yuri Bushmelev "Mapa sa usa ka rake sa natad sa pagkolekta ug paghatud sa mga troso"

Kinsa ang nagpakabana, palihug sa ilawom sa iring.

Ako si Yuri Bushmelev. Nagtrabaho ko sa Lazada. Karon akong hisgutan kung giunsa namo paghimo ang among mga troso, giunsa namo kini pagkolekta, ug unsa ang among gisulat didto.

Yury Bushmelev "Mapa sa usa ka rake sa natad sa pagkolekta ug paghatud sa mga troso" - transcript sa taho

Asa ta gikan? Kinsa man ta? Ang Lazada mao ang #1 online retailer sa unom ka nasud sa Southeast Asia. Kining tanan nga mga nasud gipang-apod-apod sa mga sentro sa datos. Adunay 4 ka mga data center sa kinatibuk-an. Nganong importante kini? Tungod kay ang pipila ka mga desisyon tungod sa kamatuoran nga adunay usa ka huyang nga sumpay tali sa mga sentro. Adunay kami usa ka arkitektura sa microservice. Nakurat ko nga naa na miy 80 ka microservices. Sa pagsugod nako sa buluhaton gamit ang mga troso, 20 ra sila. Dugang pa, adunay usa ka dako nga piraso sa kabilin sa PHP, nga kinahanglan usab nako nga puy-an ug antuson. Kining tanan nagmugna alang kanamo sa pagkakaron labaw pa sa 6 ka milyon nga mga mensahe kada minuto para sa sistema sa kinatibuk-an. Dugang pa ipakita ko kung giunsa namon pagpaningkamot nga mabuhi uban niini, ug ngano nga ingon niini.

Yury Bushmelev "Mapa sa usa ka rake sa natad sa pagkolekta ug paghatud sa mga troso" - transcript sa taho

Kinahanglan nimo nga mabuhi uban niining 6 ka milyon nga mga mensahe sa bisan unsang paagi. Unsay angay natong buhaton kanila? 6 milyon nga mga mensahe ang gikinahanglan:

  • ipadala gikan sa app
  • dawaton para sa delivery
  • paghatud alang sa pagtuki ug pagtipig.
  • analisa
  • tindahan sa usa ka paagi.

Yury Bushmelev "Mapa sa usa ka rake sa natad sa pagkolekta ug paghatud sa mga troso" - transcript sa taho

Sa diha nga adunay tulo ka milyon nga mga mensahe, ako adunay parehas nga hitsura. Tungod kay nagsugod kami sa pipila ka mga sentimos. Klaro nga ang mga log sa aplikasyon gisulat didto. Pananglitan, dili makakonektar sa database, makakonektar sa database, apan dili makabasa sa usa ka butang. Apan gawas pa niini, ang matag usa sa among mga microservice nagsulat usab og access log. Ang matag hangyo nga moabut sa microservice nahulog sa log. Nganong ato ning gibuhat? Gusto sa mga developer nga makasubay. Ang matag access log naglangkob sa traceid field, sumala sa diin ang usa ka espesyal nga interface dayon mag-unwind sa tibuok kadena ug nindot nga gipakita ang pagsubay. Ang pagsubay nagpakita kung giunsa ang hangyo, ug kini makatabang sa among mga developers sa pag-atubang sa bisan unsang wala mailhi nga basura nga mas paspas.

Yury Bushmelev "Mapa sa usa ka rake sa natad sa pagkolekta ug paghatud sa mga troso" - transcript sa taho

Unsaon pagkinabuhi niini? Karon akong ihulagway sa makadiyot ang natad sa mga kapilian - kung giunsa kini nga problema kasagarang masulbad. Giunsa pagsulbad ang problema sa pagkolekta, pagbalhin ug pagtipig sa mga troso.

Yury Bushmelev "Mapa sa usa ka rake sa natad sa pagkolekta ug paghatud sa mga troso" - transcript sa taho

Giunsa pagsulat gikan sa aplikasyon? Klaro nga adunay lainlaing mga paagi. Sa partikular, adunay labing kaayo nga praktis, ingon sa gisulti sa us aka uso nga mga kauban. Adunay duha ka matang sa karaang eskwelahan, ingon sa giingon sa mga apohan. Adunay ubang mga paagi.

Yury Bushmelev "Mapa sa usa ka rake sa natad sa pagkolekta ug paghatud sa mga troso" - transcript sa taho

Uban sa pagkolekta sa mga troso, ang kahimtang halos parehas. Dili kaayo daghan nga mga kapilian alang sa pagsulbad niining partikular nga bahin. Daghan pa sila, apan dili pa kaayo daghan.

Yury Bushmelev "Mapa sa usa ka rake sa natad sa pagkolekta ug paghatud sa mga troso" - transcript sa taho

Apan sa paghatud ug sa sunod nga pagtuki, ang gidaghanon sa mga kalainan nagsugod sa pagbuto. Dili nako ihulagway ang matag kapilian karon. Sa akong hunahuna ang mga nag-unang kapilian nahibal-an sa tanan nga interesado sa hilisgutan.

Yury Bushmelev "Mapa sa usa ka rake sa natad sa pagkolekta ug paghatud sa mga troso" - transcript sa taho

Ipakita ko kanimo kung giunsa namo kini gibuhat sa Lazada ug kung giunsa kini nagsugod.

Yury Bushmelev "Mapa sa usa ka rake sa natad sa pagkolekta ug paghatud sa mga troso" - transcript sa taho

Usa ka tuig ang milabay, mianhi ako sa Lazada ug gipadala sa proyekto sa log. Ingon niini didto. Ang log gikan sa aplikasyon gisulat sa stdout ug stderr. Ang tanan gihimo sa us aka paagi. Apan unya gilabay kini sa mga developers gikan sa standard nga mga sapa, ug unya ang mga espesyalista sa imprastraktura mahibal-an kini sa usa ka paagi. Sa tunga-tunga sa mga espesyalista sa imprastraktura ug mga nag-develop, adunay mga nagpagawas usab nga nag-ingon: "uh ... aw, ibutang ta lang sila sa usa ka file nga adunay kabhang, ug kana." Ug tungod kay kining tanan anaa sa usa ka sudlanan, ila kining giputos mismo sa sudlanan, gimapa ang direktoryo sa sulod ug gibutang didto. Sa akong hunahuna kini klaro kaayo sa tanan kung unsa ang nahitabo.

Yury Bushmelev "Mapa sa usa ka rake sa natad sa pagkolekta ug paghatud sa mga troso" - transcript sa taho

Atong tan-awon og gamay pa. Giunsa namo paghatud kini nga mga troso. Adunay mipili sa td-agent, nga sa tinuud larino apan dili kaayo larino. Wala pa ko makasabot sa relasyon niining duha ka proyekto, pero morag pareho ra silag butang. Ug kini nga larino, gisulat sa Ruby, nagbasa sa mga file sa log, gi-parse kini sa JSON gamit ang pipila ka mga regular nga ekspresyon. Dayon gipadala sila sa Kafka. Dugang pa, sa Kafka, kami adunay 4 nga lainlain nga mga hilisgutan alang sa matag API. Ngano 4? Kay naay live, naay staging, ug kay naay stdout ug stderr. Gihimo kini sa mga developer, ug ang mga trabahante sa imprastraktura kinahanglan nga maghimo niini sa Kafka. Dugang pa, ang Kafka kontrolado sa laing departamento. Busa, kinahanglan nga maghimo usa ka tiket aron makahimo sila 4 nga mga hilisgutan didto alang sa matag api. Ang tanan nakalimot niini. Sa kinatibuk-an, kini basura ug basura.

Yury Bushmelev "Mapa sa usa ka rake sa natad sa pagkolekta ug paghatud sa mga troso" - transcript sa taho

Unsa ang sunod natong gibuhat niini? Gipadala namo kini sa kafka. Dugang pa gikan sa Kafka, ang katunga sa mga troso milupad ngadto sa Logstash. Ang laing katunga sa mga troso gipaambit. Ang uban milupad sa usa ka Graylog, ang uban sa lain nga Graylog. Ingon usa ka sangputanan, kining tanan milupad sa usa ka cluster sa Elasticsearch. Sa ato pa, kining tanan nga kagubot nahulog sa katapusan didto. Dili nimo kinahanglan nga buhaton kana!

Yury Bushmelev "Mapa sa usa ka rake sa natad sa pagkolekta ug paghatud sa mga troso" - transcript sa taho

Kini ang hitsura kung tan-awon gikan sa taas. Dili nimo kinahanglan nga buhaton kana! Dinhi, ang mga lugar nga adunay problema gimarkahan dayon sa mga numero. Sa tinuud adunay daghan pa niini, apan ang 6 mga problema gyud, diin kinahanglan buhaton ang usa ka butang. Isulti ko ang bahin kanila nga gilain karon.

Yury Bushmelev "Mapa sa usa ka rake sa natad sa pagkolekta ug paghatud sa mga troso" - transcript sa taho

Dinhi (1,2,3) nagsulat kami og mga file ug, sumala niana, adunay tulo ka rake dinhi sa makausa.

Ang una (1) mao nga kinahanglan natong isulat kini bisan asa. Dili kanunay nga gusto nga hatagan ang usa ka API sa abilidad sa pagsulat direkta sa usa ka file. Gitinguha nga ang API ihimulag sa usa ka sudlanan, ug labi ka maayo, nga kini read-only. Usa ako ka tagdumala sa sistema, mao nga adunay ako gamay nga alternatibo nga pagtan-aw sa kini nga mga butang.

Ang ikaduha nga punto (2,3) mao nga kami adunay daghang mga hangyo nga moabut sa API. Ang API nagsulat og daghang data sa usa ka file. Nagkadaghan ang mga file. Kinahanglan natong i-rotate sila. Kay kung dili, dili ka makatipig bisan unsang mga disc didto. Ang pag-rotate kanila dili maayo tungod kay kini gi-redirect pinaagi sa shell ngadto sa usa ka direktoryo. Walay paagi nga atong ma-rotate kini. Dili nimo masultihan ang aplikasyon nga ablihan pag-usab ang mga gunitanan. Tungod kay ang mga developers motan-aw kanimo sama sa usa ka buang: "Unsa nga mga deskriptor? Kasagaran nagsulat kami sa stdout. Ang mga imprastraktura nga mga lalaki naghimo sa copytruncate ngadto sa logrotate, nga naghimo lang og kopya sa file ug mga trunks ang orihinal. Tungod niini, tali niining mga proseso sa pagkopya, kasagarang matapos ang wanang sa disk.

(4) Kami adunay lain-laing mga format sa lain-laing mga API. Sila gamay nga lahi, apan ang regexp kinahanglan nga isulat nga lahi. Tungod kay kini tanan gidumala sa Puppet, adunay daghang mga klase nga adunay kaugalingon nga mga uk-ok. Dugang pa, ang td-agent sa kasagaran makakaon sa memorya, mahimong tanga, mahimo ra siyang magpakaaron-ingnon nga siya nagtrabaho ug wala'y mahimo. Sa gawas, imposible nga masabtan nga wala siyay gibuhat. Sa labing maayo, siya mahulog, ug adunay usa nga mopunit kaniya sa ulahi. Sa mas tukma, usa ka alerto ang molupad, ug adunay moadto ug mopataas niini gamit ang ilang mga kamot.

Yury Bushmelev "Mapa sa usa ka rake sa natad sa pagkolekta ug paghatud sa mga troso" - transcript sa taho

(6) Ug ang kadaghanan nga basura ug basura - kini ang elasticsearch. Tungod kay kini usa ka daan nga bersyon. Kay wala pa mi dedikado nga mga agalon niadtong panahona. Kami adunay heterogeneous nga mga troso kansang mga uma mahimong magsapaw. Ang lainlaing mga log sa lainlaing mga aplikasyon mahimong isulat sa parehas nga mga ngalan sa uma, apan sa parehas nga oras adunay lainlaing datos sa sulod. Kana mao, ang usa ka log adunay usa ka Integer sa usa ka uma, pananglitan, lebel. Ang laing log adunay usa ka String sa lebel nga natad. Kung wala ang static nga pagmapa, ang ingon usa ka katingad-an nga butang nahimo. Kung, pagkahuman sa pag-rotate sa indeks, usa ka mensahe nga adunay usa ka hilo ang una nga miabot sa elasticsearch, nan kami nagpuyo nga normal. Ug kung ang una nga miabot nga adunay Integer, nan ang tanan nga nagsunod nga mga mensahe nga miabot uban ang String isalikway ra. Tungod kay ang matang sa uma dili motakdo.

Yury Bushmelev "Mapa sa usa ka rake sa natad sa pagkolekta ug paghatud sa mga troso" - transcript sa taho

Nagsugod kami sa pagpangutana niini nga mga pangutana. Nakahukom mi nga dili mangita sa sad-an.

Yury Bushmelev "Mapa sa usa ka rake sa natad sa pagkolekta ug paghatud sa mga troso" - transcript sa taho

Apan adunay kinahanglan nga buhaton! Ang klaro nga butang mao nga kinahanglan naton magtukod mga sumbanan. Naa na miy mga standards. Ang uban among gidala sa ulahi. Maayo na lang, ang usa ka format sa log alang sa tanan nga mga API naaprobahan na nianang panahona. Gisulat kini direkta sa mga sumbanan sa interaksyon sa serbisyo. Busa, kadtong gusto makadawat og mga troso kinahanglang isulat kini niini nga format. Kung adunay usa nga wala magsulat og mga troso sa kini nga format, nan dili kami makagarantiya sa bisan unsa.

Dugang pa, gusto ko nga adunay usa ka sumbanan alang sa mga pamaagi sa pagrekord, paghatud ug pagkolekta sa mga troso. Sa tinuud, asa kini isulat, ug kung giunsa kini ihatud. Ang sulundon nga kahimtang mao kung ang mga proyekto naggamit sa parehas nga librarya. Adunay usa ka lahi nga librarya sa pag-log alang sa Go, adunay usa ka lahi nga librarya alang sa PHP. Ang tanan nga naa kanato, ang tanan kinahanglan nga mogamit niini. Sa pagkakaron, ako moingon nga kita nagmalampuson sa 80 porsyento. Apan ang uban nagpadayon sa pagkaon sa cacti.

Ug didto (sa slide) ang "SLA alang sa paghatud sa troso" hapit na magsugod sa pagpakita. Wala pa kini, apan among gitrabaho kini. Tungod kay kombenyente kaayo kung ang infra nag-ingon nga kung magsulat ka sa ingon ug ingon nga format sa ingon ug ingon nga lugar ug dili molapas sa N nga mga mensahe matag segundo, nan lagmit nga ihatud namon kini didto. Makapawala kini sa daghang labad sa ulo. Kung adunay usa ka SLA, nan kini maayo!

Yury Bushmelev "Mapa sa usa ka rake sa natad sa pagkolekta ug paghatud sa mga troso" - transcript sa taho

Giunsa namo pagsugod sa pagsulbad sa problema? Ang nag-unang rake kay kauban ang td-agent. Dili klaro kung asa moadto ang among mga troso. Gihatud ba sila? Moadto ba sila? Asa man sila? Busa, nakahukom nga ilisan ang td-agent sa unang butang. Ang mga kapilian alang sa kung unsa ang ilisan niini, ako sa mubo nga gilatid dinhi.

Fluentd. Una, nakit-an nako siya sa miaging trabaho, ug siya usab matag karon nga nahulog didto. Ikaduha, parehas ra kini, sa profile ra.

filebeat. Giunsa kini maayo alang kanamo? Ang kamatuoran nga naa siya sa Go, ug kami adunay daghang kahanas sa Go. Busa, kung aduna man, mahimo natong idugang kini sa atong kaugalingon. Mao to wala namo gikuha. Aron walay bisan unsa nga tentasyon sa pagsugod sa pagsulat pag-usab niini alang sa imong kaugalingon.

Ang klaro nga solusyon alang sa sysadmin mao ang tanan nga mga lahi sa mga syslog sa kini nga gidaghanon (syslog-ng/rsyslog/nxlog).

O pagsulat og usa ka butang nga imong kaugalingon, apan gilabay namo kini, ingon man ang filebeat. Kung nagsulat ka usa ka butang, nan mas maayo nga isulat ang usa ka butang nga mapuslanon alang sa negosyo. Sa paghatud sa mga troso, mas maayo nga magkuha usa ka butang nga andam na.

Busa, ang pagpili sa tinuud nahulog sa usa ka pagpili tali sa syslog-ng ug rsyslog. Misandig ko sa rsyslog tungod lang kay naa na mi mga klase para sa rsyslog sa Puppet, ug wala koy nakit-an nga klaro nga kalainan tali nila. Unsa ang syslog, unsa ang syslog. Oo, ang ubang mga dokumentasyon mas grabe, ang uban mas maayo. Nahibal-an niya kini nga paagi, ug lahi ang iyang gibuhat.

Yury Bushmelev "Mapa sa usa ka rake sa natad sa pagkolekta ug paghatud sa mga troso" - transcript sa taho

Ug gamay bahin sa rsyslog. Una, cool kay daghan modules. Kini adunay usa ka RainerScript nga mabasa sa tawo (moderno nga sinultian nga pag-configure). Usa ka katingad-an nga bonus mao nga mahimo naton nga sundon ang pamatasan sa td-agent sa mga sumbanan nga himan niini, ug wala’y nabag-o alang sa mga aplikasyon. Sa ato pa, usbon namon ang td-agent sa rsyslog, ug dili pa mahikap ang tanan. Ug diha-diha dayon nakadawat kami usa ka nagtrabaho nga pagpadala. Sunod, ang mmnormalize mao ang cool nga butang bahin sa rsyslog. Gitugotan ka nga mag-parse sa mga troso, apan dili sa Grok ug regexp. Naghimo kini og abstract syntax tree. Gi-parse niini ang mga log sa parehas nga paagi nga gi-parse sa usa ka compiler ang source code. Gitugotan ka niini nga magtrabaho nga kusog kaayo, mokaon og gamay nga CPU, ug, sa kinatibuk-an, kini usa ka cool nga butang. Adunay usa ka hugpong sa ubang mga bonus. Dili ko sila hisgotan.

Yury Bushmelev "Mapa sa usa ka rake sa natad sa pagkolekta ug paghatud sa mga troso" - transcript sa taho

Ang rsyslog adunay daghang mga kakulangan. Parehas ra sila sa mga bonus. Ang mga nag-unang problema mao nga kinahanglan nimo nga lutoon kini, ug kinahanglan nimo nga magpili usa ka bersyon.

Yury Bushmelev "Mapa sa usa ka rake sa natad sa pagkolekta ug paghatud sa mga troso" - transcript sa taho

Nakahukom kami nga magsulat kami og mga troso sa usa ka unix socket. Ug dili sa / dev / log, tungod kay kami adunay usa ka kagubot sa mga log sa sistema, adunay journald niini nga pipeline. Mao nga magsulat kita sa usa ka naandan nga socket. Atong i-attach kini sa usa ka bulag nga ruleset. Dili ta manghilabot sa bisan unsa. Ang tanan mahimong transparent ug masabtan. Mao nga gibuhat gyud namo. Ang direktoryo nga adunay kini nga mga socket gi-standardize ug gipasa sa tanan nga mga sudlanan. Makita sa mga sudlanan ang socket nga ilang gikinahanglan, ablihan ug sulatan kini.

Nganong dili usa ka file? Kay nakabasa ang tanan artikulo bahin sa Badushechka, nga misulay sa pagpasa sa file ngadto sa docker, ug nakit-an nga human sa pagsugod pag-usab sa rsyslog, ang file descriptor mausab, ug ang docker mawad-an niini nga file. Siya nagpadayon sa pag-abli sa laing butang, apan dili sa samang socket diin sila nagsulat. Nakahukom kami nga laktawan namo kini nga problema, ug, sa samang higayon, laktawan ang problema sa pagbabag.

Yury Bushmelev "Mapa sa usa ka rake sa natad sa pagkolekta ug paghatud sa mga troso" - transcript sa taho

Gibuhat sa Rsyslog ang mga aksyon nga gipakita sa slide ug nagpadala mga troso sa relay o Kafka. Gisunod ni Kafka ang karaang paagi. Rayleigh - Gisulayan nako ang paggamit sa puro nga rsyslog aron maghatud sa mga troso. Kung walay Message Queue, gamit ang standard rsyslog tools. Sa panguna, kini molihok.

Yury Bushmelev "Mapa sa usa ka rake sa natad sa pagkolekta ug paghatud sa mga troso" - transcript sa taho

Apan adunay mga nuances kung giunsa kini ibutang sa ulahi niini nga bahin (Logstash/Graylog/ES). Kini nga bahin (rsyslog-rsyslog) gigamit taliwala sa mga sentro sa datos. Ania ang usa ka compressed tcp link, nga nagtugot kanimo sa pagluwas sa bandwidth ug, sumala niana, sa usa ka paagi nagdugang sa posibilidad nga kami makadawat og pipila ka mga troso gikan sa laing data center kung ang channel puno na. Kay naa tay Indonesia, diin ang tanan dili maayo. Didto ang kanunay nga problema.

Yury Bushmelev "Mapa sa usa ka rake sa natad sa pagkolekta ug paghatud sa mga troso" - transcript sa taho

Naghunahuna kami kung giunsa namon pag-monitor, nga adunay posibilidad nga ang mga troso nga among natala gikan sa aplikasyon makaabut sa kana nga katapusan? Nakahukom kami nga magsugod sa mga sukatan. Ang Rsyslog adunay kaugalingon nga module sa pagkolekta sa istatistika, nga adunay usa ka matang sa mga counter. Pananglitan, kini makapakita kanimo sa gidak-on sa pila, o pila ka mga mensahe ang nasulod para sa ingon ug ingon niana nga aksyon. May makuha ka na gikan kanila. Dugang pa, kini adunay mga kostumbre nga mahimo nimong i-configure, ug kini magpakita kanimo, pananglitan, ang gidaghanon sa mga mensahe nga natala sa pipila ka API. Sunod, gisulat nako ang rsyslog_exporter sa Python, ug gipadala namon kini tanan sa Prometheus ug nagplano. Gusto gyud namo ang Graylog metrics, pero hangtod karon wala pa mi panahon sa pag-set up niini.

Yury Bushmelev "Mapa sa usa ka rake sa natad sa pagkolekta ug paghatud sa mga troso" - transcript sa taho

Unsa ang mga problema? Mitumaw ang problema sa kamatuoran nga among nahibaw-an (KALIT!) nga ang among mga Live API nagsulat ug 50k nga mensahe kada segundo. Kini mao lamang ang Live API nga walay dula. Ug ang Graylog nagpakita lamang kanato og 12 ka libo nga mga mensahe kada segundo. Ug mitungha ang usa ka makatarunganon nga pangutana, asa ang mga salin? Gikan diin kami nakahinapos nga ang Graylog yano nga dili makasagubang. Gitan-aw namon, ug, sa tinuud, ang Graylog kauban ang Elasticsearch wala mag-master niini nga dagan.

Sunod, uban pang mga nadiskobrehan nga among nahimo sa dalan.

Ang mga pagsulat sa socket gibabagan. Giunsa kini nahitabo? Kung gigamit nako ang rsyslog alang sa paghatud, sa pila ka punto gibuak namon ang channel taliwala sa mga sentro sa datos. Ang pagpadala mibangon sa usa ka dapit, ang paghatod mibangon sa laing dapit. Ang tanan niini nahulog sa usa ka makina nga adunay mga API nga nagsulat sa rsyslog socket. Naay pila. Dayon ang pila para sa pagsulat sa unix socket napuno, nga sa kasagaran maoy 128 ka pakete. Ug ang sunod nga pagsulat () sa mga bloke sa aplikasyon. Kung gitan-aw namon ang librarya nga among gigamit sa mga aplikasyon sa Go, gisulat didto nga ang pagsulat sa socket mahitabo sa non-blocking mode. Segurado mi nga walay gibabagan. Kay nakabasa mi artikulo bahin sa Badushechkakinsa nagsulat mahitungod niini. Apan adunay usa ka higayon. Adunay usab usa ka walay katapusan nga loop sa palibot niini nga tawag, diin adunay kanunay nga pagsulay sa pagduso sa usa ka mensahe ngadto sa socket. Wala namo siya gipansin. Kinahanglan kong isulat pag-usab ang librarya. Sukad niadto, kini nausab sa makadaghang higayon, apan karon atong gitangtang ang mga kandado sa tanang subsystem. Busa, mahimo nimong hunongon ang rsyslog ug walay mahulog.

Gikinahanglan ang pag-monitor sa gidak-on sa mga pila, nga makatabang nga dili makatunob niini nga rake. Una, mahimo natong bantayan kung kanus-a kita magsugod sa pagkawala sa mga mensahe. Ikaduha, mahimo naton ma-monitor nga kita adunay mga problema sa paghatud.

Ug usa pa nga dili maayo nga higayon - ang pagpadako sa 10 ka beses sa usa ka arkitektura sa microservice dali ra. Wala kami'y daghang umaabot nga mga hangyo, apan tungod sa graph diin kini nga mga mensahe nagpadayon pa, tungod sa mga log sa pag-access, gidugangan namon ang pagkarga sa mga troso sa mga napulo ka beses. Ikasubo, wala ako'y panahon sa pagkalkulo sa eksaktong mga numero, apan ang mga microservice kung unsa sila. Kini kinahanglan nga ibutang sa hunahuna. Kini nahimo nga sa pagkakaron ang subsystem sa pagkolekta sa troso mao ang labing gikarga sa Lazada.

Yury Bushmelev "Mapa sa usa ka rake sa natad sa pagkolekta ug paghatud sa mga troso" - transcript sa taho

Giunsa pagsulbad ang problema sa elasticsearch? Kung kinahanglan nimo nga dali nga makakuha og mga troso sa usa ka lugar, aron dili modagan sa tanan nga mga makina ug kolektahon kini didto, gamita ang pagtipig sa file. Gigarantiyahan kini nga molihok. Gihimo kini gikan sa bisan unsang server. Kinahanglan nimo nga ibutang ang mga disk didto ug ibutang ang syslog. Pagkahuman niana, gigarantiyahan nimo nga adunay tanan nga mga troso sa usa ka lugar. Unya posible nga hinayhinay nga i-configure ang elasticsearch, graylog, o uban pa. Apan naa na nimo ang tanan nga mga troso, ug, dugang pa, mahimo nimo kini tipigan, basta adunay igo nga mga arrays sa disk.

Yury Bushmelev "Mapa sa usa ka rake sa natad sa pagkolekta ug paghatud sa mga troso" - transcript sa taho

Sa panahon sa akong report, ang laraw nagsugod nga ingon niini. Kami halos mihunong sa pagsulat sa file. Karon, lagmit, atong i-off ang mga salin. Sa mga lokal nga makina nga nagpadagan sa API, mohunong kami sa pagsulat sa mga file. Una, adunay pagtipig sa file, nga maayo kaayo. Ikaduha, kini nga mga makina kanunay nga nahutdan sa wanang, kinahanglan nimo nga kanunay nga bantayan kini.

Kini nga bahin uban sa Logstash ug Graylog, kini motaas gayud. Busa, kinahanglan nimo nga tangtangon kini. Kinahanglan ka nga mopili og usa.

Yury Bushmelev "Mapa sa usa ka rake sa natad sa pagkolekta ug paghatud sa mga troso" - transcript sa taho

Nakahukom mi nga ihulog si Logstash ug Kibana. Kay naa tay security department. Unsa ang koneksyon? Ang koneksyon mao nga ang Kibana nga walay X-Pack ug walay Shield wala magtugot kanimo sa pag-ila sa mga katungod sa pag-access sa mga troso. Busa, ilang gikuha ang Graylog. Anaa niini ang tanan. Dili ko ganahan niini, apan kini molihok. Nagpalit kami og bag-ong hardware, nag-instalar og bag-ong Graylog didto, ug gibalhin ang tanang log nga adunay estrikto nga mga format ngadto sa lain nga Graylog. Nasulbad namon ang problema sa lainlaing mga lahi sa parehas nga natad sa organisasyon.

Yury Bushmelev "Mapa sa usa ka rake sa natad sa pagkolekta ug paghatud sa mga troso" - transcript sa taho

Unsa man gyud ang gilakip sa bag-ong Graylog. Gisulat ra namo ang tanan sa pantalan. Nagkuha kami usa ka hugpong sa mga server, gilukot ang tulo nga mga kaso sa Kafka, 7 Graylog server nga bersyon 2.3 (tungod kay gusto nako ang Elasticsearch nga bersyon 5). Kining tanan gipataas sa mga raid gikan sa HDD. Nakita namon ang rate sa pag-index nga hangtod sa 100 ka libo nga mga mensahe matag segundo. Nakita namon ang numero nga 140 terabytes nga datos matag semana.

Yury Bushmelev "Mapa sa usa ka rake sa natad sa pagkolekta ug paghatud sa mga troso" - transcript sa taho

Ug pag-usab usa ka rake! Duna miy duha ka halin nga umaabot. Mibalhin kami labaw sa 6 milyon nga mga post. Kaming Graylog walay panahon sa pag-usap. Sa unsa nga paagi kinahanglan ka nga mabuhi pag-usab.

Yury Bushmelev "Mapa sa usa ka rake sa natad sa pagkolekta ug paghatud sa mga troso" - transcript sa taho

Ingon niini ang among pagkaluwas. Gidugang ang pipila pa nga mga server ug SSD. Sa pagkakaron nagkinabuhi kita nga ingon niini. Karon nag-chewing na kami og 160k nga mga mensahe matag segundo. Wala pa namo maabot ang limitasyon, mao nga dili klaro kung unsa ka tinuod nga makuha namon gikan niini.

Yury Bushmelev "Mapa sa usa ka rake sa natad sa pagkolekta ug paghatud sa mga troso" - transcript sa taho

Kini ang among mga plano alang sa umaabot. Niini, sa tinuud, ang labing hinungdanon mao tingali ang taas nga pagkaanaa. Wala pa mi. Daghang mga awto ang gipahimutang sa parehas nga paagi, apan hangtod karon ang tanan nag-agi sa usa ka awto. Kinahanglan nga mogahin og panahon sa pag-set up sa usa ka failover tali kanila.

Pagkolekta mga sukatan gikan sa Graylog.

Paghimo usa ka limitasyon sa rate aron kami adunay usa ka buang nga API nga dili makapatay kanamo sa bandwidth ug uban pa.

Ug sa katapusan, pagpirma sa usa ka matang sa SLA uban sa mga developers aron kami makaalagad nga daghan. Kung magsulat ka ug daghan, unya sorry.

Ug isulat ang dokumentasyon.

Yury Bushmelev "Mapa sa usa ka rake sa natad sa pagkolekta ug paghatud sa mga troso" - transcript sa taho

Sa mubo, ang mga resulta sa tanan nga atong nasinati. Una, ang mga sumbanan. Ikaduha, ang syslog kay cake. Ikatulo, ang rsyslog nagtrabaho nga eksakto sama sa gisulat sa slide. Ug adto ta sa mga pangutana.

Ang imong mga pangutana.

ang pangutana: Nganong nakahukom man sila nga dili mokuha ... (filebeat?)

Tubag: Kinahanglang magsulat sa usa ka file. Dili gyud ko gusto. Kung ang imong API nagsulat og libu-libo nga mga mensahe matag segundo, bisan kung mag-rotate ka kausa sa usa ka oras, dili gihapon kini kapilian. Mahimo kang magsulat sa pipe. Nga gipangutana ako sa mga nag-develop: "Unsa ang mahitabo kung ang proseso nga among gisulat nahulog"? Wala ra nako makit-an kung unsa ang itubag nila, ug miingon: "Aw, ok, dili nato buhaton kana."

ang pangutana: Nganong dili na lang nimo isulat ang mga log sa HDFS?

TubagA: Kini ang sunod nga lakang. Gihunahuna namon kini sa sinugdanan, apan tungod kay wala’y mga kahinguhaan sa pag-atubang niini sa pagkakaron, nagbitay kini sa among dugay nga solusyon.

ang pangutana: Ang pormat sa kolum mas angay.

Tubag: Nakasabot ko. Kami "para" sa duha ka kamot.

ang pangutana: Nagsulat ka sa rsyslog. Ang TCP ug UDP anaa didto. Apan kung UDP, nan unsaon nimo paggarantiya ang pagpadala?

TubagA: Adunay duha ka punto. Una, gisultihan dayon nako ang tanan nga dili namo garantiya ang paghatud sa mga troso. Tungod kay sa dihang ang mga developers moabut ug moingon: "Magsugod ta sa pagsulat sa pinansyal nga datos didto, ug ibutang nimo kini sa usa ka dapit alang kanamo kung adunay mahitabo," tubagon namo sila, "Maayo! Magsugod kita sa pag-block sa pagsulat sa socket, ug buhaton kini sa mga transaksyon, aron masiguro nimo nga ibutang kini sa socket alang kanamo ug siguroha nga nadawat namon kini gikan sa pikas nga bahin. Ug niining higayona, ang tanan diha-diha dayon nahimong dili kinahanglan. Ug kung dili, nan unsa ang atong mga pangutana? Kung dili nimo gusto nga garantiya ang usa ka pagsulat sa socket, nan ngano nga gigarantiyahan namon ang pagpadala? Gihimo namo ang pinakamaayo nga paningkamot. Gisulayan gyud namo ang paghatud kutob sa mahimo ug labing maayo kutob sa mahimo, apan wala kami maghatag usa ka 100% nga garantiya. Busa, dili nimo kinahanglan nga magsulat sa pinansyal nga datos didto. Adunay mga transactional database alang niini.

ang pangutana: Sa diha nga ang API makamugna og pipila ka mensahe ngadto sa log ug mobalhin sa kontrol ngadto sa microservices, nakasugat ka ba sa problema nga ang mga mensahe gikan sa lain-laing mga microservice moabut sa sayop nga han-ay? Tungod niini, mitungha ang kalibog.

TubagA: Normal ra nga lahi silag order. Kinahanglang andam ka niini. Tungod kay ang bisan unsang paghatud sa network dili makagarantiya sa pag-order kanimo, o kinahanglan nimo nga mogasto og espesyal nga mga kapanguhaan alang niini. Kung magkuha kami mga pagtipig sa file, nan ang matag API nagtipig mga troso sa kaugalingon nga file. Hinuon, gibuak kini sa rsyslog sa mga direktoryo didto. Ang matag API adunay kaugalingon nga mga troso didto, diin mahimo kang moadto ug tan-awon, ug unya mahimo nimong itandi kini gamit ang timestamp niini nga log. Kung moadto sila sa pagtan-aw sa Graylog, nan didto sila paghan-ay sa timestamp. Mamaayo ra ang tanan didto.

ang pangutana: Ang timestamp mahimong magkalahi sa millisecond.

Tubag: Ang timestamp gihimo sa API mismo. Kini, sa pagkatinuod, mao ang tibuok nga punto. Naa mi NTP. Ang API nagmugna og timestamp nga anaa na sa mensahe mismo. Wala kini gidugang sa rsyslog.

ang pangutana: Ang interaksyon tali sa mga sentro sa datos dili kaayo klaro. Sulod sa balangkas sa data center, klaro kung giunsa ang mga troso nakolekta ug giproseso. Giunsa ang interaksyon tali sa mga sentro sa datos? O ang matag data center nagkinabuhi sa kaugalingong kinabuhi?

Tubag: Hapit na. Kami adunay matag nasud nga nahimutang sa usa ka sentro sa datos. Wala kami karon nga mikaylap, aron ang usa ka nasud gibutang sa lainlaing mga sentro sa datos. Busa, dili kinahanglan nga maghiusa sila. Sa sulod sa matag sentro adunay usa ka Log Relay. Kini usa ka Rsyslog server. Sa tinuud, duha ka makina sa pagdumala. Gipahimutang sila sa samang paagi. Apan sa pagkakaron, ang trapiko moagi lang sa usa niini. Gi-log niya ang tanan nga mga aggregates. Kini adunay usa ka disk queue sa kaso. Gipugos niya ang mga troso ug gipadala kini sa sentro nga sentro sa datos (Singapore), diin labi pa nga nahilo na sila sa Graylog. Ug ang matag data center adunay kaugalingon nga pagtipig sa file. Kung nawala ang among koneksyon, naa namo ang tanan nga mga troso didto. Magpabilin sila didto. Didto sila tipigan.

ang pangutana: Nakakuha ka ba og mga troso gikan didto panahon sa abnormal nga mga sitwasyon?

Tubag: Mahimo kang moadto didto (sa file storage) ug tan-awon.

ang pangutana: Giunsa nimo pag-monitor nga dili ka mawala ang mga troso?

Tubag: Nawala gyud namo sila, ug gimonitor namo kini. Nagsugod ang pagmonitor usa ka bulan ang milabay. Ang librarya nga gigamit sa mga Go API adunay mga sukatan. Maihap niya kung kapila siya napakyas sa pagsulat sa socket. Adunay sa pagkakaron adunay usa ka malisud nga heuristic. Adunay usa ka buffer didto. Kini naningkamot sa pagsulat sa usa ka mensahe gikan niini ngadto sa socket. Kung ang buffer nag-awas, kini magsugod sa paghulog niini. Ug giihap niya kung pila ang iyang gihulog. Kung ang mga counter magsugod sa pag-awas didto, mahibal-an naton kini. Moabut na usab sila sa prometheus, ug makita nimo ang mga graph sa Grafana. Mahimo nimong i-set up ang mga alerto. Apan dili pa klaro kung kinsa ang ipadala kanila.

ang pangutana: Sa elasticsearch, imong gitipigan ang mga troso nga adunay redundancy. Pila ka mga replika ang naa nimo?

Tubag: Usa ka replika.

ang pangutana: Usa ra ba ka linya?

Tubag: Kini ang agalon ug replika. Ang datos gitipigan sa duplicate.

ang pangutana: Gi-tweak ba nimo ang gidak-on sa rsyslog buffer sa usa ka paagi?

Tubag: Nagsulat kami og mga datagram sa usa ka custom nga unix socket. Nagpahamtang dayon kini og limitasyon nga 128 kilobytes kanato. Dili na kami makasulat ug dugang niini. Gisulat namo kini sa sumbanan. Kinsa ang gusto nga mosulod sa pagtipig, nagsulat sila og 128 kilobytes. Ang mga librarya, dugang pa, putlon, ug ibutang ang usa ka bandila nga ang mensahe giputol. Kami adunay usa ka espesyal nga natad sa sumbanan sa mensahe mismo, nga nagpakita kung kini giputol sa panahon sa pagrekord o wala. Mao nga naa kami higayon nga masubay kini nga higayon.

Pangutana: Gisulat ba nimo ang guba nga JSON?

Tubag: Ang guba nga JSON ilabay sa panahon sa relay tungod kay ang pakete dako kaayo. O ang Graylog ihulog, tungod kay dili kini makahimo sa pag-parse sa JSON. Apan adunay mga nuances dinhi nga kinahanglan nga ayohon, ug sila kasagaran gihigot sa rsyslog. Napuno na nako ang pipila ka mga isyu didto, nga kinahanglan pa nga trabahoon.

Pangutana: Ngano Kafka? Nasulayan na ba nimo ang RabbitMQ? Ang Graylog wala magdugang ubos sa ingon nga mga karga?

Tubag: Dili kini magamit sa Graylog. Ug ang Graylog nagkaporma. Problema gyud para niya. Usa siya ka butang. Ug, sa pagkatinuod, wala kini gikinahanglan. Mas gusto nako nga magsulat gikan sa rsyslog direkta sa elasticsearch ug dayon tan-awa ang Kibana. Apan kinahanglan natong husayon ​​ang isyu sa mga security guard. Kini usa ka posible nga variant sa atong pag-uswag kung atong ilabay ang Graylog ug gamiton ang Kibana. Ang logstash dili makatarunganon. Tungod kay mahimo nako ang parehas sa rsyslog. Ug kini adunay module nga isulat sa elasticsearch. Uban sa Graylog naningkamot kami nga mabuhi sa usa ka paagi. Gi-tweak pa namo gamay. Apan aduna pay luna alang sa kalamboan.

Mahitungod sa Kafka. Ingon niana ang nahitabo sa kasaysayan. Pag-abot nako, naa na kini, ug gisulatan na kini og mga troso. Gipataas ra namo ang among cluster ug gibalhin ang mga troso niini. Gidumala namo siya, nahibal-an namo ang iyang gibati. Sama sa RabbitMQ... nagkaproblema kami sa RabbitMQ. Ug ang RabbitMQ nag-uswag alang kanamo. Naa namo kini sa produksiyon, ug adunay mga problema niini. Karon, sa wala pa ang pagbaligya, siya mahimong shamanized, ug magsugod siya sa pagtrabaho nga normal. Apan sa wala pa kana, dili pa ako andam nga ipagawas kini sa produksiyon. Adunay usa pa ka butang. Ang Graylog makabasa sa AMQP 0.9 nga bersyon ug ang rsyslog makasulat sa AMQP 1.0 nga bersyon. Ug walay usa ka solusyon nga makahimo sa duha sa tunga. Adunay bisan usa o ang lain. Busa sa pagkakaron Kafka na lang. Apan adunay usab mga nuances. Tungod kay ang omkafka sa bersyon sa rsyslog nga among gigamit mahimong mawala ang tibuuk nga buffer sa mensahe nga nakuha gikan sa rsyslog. Basta agwanta mi.

Pangutana: Gigamit ba nimo ang Kafka tungod kay naa nimo? Wala gigamit alang sa bisan unsang lain nga katuyoan?

Tubag: Kafka, nga gigamit sa Data Science team. Kini usa ka hingpit nga lahi nga proyekto, diin ako, sa kasubo, dili makasulti bisan unsa. Wala ko kabalo. Gipadagan siya sa grupo sa Data Science. Sa dihang nagsugod na ang mga troso, nakahukom sila nga gamiton kini, aron dili ibutang ang ilang kaugalingon. Karon among gi-update ang Graylog, ug nawad-an kami og compatibility, tungod kay adunay usa ka daan nga bersyon sa Kafka. Kinahanglan namon nga maghimo sa among kaugalingon. Sa samang higayon, gitangtang namo kining upat ka mga hilisgutan alang sa matag API. Naghimo kami usa ka lapad nga tumoy alang sa tanan nga live, usa ka lapad nga lapad nga tumoy alang sa tanan nga dula ug gi-shoot ra namon ang tanan didto. Gikuha ni Graylog kining tanan nga managsama.

Pangutana: Ngano nga kinahanglan naton kini nga shamanismo nga adunay mga socket? Nasulayan na ba nimo ang paggamit sa syslog log driver alang sa mga sudlanan.

Tubag: Sa panahon nga among gipangutana kini nga pangutana, kami adunay tensiyonado nga relasyon sa docker. Kini mao ang docker 1.0 o 0.9. Ang Docker mismo katingad-an. Ikaduha, kung imo usab nga isulod ang mga troso niini ... Ako adunay usa ka wala mapamatud-an nga pagduda nga kini moagi sa tanan nga mga troso pinaagi sa iyang kaugalingon, pinaagi sa docker nga daemon. Kung adunay usa ka API nga nabuang, nan ang nahabilin nga mga API modagan sa kamatuoran nga dili sila makapadala sa stdout ug stderr. Wala ko kabalo asa ni padulong. Duna koy pagduda sa lebel sa pagbati nga dili kinahanglan nga gamiton ang drayber sa docker syslog sa kini nga lugar. Ang among functional testing department adunay kaugalingong Graylog cluster nga adunay mga troso. Gigamit nila ang mga driver sa docker log ug ang tanan ingon og maayo didto. Apan gisuwat dayon nila ang GELF sa Graylog. Sa higayon nga gisugdan namo kining tanan, gikinahanglan namo kini aron magtrabaho lang. Tingali sa ulahi, kung adunay moabut ug moingon nga kini nagtrabaho nga normal sa usa ka gatos ka tuig, atong sulayan.

Pangutana: Naghatud ka taliwala sa mga sentro sa datos gamit ang rsyslog. Nganong dili sa Kafka?

Tubag: Gibuhat namo kini, ug ingon niini ang tinuod. Sa duha ka rason. Kung ang channel hingpit nga patay, nan ang tanan namong mga troso, bisan sa usa ka compressed nga porma, dili mosaka niini. Ug gitugotan sila sa kafka nga mawala ra sa proseso. Niining paagiha, atong mawagtang ang pagdikit niini nga mga troso. Gigamit ra namon ang Kafka sa kini nga kaso direkta. Kung kami adunay usa ka maayo nga channel ug gusto nga buhian kini, nan among gigamit ang ilang rsyslog. Apan sa tinuud, mahimo nimo kini i-set up aron mahulog ang wala niini naagian. Sa pagkakaron naggamit ra kami sa pagpadala sa rsyslog direkta sa usa ka lugar, sa usa ka lugar sa Kafka.

Source: www.habr.com

Idugang sa usa ka comment