Yury Bushmelev "Mappa ta 'rake fil-qasam tal-ġbir u l-kunsinna ta' zkuk" - traskrizzjoni tar-rapport

Iz-zkuk huma parti importanti tas-sistema, li jippermettulek tifhem li taħdem (jew ma taħdimx) kif mistenni. Taħt il-kundizzjonijiet tal-arkitettura tal-mikroservizz, ix-xogħol bi zkuk isir dixxiplina separata tal-Olympiad Speċjali. Hemm ħafna kwistjonijiet li jeħtieġ li jiġu indirizzati:

  • kif tikteb zkuk mill-applikazzjoni;
  • fejn tikteb zkuk;
  • kif iwasslu zkuk għall-ħażna u l-ipproċessar;
  • kif tipproċessa u taħżen zkuk.

L-użu ta 'teknoloġiji ta' kontejners popolari bħalissa jżid ramel fuq ir-rake fil-qasam tal-għażliet għas-soluzzjoni tal-problemi.

Biss dwar dan huwa t-traskrizzjoni tar-rapport minn Yuri Bushmelev "Mappa ta 'rake fil-qasam tal-ġbir u l-kunsinna ta' zkuk"

Min jimpurtah, jekk jogħġbok taħt il-qattus.

Jisimni Yuri Bushmelev. Jien naħdem għal Lazada. Illum se nitkellem dwar kif għamilna z-zkuk tagħna, kif ġbarnahom, u dak li niktbu hemmhekk.

Yury Bushmelev "Mappa ta 'rake fil-qasam tal-ġbir u l-kunsinna ta' zkuk" - traskrizzjoni tar-rapport

Minn fejn aħna? Aħna min aħna? Lazada huwa l-bejjiegħ bl-imnut onlajn #1 f'sitt pajjiżi fix-Xlokk tal-Asja. Dawn il-pajjiżi kollha huma mqassma fost iċ-ċentri tad-dejta. Issa hemm ċentri tad-dejta b'kollox 4. Għaliex dan huwa importanti? Għax xi deċiżjonijiet kienu minħabba l-fatt li hemm rabta dgħajfa ħafna bejn iċ-ċentri. Għandna arkitettura ta' mikroservizz. Kont sorpriż li sibt li diġà għandna 80 mikroservizz. Meta bdejt il-kompitu biz-zkuk, kien hemm biss 20. Barra minn hekk, hemm biċċa pjuttost kbira ta 'wirt PHP, li għandi wkoll ngħix magħha u nżomm magħha. Dan kollu jiġġenera għalina bħalissa aktar minn 6 miljun messaġġ kull minuta għas-sistema kollha kemm hi. Aktar minn hekk se nuri kif qed nippruvaw ngħixu b'dan, u għaliex dan hu hekk.

Yury Bushmelev "Mappa ta 'rake fil-qasam tal-ġbir u l-kunsinna ta' zkuk" - traskrizzjoni tar-rapport

Trid tgħix b'dawn is-6 miljun messaġġ b'xi mod. X'għandna nagħmlu magħhom? 6 miljun messaġġ meħtieġa:

  • ibgħat mill-app
  • taċċetta għall-kunsinna
  • jagħti għall-analiżi u l-ħażna.
  • janalizza
  • jaħżen b'xi mod.

Yury Bushmelev "Mappa ta 'rake fil-qasam tal-ġbir u l-kunsinna ta' zkuk" - traskrizzjoni tar-rapport

Meta kien hemm tliet miljun messaġġ, kelli madwar l-istess dehra. Għax bdejna b’xi pennies. Huwa ċar li r-reġistri tal-applikazzjoni huma miktuba hemmhekk. Per eżempju, ma setgħetx tikkonnettja mad-database, setgħet tikkonnettja mad-database, iżda ma setgħetx jaqra xi ħaġa. Iżda minbarra dan, kull wieħed mill-mikroservizzi tagħna jikteb ukoll log ta 'aċċess. Kull talba li tasal fil-mikroservizz taqa' fil-log. Għaliex qed nagħmlu dan? L-iżviluppaturi jridu jkunu jistgħu jittraċċaw. Kull log ta 'aċċess fih il-qasam tat-traceid, li skontu interface speċjali mbagħad jinħall il-katina kollha u juri b'mod sabiħ it-traċċa. It-traċċa turi kif marret it-talba, u dan jgħin lill-iżviluppaturi tagħna jittrattaw kwalunkwe żibel mhux magħruf aktar malajr.

Yury Bushmelev "Mappa ta 'rake fil-qasam tal-ġbir u l-kunsinna ta' zkuk" - traskrizzjoni tar-rapport

Kif tgħix biha? Issa ser niddeskrivi fil-qosor il-qasam tal-għażliet - kif din il-problema hija ġeneralment solvuta. Kif issolvi l-problema tal-ġbir, it-trasferiment u l-ħażna ta 'zkuk.

Yury Bushmelev "Mappa ta 'rake fil-qasam tal-ġbir u l-kunsinna ta' zkuk" - traskrizzjoni tar-rapport

Kif tikteb mill-applikazzjoni? Huwa ċar li hemm modi differenti. B'mod partikolari, hemm l-aħjar prattika, kif jgħidulna sħabi tal-moda. Hemm żewġ tipi ta’ skola antika, kif qalu n-nanniet. Hemm modi oħra.

Yury Bushmelev "Mappa ta 'rake fil-qasam tal-ġbir u l-kunsinna ta' zkuk" - traskrizzjoni tar-rapport

Bil-ġbir ta 'zkuk, is-sitwazzjoni hija bejn wieħed u ieħor l-istess. M'hemmx daqstant għażliet biex issolvi din il-parti partikolari. Hemm aktar minnhom, iżda għadhom mhux daqshekk.

Yury Bushmelev "Mappa ta 'rake fil-qasam tal-ġbir u l-kunsinna ta' zkuk" - traskrizzjoni tar-rapport

Iżda bil-kunsinna u l-analiżi sussegwenti, in-numru ta 'varjazzjonijiet jibda jisplodi. Mhux se niddeskrivi kull għażla issa. Naħseb li l-għażliet ewlenin huma magħrufa sew minn kull min kien interessat fis-suġġett.

Yury Bushmelev "Mappa ta 'rake fil-qasam tal-ġbir u l-kunsinna ta' zkuk" - traskrizzjoni tar-rapport

Nurik kif għamilna f’Lazada u kif beda kollox.

Yury Bushmelev "Mappa ta 'rake fil-qasam tal-ġbir u l-kunsinna ta' zkuk" - traskrizzjoni tar-rapport

Sena ilu, ġejt f'Lazada u ntbagħtet għall-proġett taz-zkuk. Kien hekk hemm. Ir-reġistru mill-applikazzjoni nkiteb lil stdout u stderr. Kollox sar b’mod moda. Iżda mbagħad l-iżviluppaturi tefgħuha mill-flussi standard, u mbagħad l-ispeċjalisti tal-infrastruttura ser insemmu b'xi mod. Bejn l-ispeċjalisti tal-infrastruttura u l-iżviluppaturi, hemm ukoll rilaxxaturi li qalu: "uh ... ukoll, ejja biss wraphom f'fajl b'qoxra, u dak hu." U peress li dan kollu jinsab f'kontenitur, huma mgeżwru eżatt fil-kontenitur innifsu, immappjaw id-direttorju ġewwa u poġġieh hemmhekk. Naħseb li huwa pjuttost ovvju għal kulħadd dak li ġara.

Yury Bushmelev "Mappa ta 'rake fil-qasam tal-ġbir u l-kunsinna ta' zkuk" - traskrizzjoni tar-rapport

Ejja nħarsu ftit aktar. Kif ikkunsinnajna dawn iz-zkuk. Xi ħadd qabad td-agent, li fil-fatt huwa fluentd iżda mhux pjuttost fluentd. Għadni ma nifhimx ir-relazzjoni ta’ dawn iż-żewġ proġetti, iżda donnhom huma madwar l-istess ħaġa. U dan fluentd, miktub f'Ruby, aqra fajls log, parsedhom f'JSON bl-użu ta 'xi espressjonijiet regolari. Imbagħad intbagħtu Kafka. Barra minn hekk, f'Kafka, kellna 4 suġġetti separati għal kull API. Għaliex 4? Għax hemm live, hemm staging, u għax hemm stdout u stderr. L-iżviluppaturi jipproduċuhom, u l-ħaddiema tal-infrastruttura jridu joħolquhom f'Kafka. Barra minn hekk, Kafka kien ikkontrollat ​​minn dipartiment ieħor. Għalhekk, kien meħtieġ li jinħoloq biljett sabiex ħolqu 4 suġġetti hemmhekk għal kull api. Kulħadd nesa dwarha. B'mod ġenerali, kien żibel u skart.

Yury Bushmelev "Mappa ta 'rake fil-qasam tal-ġbir u l-kunsinna ta' zkuk" - traskrizzjoni tar-rapport

X’għamilna wara biha? Bgħatnieh lil kafka. Aktar minn Kafka, nofs iz-zkuk tellgħu lejn Logstash. In-nofs l-ieħor taż-zkuk kienu maqsuma. Xi wħud tellgħu lejn Graylog wieħed, xi wħud lejn Graylog ieħor. Bħala riżultat, dan kollu tellgħu fi cluster Elasticsearch wieħed. Jiġifieri dan it-taħwid kollu waqa’ fl-aħħar hemm. M'għandekx għalfejn tagħmel hekk!

Yury Bushmelev "Mappa ta 'rake fil-qasam tal-ġbir u l-kunsinna ta' zkuk" - traskrizzjoni tar-rapport

Dan huwa kif jidher meta wieħed iħares minn fuq. M'għandekx għalfejn tagħmel hekk! Hawnhekk, l-oqsma problematiċi huma immedjatament immarkati b'numri. Fil-fatt hemm aktar minnhom, iżda 6 huma tassew problematiċi, li magħhom trid issir xi ħaġa. Issa se ngħid dwarhom separatament.

Yury Bushmelev "Mappa ta 'rake fil-qasam tal-ġbir u l-kunsinna ta' zkuk" - traskrizzjoni tar-rapport

Hawnhekk (1,2,3) niktbu fajls u, għalhekk, hemm tliet rakes hawn f'daqqa.

L-ewwel (1) hija li għandna bżonn niktbuhom x'imkien. Mhux dejjem mixtieq li API tingħata l-abbiltà li tikteb direttament fuq fajl. Huwa mixtieq li l-API tkun iżolata f'kontenitur, u saħansitra aħjar, li tkun tinqara biss. Jien amministratur tas-sistema, għalhekk għandi ħarsa kemmxejn alternattiva ta 'dawn l-affarijiet.

It-tieni punt (2,3) huwa li għandna ħafna talbiet li jaslu għand l-API. L-API jikteb ħafna dejta f'fajl. Il-fajls qed jikbru. Irridu nduruhom. Għax inkella ma tkunx tista' tissejvja xi diski hemmhekk. It-tidwir tagħhom huwa ħażin għaliex huma diretti mill-ġdid permezz tal-qoxra għal direttorju. M'hemm l-ebda mod kif nistgħu nduruha. Ma tistax tgħid lill-applikazzjoni biex terġa 'tiftaħ il-pumi. Minħabba li l-iżviluppaturi se jħarsu lejk bħal iblah: "X'deskritturi? Ġeneralment niktbu lil stdout. L-oqfsa għamlu copytruncate f' logrotate, li sempliċement jagħmel kopja tal-fajl u l-bagolli tal-oriġinal. Għaldaqstant, bejn dawn il-proċessi tal-ikkupjar, l-ispazju tad-diska normalment jispiċċa.

(4) Kellna formati differenti f'APIs differenti. Kienu kemmxejn differenti, iżda regexp kellu jinkiteb b'mod differenti. Peress li kien kollu mmexxi minn Puppet, kien hemm mazz kbir ta 'klassijiet bil-wirdien tagħhom stess. Barra minn hekk, td-agent il-biċċa l-kbira tal-ħin jista 'jiekol memorja, ikun stupidu, jista' biss jippretendi li kien qed jaħdem u ma jagħmel xejn. Barra minn hekk, kien impossibbli li wieħed jifhem li ma kien qed jagħmel xejn. Fl-aħjar, se jaqa ', u xi ħadd se jiġbor lilu aktar tard. B'mod aktar preċiż, twissija tittir, u xi ħadd imur u jgħolliha b'idejh.

Yury Bushmelev "Mappa ta 'rake fil-qasam tal-ġbir u l-kunsinna ta' zkuk" - traskrizzjoni tar-rapport

(6) U l-aktar trash u skart - kien elasticsearch. Għax kienet verżjoni antika. Għax dak iż-żmien ma kellniex masters dedikati. Kellna zkuk eteroġeni li l-oqsma tagħhom setgħu jikkoinċidu. Jistgħu jinkitbu zkuk differenti ta' applikazzjonijiet differenti bl-istess ismijiet ta' oqsma, iżda fl-istess ħin jista' jkun hemm dejta differenti ġewwa. Jiġifieri, log wieħed jiġi b'Integer f'qasam, pereżempju, livell. Log ieħor jiġi ma 'String fil-qasam tal-livell. Fin-nuqqas ta 'mapping statiku, tirriżulta ħaġa sabiħa bħal din. Jekk, wara rotazzjoni ta 'l-indiċi, l-ewwel wasal messaġġ b'sekwenza f'elastiksearch, allura ngħixu b'mod normali. U jekk l-ewwel wieħed jasal b'Integer, allura l-messaġġi sussegwenti kollha li waslu b'String huma sempliċement mormija. Minħabba li t-tip tal-qasam ma jaqbilx.

Yury Bushmelev "Mappa ta 'rake fil-qasam tal-ġbir u l-kunsinna ta' zkuk" - traskrizzjoni tar-rapport

Bdejna nistaqsu dawn il-mistoqsijiet. Iddeċidejna li ma nfittxux il-ħatja.

Yury Bushmelev "Mappa ta 'rake fil-qasam tal-ġbir u l-kunsinna ta' zkuk" - traskrizzjoni tar-rapport

Imma trid issir xi ħaġa! L-ovvja hija li rridu nistabbilixxu standards. Diġà kellna xi standards. Xi wħud ġibna ftit wara. Fortunatament, f'dak iż-żmien kien diġà approvat format ta' log wieħed għall-APIs kollha. Huwa miktub direttament fl-istandards ta 'interazzjoni tas-servizz. Għaldaqstant, dawk li jridu jirċievu zkuk għandhom jiktbuhom f'dan il-format. Jekk xi ħadd ma jikteb zkuk f'dan il-format, allura ma niggarantixxu xejn.

Barra minn hekk, nixtieq li jkolli standard wieħed għall-metodi ta 'reġistrazzjoni, kunsinna u ġbir ta' zkuk. Fil-fatt, fejn tiktebhom, u kif twassalhom. Is-sitwazzjoni ideali hija meta l-proġetti jużaw l-istess librerija. Hemm librerija separata tal-illoggjar għal Go, hemm librerija separata għall-PHP. Kulħadd għandna, kulħadd għandu jużahom. Bħalissa, ngħid li qed nirnexxu bi 80 fil-mija. Imma xi wħud jibqgħu jieklu l-kakti.

U hemm (fuq is-slajd) l-"SLA għall-kunsinna taz-zkuk" bilkemm jibda jidher. Għadu mhux hemm, imma qed naħdmu fuqha. Għax huwa konvenjenti ħafna meta infra jgħid li jekk tikteb f'tali u f'format f'tali post u mhux aktar minn N messaġġi kull sekonda, allura aktarx inwassluh hemmhekk. Jneħħi ħafna uġigħ ta’ ras. Jekk hemm SLA, allura huwa biss kbir!

Yury Bushmelev "Mappa ta 'rake fil-qasam tal-ġbir u l-kunsinna ta' zkuk" - traskrizzjoni tar-rapport

Kif bdejna nsolvu l-problema? Ir-rake prinċipali kien b'td-agent. Ma kienx ċar fejn imorru ż-zkuk tagħna. Huma kkonsenjati? Sejrin? Fejn huma xorta waħda? Għalhekk, ġie deċiż li td-agent jiġi sostitwit bl-ewwel oġġett. Għażliet għal x'għandek tissostitwiha, hawn spjegajt fil-qosor.

Fluentd. L-ewwelnett, iltqajt miegħu f'impjieg preċedenti, u perjodikament waqa' hemm ukoll. It-tieni, dan huwa l-istess, biss fil-profil.

filebeat. Kif kien tajjeb għalina? Il-fatt li hu fil-Go, u għandna kompetenza kbira fil-Go. Għaldaqstant, jekk xejn, nistgħu b'xi mod inżiduha magħna nfusna. Huwa għalhekk li ma ħadniex. Biex lanqas biss ikun hemm tentazzjoni li tibda tiktebha għalik innifsek.

Is-soluzzjoni ovvja għas-sysadmin hija kull xorta ta 'syslogs f'din il-kwantità (syslog-ng/rsyslog/nxlog).

Jew ikteb xi ħaġa tiegħek, imma warrabna, kif ukoll filebeat. Jekk tikteb xi ħaġa, allura huwa aħjar li tikteb xi ħaġa utli għan-negozju. Biex twassal zkuk, huwa aħjar li tieħu xi ħaġa lesta.

Għalhekk, l-għażla fil-fatt niżlet għal għażla bejn syslog-ng u rsyslog. Inxtejt lejn rsyslog sempliċement għax diġà kellna klassijiet għal rsyslog f'Puppet, u ma sibtx differenza ovvja bejniethom. X'inhu syslog, x'inhu syslog. Iva, xi dokumentazzjoni hija agħar, uħud aħjar. Huwa jaf b'dan il-mod, u jagħmel dan b'mod differenti.

Yury Bushmelev "Mappa ta 'rake fil-qasam tal-ġbir u l-kunsinna ta' zkuk" - traskrizzjoni tar-rapport

U ftit dwar rsyslog. L-ewwel, huwa jibred minħabba li għandu ħafna moduli. Għandu RainerScript li jista' jinqara mill-bniedem (lingwa ta' konfigurazzjoni moderna). Bonus tal-biża 'huwa li nistgħu niemu l-imġieba ta' td-agent bl-għodod standard tiegħu, u xejn ma nbidel għall-applikazzjonijiet. Jiġifieri, aħna nibdlu td-agent għal rsyslog, u s'issa ma tmissx kull ħaġa oħra. U immedjatament ikollna kunsinna tax-xogħol. Sussegwentement, mmnormalize hija l-ħaġa friska dwar rsyslog. Jippermettilek teżamina zkuk, iżda mhux ma 'Grok u regexp. Jagħmel siġra tas-sintassi astratta. Huwa jeżamina zkuk bl-istess mod li kompilatur janalizza l-kodiċi tas-sors. Dan jippermettilek taħdem malajr ħafna, tiekol ftit CPU, u, b'mod ġenerali, hija biss ħaġa friska ħafna. Hemm mazz ta 'bonuses oħra. Jien mhux se nitkellem fuqhom.

Yury Bushmelev "Mappa ta 'rake fil-qasam tal-ġbir u l-kunsinna ta' zkuk" - traskrizzjoni tar-rapport

rsyslog għandu ħafna aktar żvantaġġi. Huma madwar l-istess bħall-bonuses. Il-problemi ewlenin huma li trid tkun kapaċi issajjarha, u trid tagħżel verżjoni.

Yury Bushmelev "Mappa ta 'rake fil-qasam tal-ġbir u l-kunsinna ta' zkuk" - traskrizzjoni tar-rapport

Iddeċidejna li niktbu zkuk f'socket unix. U mhux f'/dev/log, għax hemm għandna mess ta' zkuk tas-sistema, hemm journald f'dan il-pipeline. Mela ejja niktbu lil socket tad-dwana. Aħna se nehmuh ma' sett ta' regoli separat. Ejja ma nindaħlu xejn. Kollox se jkun trasparenti u jinftiehem. Allura aħna fil-fatt għamilna. Id-direttorju b'dawn is-sokits huwa standardizzat u mibgħut lill-kontenituri kollha. Il-kontenituri jistgħu jaraw is-sokit li għandhom bżonn, jiftħu u jiktbu lilha.

Għaliex mhux fajl? Għax kulħadd qara artiklu dwar Badushechka, li ppruvaw jgħaddu l-fajl lil docker, u sabet li wara li jerġa' jibda rsyslog, id-deskrittur tal-fajl jinbidel, u docker jitlef dan il-fajl. Iżomm miftuħ xi ħaġa oħra, iżda mhux l-istess socket fejn jiktbu. Iddeċidejna li se noqogħdu jaqbżu din il-problema, u, fl-istess ħin, nervebu l-problema tal-imblukkar.

Yury Bushmelev "Mappa ta 'rake fil-qasam tal-ġbir u l-kunsinna ta' zkuk" - traskrizzjoni tar-rapport

Rsyslog jagħmel l-azzjonijiet indikati fuq is-slajd u jibgħat zkuk jew lil relay jew lil Kafka. Kafka isegwi l-mod antik. Rayleigh - Ippruvajt nuża rsyslog pur biex inwassal zkuk. Mingħajr Message Queue, billi tuża għodod standard rsyslog. Bażikament, jaħdem.

Yury Bushmelev "Mappa ta 'rake fil-qasam tal-ġbir u l-kunsinna ta' zkuk" - traskrizzjoni tar-rapport

Iżda hemm sfumaturi dwar kif timlahom aktar tard f'din il-parti (Logstash/Graylog/ES). Din il-parti (rsyslog-rsyslog) tintuża bejn id-datacenters. Hawnhekk hawn link tcp kompressat, li jippermettilek tiffranka bandwidth u, għaldaqstant, b'xi mod iżżid il-probabbiltà li nirċievu xi zkuk minn ċentru tad-dejta ieħor meta l-kanal ikun mimli. Għax għandna l-Indoneżja, fejn kollox huwa ħażin. Hemmhekk tinsab il-problema kostanti.

Yury Bushmelev "Mappa ta 'rake fil-qasam tal-ġbir u l-kunsinna ta' zkuk" - traskrizzjoni tar-rapport

Ħsibna dwar kif fil-fatt nissorveljaw, b'liema probabbiltà li r-reġistri li rreġistrajna mill-applikazzjoni jilħqu dak il-għan? Iddeċidejna li nibdew metriċi. Rsyslog għandu l-modulu tal-ġbir tal-istatistika tiegħu stess, li għandu xi tip ta 'bankijiet. Per eżempju, jista 'jurik id-daqs tal-kju, jew kemm daħlu messaġġi għal tali jew tali azzjoni. Diġà tista’ tieħu xi ħaġa minnhom. Barra minn hekk, għandu counters tad-dwana li tista 'tikkonfigura, u jurik, pereżempju, in-numru ta' messaġġi li xi API irreġistraw. Sussegwentement, ktibt rsyslog_exporter f'Python, u bgħatna kollox lil Prometheus u plottajna. Xtaqna ħafna metriċi Graylog, iżda s'issa ma kellniex ħin biex inwaqqfuhom.

Yury Bushmelev "Mappa ta 'rake fil-qasam tal-ġbir u l-kunsinna ta' zkuk" - traskrizzjoni tar-rapport

X'inhuma l-problemi? Il-problema qamet bil-fatt li sirna nafu (F'daqqa waħda!) Li l-API Live tagħna jiktbu 50k messaġġi kull sekonda. Dan huwa biss Live API mingħajr staging. U Graylog jurina biss 12-il elf messaġġ kull sekonda. U qamet mistoqsija raġonevoli, fejn huma l-fdalijiet? Li minnu kkonkludejna li Graylog sempliċement ma jistax ilaħħaq. Fittixna, u, tabilħaqq, Graylog ma 'Elasticsearch ma ħakmux dan il-fluss.

Sussegwentement, skoperti oħra li għamilna tul it-triq.

Il-kitbiet fis-sokit huma mblukkati. Kif ġara? Meta użajt rsyslog għall-kunsinna, f'xi punt aħna kissru l-kanal bejn iċ-ċentri tad-dejta. Il-konsenja qamet f'post wieħed, il-kunsinna qamet f'post ieħor. Dan kollu niżel għal magna b'APIs li jiktbu fis-socket rsyslog. Kien hemm kju. Imbagħad il-kju għall-kitba fis-socket unix mimlija, li awtomatikament huwa 128 pakkett. U l-write() li jmiss fil-blokki tal-applikazzjoni. Meta ħares lejn il-librerija li nużaw fl-applikazzjonijiet Go, hemm miktub li l-kitba fis-socket isseħħ f'mod li ma jimblokkax. Konna ċerti li xejn ma kien imblukkat. Għax qrajna artiklu dwar Badushechkali kiteb dwarha. Imma hemm mument. Kien hemm ukoll loop infinit madwar din is-sejħa, li fiha kien hemm tentattiv kostanti biex timbotta messaġġ fis-socket. Ma ndunajnihx. Kelli nikteb mill-ġdid il-librerija. Minn dakinhar, inbidel diversi drabi, iżda issa neħles mis-serraturi fis-sottosistemi kollha. Għalhekk, tista 'twaqqaf rsyslog u xejn ma jaqa'.

Huwa meħtieġ li jiġi mmonitorjat id-daqs tal-kjuwijiet, li jgħin biex ma jitfaċċax dan ir-rake. L-ewwel, nistgħu nissorveljaw meta nibdew nitilfu l-messaġġi. It-tieni nett, nistgħu nissorveljaw li bażikament għandna problemi bil-kunsinna.

U mument ieħor spjaċevoli - amplifikazzjoni b'10 darbiet f'arkitettura ta 'mikroservizz hija faċli ħafna. M'għandniex daqstant talbiet deħlin, iżda minħabba l-graff li matulu dawn il-messaġġi jimxu aktar, minħabba r-zkuk tal-aċċess, aħna fil-fatt inżidu t-tagħbija fuq ir-zkuk b'madwar għaxar darbiet. Sfortunatament, ma kellix ħin biex nikkalkula n-numri eżatti, iżda l-mikroservizzi huma dak li huma. Dan għandu jinżamm f'moħħu. Jirriżulta li bħalissa s-subsistema tal-ġbir taz-zkuk hija l-aktar mgħobbija f'Lazada.

Yury Bushmelev "Mappa ta 'rake fil-qasam tal-ġbir u l-kunsinna ta' zkuk" - traskrizzjoni tar-rapport

Kif issolvi l-problema elasticsearch? Jekk għandek bżonn tikseb zkuk malajr f'post wieħed, sabiex ma tgħaddix mal-magni kollha u tiġborhom hemm, uża l-ħażna tal-fajls. Dan huwa garantit li jaħdem. Dan isir minn kwalunkwe server. Għandek bżonn biss li twaħħal diski hemmhekk u tpoġġi syslog. Wara dan, inti garantit li jkollok zkuk kollha f'post wieħed. Imbagħad ikun possibbli li bil-mod jiġi kkonfigurat elasticsearch, graylog, jew xi ħaġa oħra. Imma diġà se jkollok ir-zkuk kollha, u, barra minn hekk, tista 'taħżenhom, safejn hemm biżżejjed arrays ta' diski.

Yury Bushmelev "Mappa ta 'rake fil-qasam tal-ġbir u l-kunsinna ta' zkuk" - traskrizzjoni tar-rapport

Fiż-żmien tar-rapport tiegħi, l-iskema bdiet tidher bħal din. Prattikament bqajna nikteb fil-fajl. Issa, x'aktarx, se nitfiw il-fdalijiet. Fuq magni lokali li jħaddmu l-API, se nieqfu nikteb fil-fajls. L-ewwel, hemm ħażna ta 'fajls, li taħdem tajjeb ħafna. It-tieni nett, dawn il-magni qegħdin kontinwament jispiċċaw mingħajr spazju, għandek bżonn timmonitorjah kontinwament.

Din il-parti ma 'Logstash u Graylog, hija verament soars. Għalhekk, għandek bżonn teħles minnha. Trid tagħżel waħda.

Yury Bushmelev "Mappa ta 'rake fil-qasam tal-ġbir u l-kunsinna ta' zkuk" - traskrizzjoni tar-rapport

Iddeċidejna li niżżlu Logstash u Kibana. Għax għandna dipartiment tas-sigurtà. X'inhi l-konnessjoni? Il-konnessjoni hija li Kibana mingħajr X-Pack u mingħajr Shield ma jippermettilekx tiddistingwi d-drittijiet ta 'aċċess għar-zkuk. Għalhekk, ħadu Graylog. Għandu dan kollu. Ma nħobbx, imma taħdem. Xtrajna ħardwer ġdid, installajna Graylog frisk hemmhekk, u mċaqalqa zkuk kollha b'formati stretti għal Graylog separat. Aħna solvejna l-problema b'tipi differenti ta 'l-istess oqsma b'mod organizzattiv.

Yury Bushmelev "Mappa ta 'rake fil-qasam tal-ġbir u l-kunsinna ta' zkuk" - traskrizzjoni tar-rapport

X'inhu eżattament inkluż fil-Graylog il-ġdid. Aħna biss ktibna kollox fid-docker. Aħna ħadna mazz ta 'servers, roll out tliet istanzi Kafka, 7 Graylog servers verżjoni 2.3 (għax ridt Elasticsearch verżjoni 5). Dan kollu tqajjem fuq rejds mill-HDD. Rajna rata ta’ indiċjar sa 100 elf messaġġ kull sekonda. Rajna l-figura li 140 terabytes ta 'data fil-ġimgħa.

Yury Bushmelev "Mappa ta 'rake fil-qasam tal-ġbir u l-kunsinna ta' zkuk" - traskrizzjoni tar-rapport

U għal darb'oħra rake! Għandna żewġ bejgħ ġejjin. Imxejna lil hinn mis-6 miljun post. Aħna Graylog m'għandux ħin biex tomgħod. B'xi mod trid tgħix mill-ġdid.

Yury Bushmelev "Mappa ta 'rake fil-qasam tal-ġbir u l-kunsinna ta' zkuk" - traskrizzjoni tar-rapport

Hekk bqajna ħaj. Żieda ftit aktar servers u SSDs. Bħalissa qed ngħixu hekk. Issa aħna diġà qed tomgħod 160k messaġġi kull sekonda. Għadna ma laħqux il-limitu, għalhekk mhux ċar kemm nistgħu noħorġu minnu b'mod realistiku.

Yury Bushmelev "Mappa ta 'rake fil-qasam tal-ġbir u l-kunsinna ta' zkuk" - traskrizzjoni tar-rapport

Dawn huma l-pjanijiet tagħna għall-futur. Minn dawn, tassew, l-aktar importanti hija probabbilment disponibbiltà għolja. Għadna m'għandniex. Diversi karozzi huma armati bl-istess mod, iżda s'issa kollox għaddej minn karozza waħda. Huwa meħtieġ li tqatta 'ħin biex twaqqaf failover bejniethom.

Iġbor metriċi minn Graylog.

Agħmel limitu ta 'rata sabiex ikollna API waħda miġnuna li ma toqtolx bandwidth u kull ħaġa oħra.

U fl-aħħarnett, iffirma xi tip ta 'SLA mal-iżviluppaturi sabiex inkunu nistgħu naqdu daqshekk. Jekk tikteb aktar, allura skużani.

U ikteb id-dokumentazzjoni.

Yury Bushmelev "Mappa ta 'rake fil-qasam tal-ġbir u l-kunsinna ta' zkuk" - traskrizzjoni tar-rapport

Fil-qosor, ir-riżultati ta 'dak kollu li esperjenzajna. L-ewwel, l-istandards. It-tieni, syslog huwa kejk. It-tielet nett, rsyslog jaħdem eżatt kif inhu miktub fuq is-slide. U ejja naslu għall-mistoqsijiet.

mistoqsijiet.

Mistoqsija: Għaliex iddeċidew li ma jieħdux ... (filebeat?)

Tweġiba: Ħtieġa li tikteb f'fajl. Verament ma ridtx. Meta l-API tiegħek tikteb eluf ta 'messaġġi kull sekonda, anki jekk iddawwar darba fis-siegħa, din għadha mhix għażla. Tista 'tikteb lill-pajp. Għalihom l-iżviluppaturi staqsewni: "X'se jiġri jekk il-proċess li fih niktbu jaqa'"? Ma sibtx x'nwieġebhom, u għedt: "Well, ok, ejja ma nagħmlux hekk."

Mistoqsija: Għaliex ma tiktebx zkuk fuq HDFS?

TweġibaA: Dan huwa l-istadju li jmiss. Ħsibna dwarha fil-bidu nett, iżda peress li m'hemm l-ebda riżorsi biex nittrattawha bħalissa, hija mdendla fis-soluzzjoni fit-tul tagħna.

Mistoqsija: Format tal-kolonna jkun aktar adattat.

Tweġiba: Fhimt. Aħna "għal" biż-żewġ idejn.

Mistoqsija: Tikteb lil rsyslog. Kemm TCP kif ukoll UDP huma disponibbli hemmhekk. Imma jekk UDP, allura kif tiggarantixxi l-kunsinna?

TweġibaA: Hemm żewġ punti. L-ewwel, immedjatament ngħid lil kulħadd li aħna ma niggarantixxux il-kunsinna ta 'zkuk. Għax meta l-iżviluppaturi jiġu u jgħidu: "Ejja nibdew niktbu dejta finanzjarja hemmhekk, u int se tpoġġiha x'imkien għalina f'każ li jiġri xi ħaġa," aħna nwieġbuhom, "Kbir! Ejja nibdew nibblukkaw fuq il-kitba fis-sokit, u tagħmel dan fit-tranżazzjonijiet, sabiex tkun garantit li tpoġġiha fis-sokit għalina u kun żgur li rċevejna min-naħa l-oħra. U f'dan il-mument, kulħadd immedjatament isir bla bżonn. U jekk le, allura x’mistoqsijiet għandna? Jekk ma tridx tiggarantixxi tikteb lis-sokit, allura għaliex niggarantixxu l-kunsinna? Aħna qed nagħmlu l-aħjar sforz. Aħna verament nippruvaw inwasslu kemm jista 'jkun u bl-aħjar mod possibbli, iżda ma nagħtux garanzija ta' 100%. Għalhekk, m'għandekx bżonn tikteb dejta finanzjarja hemmhekk. Hemm databases transazzjonali għal dan.

Mistoqsija: Meta l-API tiġġenera xi messaġġ fil-log u tittrasferixxi l-kontroll lill-mikroservizzi, iltqajt mal-problema li messaġġi minn mikroservizzi differenti jaslu fl-ordni ħażina? Minħabba dan, tqum konfużjoni.

TweġibaA: Huwa normali li jiġu f'ordni differenti. Trid tkun lest għal dan. Minħabba li kwalunkwe kunsinna ta 'netwerk ma tiggarantixxix ordni lilek, jew għandek bżonn tonfoq riżorsi speċjali fuq dan. Jekk nieħdu ħażniet tal-fajls, allura kull API jiffranka zkuk fil-fajl tiegħu stess. Anzi, rsyslog jiddekomponihom f'direttorji hemmhekk. Kull API għandha zkuk tagħha stess hemmhekk, fejn tista 'tmur tfittex, u mbagħad tista' tqabbelhom billi tuża l-timestamp f'dan il-ġurnal. Jekk imorru jfittxu fi Graylog, allura hemm jiġu magħżula skont it-timbru taż-żmien. Kollox se jkun tajjeb hemmhekk.

Mistoqsija: It-timbru taż-żmien jista' jvarja b'millisekondi.

Tweġiba: Il-timestamp huwa ġġenerat mill-API innifsu. Dan, fil-fatt, huwa l-punt kollu. Għandna NTP. L-API tiġġenera timestamp diġà fil-messaġġ innifsu. Mhuwiex miżjud minn rsyslog.

Mistoqsija: L-interazzjoni bejn iċ-ċentri tad-dejta mhix ċara ħafna. Fi ħdan il-qafas taċ-ċentru tad-dejta, huwa ċar kif inġabru u ġew ipproċessati r-zkuk. Kif inhi l-interazzjoni bejn iċ-ċentri tad-dejta? Jew kull ċentru tad-dejta jgħix ħajtu?

Tweġiba: Kważi. Għandna kull pajjiż jinsab f'ċentru tad-dejta wieħed. Bħalissa m'għandniex tixrid, sabiex pajjiż wieħed jitqiegħed f'ċentri tad-dejta differenti. Għalhekk, m'hemmx bżonn li tgħaqqadhom. Ġewwa kull ċentru hemm Log Relay. Dan huwa server Rsyslog. Fil-fatt, żewġ magni ta 'ġestjoni. Huma mwaqqfa bl-istess mod. Iżda għalissa, it-traffiku jgħaddi biss minn waħda minnhom. Hija zkuk kollox aggregati. Għandu kju tad-disk fil-każ. Hija tagħfas ir-zkuk u tibgħathom liċ-ċentru tad-dejta ċentrali (Singapor), fejn aktar huma diġà avvelenati fi Graylog. U kull ċentru tad-dejta għandu l-ħażna tal-fajls tiegħu stess. F'każ li tlifna l-konnessjoni, għandna r-zkuk kollha hemmhekk. Huma se jibqgħu hemm. Huma ser jinħażnu hemmhekk.

Mistoqsija: Ikollok zkuk minn hemm waqt sitwazzjonijiet anormali?

Tweġiba: Tista 'tmur hemm (għall-ħażna tal-fajl) u tfittex.

Mistoqsija: Kif tissorvelja li ma titlifx zkuk?

Tweġiba: Fil-fatt qed nitilfuhom, u qed nissorveljawha. Il-monitoraġġ beda xahar ilu. Il-librerija li jużaw il-Go APIs għandha metriċi. Tista' tgħodd kemm-il darba naqset milli tikteb fis-socket. Hemm bħalissa hemm heuristiku delikat. Hemm buffer hemmhekk. Jipprova jikteb messaġġ minnha għal socket. Jekk il-buffer ifur, jibda jwaqqagħhom. U jgħodd kemm niżelhom. Jekk il-bankijiet jibdew ifur hemm, inkunu nafu biha. Issa qed jaslu wkoll għal prometheus, u tista 'tara l-grafiċi fi Grafana. Tista' twaqqaf twissijiet. Iżda għadu mhux ċar lil min jibgħathom.

Mistoqsija: F'elasticsearch, taħżen zkuk b'redundancy. Kemm għandek repliki?

Tweġiba: Replika waħda.

Mistoqsija: Hija linja waħda biss?

Tweġiba: Dan huwa l-kaptan u replika. Id-data hija maħżuna f'żewġ kopji.

Mistoqsija: Ridt tweak id-daqs tal-rsyslog buffer b'xi mod?

Tweġiba: Aħna niktbu datagrammi għal socket unix tad-dwana. Dan immedjatament jimponi limitazzjoni ta '128 kilobytes fuqna. Ma nistgħux niktbu aktar fiha. Aħna ktibna dan fl-istandard. Min irid jidħol fil-ħażna, jiktbu 128 kilobytes. Il-libreriji, barra minn hekk, jaqtgħu, u jpoġġu bandiera li l-messaġġ huwa maqtugħ. Għandna qasam speċjali fl-istandard tal-messaġġ innifsu, li juri jekk kienx maqtugħ waqt ir-reġistrazzjoni jew le. Għalhekk għandna l-opportunità li nsegwu dan il-mument.

Mistoqsija: Tikteb JSON miksur?

Tweġiba: JSON miksur se jintrema jew waqt ir-relay minħabba li l-pakkett huwa kbir wisq. Jew Graylog se jintrema, minħabba li mhux se jkun jista 'jparse JSON. Iżda hemm sfumaturi hawn li jeħtieġ li jiġu ffissati, u huma l-aktar marbuta ma 'rsyslog. Diġà imlejt ftit ħarġa hemmhekk, li għad iridu jinħadmu.

Mistoqsija: Għaliex Kafka? Ippruvajt RabbitMQ? Graylog ma jammontawx taħt tagħbijiet bħal dawn?

Tweġiba: Ma taħdimx ma' Graylog. U Graylog qed jieħu forma. Huwa tassew problematiku għalih. Huwa tip ta 'ħaġa. U, fil-fatt, mhuwiex meħtieġ. Nippreferi nikteb minn rsyslog direttament għal elasticsearch u mbagħad tara Kibana. Imma rridu nsolvu l-kwistjoni mal-gwardjani tas-sigurtà. Dan huwa varjant possibbli tal-iżvilupp tagħna meta narmi Graylog u nużaw Kibana. Logstash mhux se jagħmel sens. Għax nista' nagħmel l-istess b'rsyslog. U għandu modulu biex tikteb lil elasticsearch. Bi Graylog qed nippruvaw ngħixu b'xi mod. Aħna anke tweaked ftit. Iżda għad hemm lok għal titjib.

Dwar Kafka. Hekk ġara storikament. Meta wasalt, kien diġà hemm, u zkuk kienu diġà qed jinkitbu lilha. Aħna biss qajmu l-cluster tagħna u mċaqalqa zkuk fih. Aħna namministrawh, nafu kif iħossu. Fir-rigward tal-RabbitMQ... qed ikollna problemi ma' RabbitMQ. U RabbitMQ qed jiżviluppa għalina. Għandna fil-produzzjoni, u kien hemm problemi magħha. Issa, qabel il-bejgħ, kien ikun shamanized, u kien jibda jaħdem b'mod normali. Iżda qabel dan, ma kontx lest li nirħilsu fil-produzzjoni. Hemm ħaġa oħra. Graylog jista 'jaqra l-verżjoni AMQP 0.9 u rsyslog jista' jikteb il-verżjoni AMQP 1.0. U m'hemmx soluzzjoni waħda li tista' tagħmel it-tnejn fin-nofs. Hemm jew wieħed jew ieħor. Mela għalissa Kafka biss. Iżda hemm ukoll sfumaturi. Minħabba li omkafka tal-verżjoni ta 'rsyslog li nużaw jista' jitlef il-buffer tal-messaġġ kollu li ssieħeb minn rsyslog. Sakemm inpoġġu magħha.

Mistoqsija: Qed tuża lil Kafka għax kellek? Mhux użat għal xi skop ieħor?

Tweġiba: Kafka, li ntużat mit-tim tax-Xjenza tad-Data. Dan huwa proġett kompletament separat, li dwaru jien, sfortunatament, ma nista 'ngħid xejn. Ma nafx. Hija tmexxiet mit-tim tax-Xjenza tad-Data. Meta bdew iz-zkuk, iddeċidew li jużawha, sabiex ma jpoġġux tagħhom stess. Issa aġġornajna Graylog, u tlifna l-kompatibilità, minħabba li hemm verżjoni antika ta 'Kafka. Kellna nagħmlu tagħna. Fl-istess ħin, neħles minn dawn l-erba 'suġġetti għal kull API. Għamilna top wiesa 'għal kulħadd live, top wiesa' wieħed għal kull staging u aħna biss nisparaw kollox hemmhekk. Graylog jiġbed dan kollu b'mod parallel.

Mistoqsija: Għaliex għandna bżonn dan ix-xamaniżmu bis-sokits? Ippruvajt tuża s-syslog log driver għall-kontenituri.

Tweġiba: Fiż-żmien meta staqsejna din il-mistoqsija, kellna relazzjonijiet ta’ tensjoni mad-docker. Kien docker 1.0 jew 0.9. Docker innifsu kien stramb. It-tieni, jekk inti wkoll shove zkuk fiha ... Għandi suspett mhux verifikat li tgħaddi z-zkuk kollha minnu nnifsu, permezz tad-daemon docker. Jekk ikollna API waħda miġnun, allura l-bqija tal-APIs se jiltaqgħu mal-fatt li ma jistgħux jibagħtu stdout u stderr. Ma nafx fejn se jwassal dan. Għandi suspett fil-livell li nħoss li mhux meħtieġ li tuża d-docker syslog driver f'dan il-post. Id-dipartiment tal-ittestjar funzjonali tagħna għandu l-cluster Graylog tiegħu stess biz-zkuk. Huma jużaw docker log sewwieqa u kollox jidher li jkun tajjeb hemmhekk. Iżda immedjatament jiktbu GELF lil Graylog. Fil-mument meta bdejna dan kollu, kellna bżonnha biex taħdem biss. Forsi aktar tard, meta jiġi xi ħadd u jgħid li ilu mitt sena taħdem b’mod normali, nippruvaw.

Mistoqsija: Int tagħti bejn iċ-ċentri tad-dejta billi tuża rsyslog. Għaliex mhux fuq Kafka?

Tweġiba: Aħna nagħmlu dan, u dan huwa kif verament hu. Għal żewġ raġunijiet. Jekk il-kanal ikun kompletament mejjet, allura zkuk kollha tagħna, anke f'forma kompressata, ma jitilgħux minnu. U kafka jippermettilhom li sempliċiment jitilfu fil-proċess. B'dan il-mod, neħilsu mit-twaħħil ta 'dawn iz-zkuk. Aħna biss qed nużaw Kafka f'dan il-każ direttament. Jekk għandna kanal tajjeb u rridu neħilsu, allura nużaw ir-rsyslog tagħhom. Imma fil-fatt, tista 'twaqqafha sabiex tinżel dak li ma għadda minnu. Bħalissa qed nużaw il-kunsinna rsyslog direttament x'imkien, x'imkien Kafka.

Sors: www.habr.com

Żid kumment