Yury Bushmelev "Taswirar rake a fagen tattarawa da isar da rajistan ayyukan" - kwafin rahoton

Logs wani muhimmin sashi ne na tsarin, yana ba ku damar fahimtar cewa yana aiki (ko baya aiki) kamar yadda aka zata. A ƙarƙashin yanayin gine-ginen microservice, aiki tare da rajistan ayyukan ya zama wani horo na musamman na Olympiad na musamman. Akwai abubuwa da yawa da ya kamata a magance:

  • yadda ake rubuta rajistan ayyukan daga aikace-aikacen;
  • inda za a rubuta rajistan ayyukan;
  • yadda ake sadar da katako don ajiya da sarrafawa;
  • yadda ake sarrafawa da adana rajistan ayyukan.

Amfani da shahararrun fasahohin kwantena a halin yanzu yana ƙara yashi a saman rake a fagen zaɓuɓɓukan warware matsala.

A game da wannan shi ne kwafin rahoton Yuri Bushmelev "Taswirar rake a fagen tattarawa da isar da gundumomi"

Wanene ya damu, don Allah a ƙarƙashin cat.

Sunana Yuri Bushmelev. Ina aiki da Lazada. A yau zan yi magana game da yadda muka yi gundumomi, yadda muka tattara su, da abin da muke rubutawa a can.

Yury Bushmelev "Taswirar rake a fagen tattarawa da isar da rajistan ayyukan" - kwafin rahoton

Daga ina muke? Wanene mu? Lazada ita ce mai siyar da kan layi ta #1 a cikin ƙasashe shida a kudu maso gabashin Asiya. Duk waɗannan ƙasashe ana rarraba su a tsakanin cibiyoyin bayanai. Yanzu akwai cibiyoyin bayanai guda 4. Me yasa wannan yake da mahimmanci? Domin wasu yanke shawara sun kasance ne saboda akwai alaka mai rauni a tsakanin cibiyoyin. Muna da gine-ginen microservice. Na yi mamakin ganin cewa mun riga mun sami microservices 80. Lokacin da na fara aikin da katako, akwai guda 20 kawai. Bugu da ƙari, akwai wani babban yanki na gado na PHP, wanda kuma dole ne in zauna tare da shi. Duk wannan yana haifar mana da saƙo sama da miliyan 6 a minti ɗaya don tsarin gabaɗaya. Bugu da ari zan nuna yadda muke ƙoƙarin rayuwa tare da wannan, da kuma dalilin da yasa hakan yake.

Yury Bushmelev "Taswirar rake a fagen tattarawa da isar da rajistan ayyukan" - kwafin rahoton

Dole ne ku zauna tare da waɗannan saƙonnin miliyan 6 ko ta yaya. Me ya kamata mu yi da su? Ana buƙatar saƙonni miliyan 6:

  • aika daga app
  • karba domin bayarwa
  • isar don bincike da adanawa.
  • yi nazari
  • adana ko ta yaya.

Yury Bushmelev "Taswirar rake a fagen tattarawa da isar da rajistan ayyukan" - kwafin rahoton

Lokacin da akwai saƙonni miliyan uku, Ina da kusan kamanni iri ɗaya. Domin mun fara da wasu tsabar kudi. A bayyane yake cewa an rubuta rajistan ayyukan a can. Misali, ba zai iya haɗawa da bayanan bayanai ba, zai iya haɗawa da bayanan bayanai, amma ya kasa karanta wani abu. Amma baya ga wannan, kowane ɗayan ƙananan sabis ɗin mu kuma yana rubuta bayanan shiga. Kowace buƙatun da ta isa microservice ta faɗi cikin log ɗin. Me yasa muke yin haka? Masu haɓakawa suna son samun damar ganowa. Kowane log log ɗin yana ɗauke da filin ganowa, gwargwadon abin da keɓancewa ta musamman sannan ta buɗe dukkan sarkar kuma tana nuna alamar da kyau. Alamar tana nuna yadda buƙatar ta gudana, kuma wannan yana taimaka wa masu haɓaka mu su magance duk wani datti da ba a san su ba cikin sauri.

Yury Bushmelev "Taswirar rake a fagen tattarawa da isar da rajistan ayyukan" - kwafin rahoton

Yadda za a zauna da shi? Yanzu zan ɗan bayyana filin zaɓuɓɓuka - yadda ake magance wannan matsalar gaba ɗaya. Yadda za a magance matsalar tattarawa, canja wuri da adana bayanai.

Yury Bushmelev "Taswirar rake a fagen tattarawa da isar da rajistan ayyukan" - kwafin rahoton

Yadda ake rubuta daga aikace-aikacen? A bayyane yake cewa akwai hanyoyi daban-daban. Musamman ma, akwai mafi kyawun aiki, kamar yadda ’yan’uwa na gaye suka gaya mana. Akwai nau'ikan tsohuwar makaranta iri biyu, kamar yadda kakanni suka ce. Akwai wasu hanyoyi.

Yury Bushmelev "Taswirar rake a fagen tattarawa da isar da rajistan ayyukan" - kwafin rahoton

Tare da tarin katako, yanayin yana kusan iri ɗaya. Babu zaɓuɓɓuka da yawa don warware wannan ɓangaren musamman. Akwai ƙari daga cikinsu, amma ba su da yawa tukuna.

Yury Bushmelev "Taswirar rake a fagen tattarawa da isar da rajistan ayyukan" - kwafin rahoton

Amma tare da bayarwa da bincike na gaba, adadin bambance-bambancen ya fara fashewa. Ba zan kwatanta kowane zaɓi a yanzu ba. Ina tsammanin manyan zaɓuɓɓukan sananne ne ga duk wanda ke sha'awar batun.

Yury Bushmelev "Taswirar rake a fagen tattarawa da isar da rajistan ayyukan" - kwafin rahoton

Zan nuna muku yadda muka yi a Lazada da kuma yadda aka fara.

Yury Bushmelev "Taswirar rake a fagen tattarawa da isar da rajistan ayyukan" - kwafin rahoton

Shekara guda da ta wuce, na zo Lazada kuma an tura ni aikin katako. Haka ya kasance a can. An rubuta log ɗin daga aikace-aikacen zuwa stdout da stderr. Duk abin da aka yi a cikin gaye hanya. Amma sai masu haɓakawa suka jefar da shi daga daidaitattun rafukan, sannan ƙwararrun ababen more rayuwa za su gane ta ko ta yaya. Tsakanin ƙwararrun ababen more rayuwa da masu haɓakawa, akwai kuma masu sakewa waɗanda suka ce: “Uh… da kyau, bari mu naɗe su cikin fayil tare da harsashi, kuma shi ke nan.” Kuma da yake duk wannan yana cikin akwati, sai suka nade shi a cikin kwandon da kansa, suka yi taswirar littafin da ke ciki suka ajiye a wurin. Ina ganin yana da kyau a bayyane ga kowa abin da ya faru.

Yury Bushmelev "Taswirar rake a fagen tattarawa da isar da rajistan ayyukan" - kwafin rahoton

Bari mu kara duba kadan. Yadda muka isar da waɗannan kujerun. Wani ya ɗauki td-agent, wanda a zahiri yana da kyau amma ba sosai ba. Har yanzu ban fahimci alakar wadannan ayyuka guda biyu ba, amma ga dukkan alamu abu daya ne. Kuma wannan ƙwaƙƙwaran, wanda aka rubuta da Ruby, karanta fayilolin log, ya rarraba su zuwa JSON ta amfani da wasu maganganu na yau da kullun. Sannan aka tura su Kafka. Bugu da ƙari, a cikin Kafka, muna da batutuwa daban-daban guda 4 don kowane API. Me yasa 4? Domin akwai rayayye, akwai shirye-shirye, kuma saboda akwai stdout da stderr. Masu haɓakawa suna samar da su, kuma dole ne ma'aikatan ababen more rayuwa su ƙirƙira su a cikin Kafka. Bugu da ƙari, Kafka wani sashe ne ke sarrafa shi. Sabili da haka, ya zama dole don ƙirƙirar tikiti don ƙirƙirar batutuwa 4 a wurin kowane api. Kowa ya manta da shi. Gabaɗaya, shara ne da sharar gida.

Yury Bushmelev "Taswirar rake a fagen tattarawa da isar da rajistan ayyukan" - kwafin rahoton

Me muka yi gaba da shi? Mun aika zuwa kafka. Daga baya daga Kafka, rabin rajistan ayyukan sun tashi zuwa Logstash. Sauran rabin gungumen kuma aka raba. Wasu sun tashi zuwa wani Graylog, wasu zuwa wani Graylog. Sakamakon haka, duk wannan ya tashi zuwa gungu na Elasticsearch guda ɗaya. Wato duk wannan rikici ya fada a karshe a can. Ba lallai ne ku yi hakan ba!

Yury Bushmelev "Taswirar rake a fagen tattarawa da isar da rajistan ayyukan" - kwafin rahoton

Wannan shine yadda yake kama idan an duba shi daga sama. Ba lallai ne ku yi hakan ba! Anan, wuraren matsalar nan da nan ana yiwa lambobi alama. Akwai haƙiƙa mafi yawa daga cikinsu, amma 6 suna da matsala da gaske, waɗanda ake buƙatar yin wani abu da su. Zan fada game da su daban yanzu.

Yury Bushmelev "Taswirar rake a fagen tattarawa da isar da rajistan ayyukan" - kwafin rahoton

Anan (1,2,3) muna rubuta fayiloli kuma, bisa ga haka, akwai rake guda uku a nan lokaci guda.

Na farko (1) shi ne cewa muna bukatar mu rubuta su a wani wuri. Ba koyaushe ake so a ba API ikon rubuta kai tsaye zuwa fayil ba. Yana da kyawawa cewa API ɗin ya keɓanta a cikin akwati, har ma mafi kyau, cewa a karanta shi kaɗai. Ni mai kula da tsarin ne, don haka ina da ɗan ƙaramin ra'ayi na waɗannan abubuwan.

Batu na biyu (2,3) shine muna da buƙatun da yawa da ke zuwa API. API ɗin yana rubuta bayanai da yawa zuwa fayil. Fayilolin suna girma. Muna bukatar mu juya su. Domin in ba haka ba ba za ku iya ajiye kowane fayafai a wurin ba. Juyawa su ba kyau ba ne saboda ana tura su ta harsashi zuwa kundin adireshi. Babu yadda za mu iya juya shi. Ba za ku iya gaya wa aikace-aikacen don sake buɗe hannaye ba. Domin masu haɓakawa za su dube ku kamar wawa: “Waɗanne bayanai ne? Kullum muna rubutawa zuwa stdout. Fayilolin sun yi copytruncate cikin logrotate, wanda kawai ke yin kwafin fayil ɗin kuma kututturen asali. Saboda haka, tsakanin waɗannan hanyoyin kwafi, sarari diski yawanci ya ƙare.

(4) Muna da tsari daban-daban a APIs daban-daban. Sun ɗan bambanta, amma dole ne a rubuta regexp daban. Tunda duk abin da Puppet ne ke sarrafa shi, akwai ɗimbin azuzuwan da kyankyasai. Bugu da ƙari, td-agent mafi yawan lokaci zai iya cin ƙwaƙwalwar ajiya, ya zama wawa, yana iya yin kamar yana aiki kuma bai yi kome ba. A zahiri, ba zai yiwu a fahimci cewa ba ya yin komai. A mafi kyau, zai fadi, kuma wani zai dauke shi daga baya. Fiye da daidai, faɗakarwa za ta tashi, kuma wani zai je ya ɗaga ta da hannuwansu.

Yury Bushmelev "Taswirar rake a fagen tattarawa da isar da rajistan ayyukan" - kwafin rahoton

(6) Kuma mafi sharar gida da sharar gida - shi ne elasticsearch. Domin tsohuwar siga ce. Domin ba mu da ƙwazo a lokacin. Muna da gundumomi dabam-dabam waɗanda filayensu za su iya haɗuwa. Ana iya rubuta rajistan ayyukan daban-daban na aikace-aikace daban-daban tare da sunayen filin iri ɗaya, amma a lokaci guda ana iya samun bayanai daban-daban a ciki. Wato log ɗaya yana zuwa tare da Integer a cikin fili, misali, matakin. Wani log yana zuwa tare da String a cikin filin matakin. Idan babu taswira a tsaye, irin wannan abu mai ban mamaki yana fitowa. Idan, bayan jujjuya fihirisa, saƙo mai kirtani ya fara zuwa cikin bincike na elastick, to muna rayuwa kullum. Kuma idan na farko ya zo da Integer, to duk saƙonnin da suka zo tare da String ana watsar dasu kawai. Domin nau'in filin bai dace ba.

Yury Bushmelev "Taswirar rake a fagen tattarawa da isar da rajistan ayyukan" - kwafin rahoton

Mun fara yin wadannan tambayoyi. Mun yanke shawarar cewa ba za mu nemo masu laifi ba.

Yury Bushmelev "Taswirar rake a fagen tattarawa da isar da rajistan ayyukan" - kwafin rahoton

Amma akwai bukatar a yi! Abu na fili shi ne cewa muna buƙatar kafa ƙa'idodi. Mun riga muna da wasu ma'auni. Wasu mun kawo kadan daga baya. Abin farin ciki, an riga an amince da tsarin log guda na duk APIs a wancan lokacin. An rubuta shi kai tsaye cikin ka'idojin hulɗar sabis. Don haka, wadanda suke son karban katako su rubuta su ta wannan tsari. Idan wani bai rubuta rajistan ayyukan ba a cikin wannan tsari, to ba mu da garantin komai.

Bugu da ari, Ina so in sami ma'auni guda ɗaya don hanyoyin yin rikodi, bayarwa da tattara rajistan ayyukan. A gaskiya, inda za a rubuta su, da kuma yadda za a sadar da su. Yanayin da ya dace shine lokacin da ayyukan ke amfani da ɗakin karatu ɗaya. Akwai ɗakin karatu daban na Go, akwai ɗakin karatu daban don PHP. Duk wanda muke da shi, kowa ya kamata ya yi amfani da su. A halin yanzu, zan iya cewa muna samun nasara da kashi 80 cikin XNUMX. Amma wasu suna ci gaba da cin cacti.

Kuma a can (a kan nunin) "SLA don isar da log" ya fara bayyana da kyar. Ya zuwa yanzu, amma muna aiki a kai. Domin yana da matukar dacewa idan infra ya ce idan ka rubuta da irin wannan kuma irin wannan tsari zuwa irin wannan wuri da kuma irin wannan wuri kuma ba fiye da saƙon N ba a cikin dakika ɗaya, to za mu iya aikawa a can. Yana kawar da yawan ciwon kai. Idan akwai SLA, to yana da kyau kawai!

Yury Bushmelev "Taswirar rake a fagen tattarawa da isar da rajistan ayyukan" - kwafin rahoton

Ta yaya muka fara magance matsalar? Babban rake yana tare da td-agent. Ba a san inda gungumen namu ke tafiya ba. Ana isar da su? Suna tafiya? Ina suke ko yaya? Saboda haka, an yanke shawarar maye gurbin td-agent tare da abu na farko. Zaɓuɓɓuka don abin da za a maye gurbinsa da, na zayyana a taƙaice a nan.

Fluentd. Na farko, na ci karo da shi a wani aiki da ya gabata, shi ma yana faduwa lokaci-lokaci a wurin. Na biyu, wannan iri ɗaya ne, kawai a cikin bayanan martaba.

filebeat. Yaya yayi mana kyau? Gaskiyar cewa yana cikin Go, kuma muna da babban gwaninta a Go. Saboda haka, idan wani abu, ko ta yaya za mu iya ƙara wa kanmu. Shi ya sa ba mu dauka ba. Don kada ma a sami wata jaraba don fara sake rubutawa da kanka.

Mahimmin bayani ga sysadmin shine kowane nau'in syslogs a cikin wannan adadin (syslog-ng/rsyslog/nxlog).

Ko rubuta wani abu na ku, amma mun jefar da shi, da filebeat. Idan ka rubuta wani abu, to yana da kyau ka rubuta wani abu mai amfani ga kasuwanci. Don isar da rajistan ayyukan, yana da kyau a ɗauki wani abu da aka shirya.

Don haka, a zahiri zaɓin ya sauko zuwa zaɓi tsakanin syslog-ng da rsyslog. Na karkata zuwa ga rsyslog kawai saboda mun riga mun sami azuzuwan rsyslog a cikin Puppet, kuma ban sami wani bambanci a tsakanin su ba. Menene syslog, menene syslog. Ee, wasu takaddun sun fi muni, wasu sun fi kyau. Ya san wannan hanyar, kuma yana yin ta daban.

Yury Bushmelev "Taswirar rake a fagen tattarawa da isar da rajistan ayyukan" - kwafin rahoton

Kuma kadan game da rsyslog. Na farko, yana da kyau saboda yana da yawancin kayayyaki. Yana da RainerScript wanda mutum zai iya karantawa (harshen daidaitawa na zamani). Kyakkyawan kari shine cewa zamu iya yin koyi da halayen td-agent tare da daidaitattun kayan aikin sa, kuma babu abin da ya canza don aikace-aikace. Wato, muna canza td-agent zuwa rsyslog, kuma ba mu taɓa komai ba tukuna. Kuma nan da nan muna samun isar da aiki. Bayan haka, mmnormalize shine abin sanyi game da rsyslog. Yana ba ku damar tantance rajistan ayyukan, amma ba tare da Grok da regexp ba. Yana yin bishiyar syntax. Yana nazarin rajistan ayyukan ta hanyar da mai tarawa ke tantance lambar tushe. Wannan yana ba ku damar yin aiki da sauri, ku ci kaɗan CPU, kuma, gabaɗaya, abu ne mai daɗi sosai. Akwai tarin sauran kari. Ba zan zauna a kansu ba.

Yury Bushmelev "Taswirar rake a fagen tattarawa da isar da rajistan ayyukan" - kwafin rahoton

rsyslog yana da ƙarin rashin amfani. Su kusan iri ɗaya ne da kari. Babban matsalolin shine kuna buƙatar samun damar dafa shi, kuma kuna buƙatar zaɓar nau'in.

Yury Bushmelev "Taswirar rake a fagen tattarawa da isar da rajistan ayyukan" - kwafin rahoton

Mun yanke shawarar cewa za mu rubuta rajistan ayyukan a cikin soket na unix. Kuma ba a cikin /dev/log ba, saboda a can muna da rikice-rikice na tsarin rajistan ayyukan, akwai jarida a cikin wannan bututun. Don haka bari mu rubuta zuwa soket na al'ada. Za mu haɗa shi zuwa wani ka'ida daban. Kada mu tsoma baki da komai. Komai zai kasance a bayyane da fahimta. Don haka a zahiri mun yi. An daidaita kundin adireshi tare da waɗannan kwasfa kuma an tura shi zuwa duk kwantena. Kwantena za su iya ganin soket ɗin da suke buƙata, buɗe su rubuta zuwa gare shi.

Me yasa ba fayil ba? Domin kowa ya karanta labarin game da Badushechka, wanda yayi ƙoƙarin tura fayil ɗin zuwa docker, kuma ya gano cewa bayan sake kunna rsyslog, mai siffanta fayil ɗin ya canza, kuma docker ya rasa wannan fayil ɗin. Yana ci gaba da buɗe wani abu dabam, amma ba guda ɗaya ba inda suke rubutawa. Mun yanke shawarar cewa za mu ƙetare wannan matsala, kuma, a lokaci guda, mu ketare matsalar toshewa.

Yury Bushmelev "Taswirar rake a fagen tattarawa da isar da rajistan ayyukan" - kwafin rahoton

Rsyslog yana yin ayyukan da aka nuna akan faifan kuma aika rajistan ayyukan zuwa ko dai relay ko Kafka. Kafka yana bin tsohuwar hanya. Rayleigh - Na yi ƙoƙarin amfani da rsyslog mai tsabta don sadar da rajistan ayyukan. Ba tare da Queue Message ba, ta amfani da daidaitattun kayan aikin rsyslog. Ainihin, yana aiki.

Yury Bushmelev "Taswirar rake a fagen tattarawa da isar da rajistan ayyukan" - kwafin rahoton

Amma akwai nuances tare da yadda ake cusa su daga baya cikin wannan ɓangaren (Logstash/Graylog/ES). Ana amfani da wannan ɓangaren (rsyslog-rsyslog) tsakanin masu saka bayanai. Anan akwai hanyar haɗin tcp da aka matsa, wanda ke ba ku damar adana bandwidth kuma, don haka, ko ta yaya ƙara yuwuwar za mu sami wasu logs daga wata cibiyar bayanai lokacin da tashar ta cika. Domin muna da Indonesiya, inda komai ba shi da kyau. A nan ne matsalar ta ta'allaka.

Yury Bushmelev "Taswirar rake a fagen tattarawa da isar da rajistan ayyukan" - kwafin rahoton

Mun yi tunani game da yadda muke saka idanu a zahiri, da wane yuwuwar rajistan ayyukan da muka yi rikodin daga aikace-aikacen ya kai ƙarshen? Mun yanke shawarar fara awo. Rsyslog yana da nasa tsarin tarin ƙididdiga, wanda ke da wasu nau'ikan ƙididdiga. Misali, yana iya nuna maka girman layin, ko sakwannin nawa suka shigo don irin wannan aikin. Kuna iya ɗaukar wani abu daga gare su. Bugu da ƙari, yana da ƙididdiga na al'ada waɗanda za ku iya daidaita su, kuma zai nuna muku, misali, adadin saƙonnin da wasu API suka rubuta. Na gaba, na rubuta rsyslog_exporter a cikin Python, kuma mun aika duka zuwa Prometheus kuma muka yi makirci. Muna son ma'aunin Graylog da gaske, amma har yanzu ba mu sami lokacin saita su ba.

Yury Bushmelev "Taswirar rake a fagen tattarawa da isar da rajistan ayyukan" - kwafin rahoton

Menene matsalolin? Matsalar ta taso tare da gaskiyar cewa mun gano (KWATSA!) cewa APIs ɗin mu na Live suna rubuta saƙonni 50k a sakan daya. Wannan API ɗin Live ne kawai ba tare da tsarawa ba. Kuma Graylog kawai yana nuna mana saƙonni dubu 12 a sakan daya. Kuma tambaya mai ma'ana ta taso, ina ragowar? Daga abin da muka yanke shawarar cewa Graylog kawai ba zai iya jimre. Mun duba, kuma, hakika, Graylog tare da Elasticsearch bai mallaki wannan kwararar ba.

Bayan haka, wasu binciken da muka yi a hanya.

An toshe rubuce-rubuce zuwa soket. Ta yaya ya faru? Lokacin da na yi amfani da rsyslog don bayarwa, a wani lokaci mun karya tashar tsakanin cibiyoyin bayanai. Bayarwa ya tashi wuri guda, bayarwa ya tashi a wani wuri. Duk wannan ya sauko zuwa na'ura mai APIs wanda ke rubutawa zuwa soket na rsyslog. An yi layi. Sannan jerin gwanon rubuta zuwa soket ɗin unix ya cika, wanda ta tsohuwa shine fakiti 128. Kuma rubuta () na gaba a cikin tubalan aikace-aikacen. Lokacin da muka kalli ɗakin karatu da muke amfani da shi a aikace-aikacen Go, an rubuta a wurin cewa rubuta zuwa soket yana faruwa a yanayin rashin toshewa. Mun tabbata cewa babu abin da aka toshe. Domin mun karanta labarin game da Badushechkawanda ya rubuta game da shi. Amma akwai lokacin. Hakanan akwai madauki mara iyaka a kusa da wannan kiran, wanda a cikinsa ake ƙoƙarin tura saƙo a cikin soket. Ba mu lura da shi ba. Dole ne in sake rubuta ɗakin karatu. Tun daga wannan lokacin, ya canza sau da yawa, amma yanzu mun kawar da makullai a duk tsarin tsarin. Don haka, zaku iya dakatar da rsyslog kuma babu abin da zai faɗi.

Wajibi ne a saka idanu da girman layin, wanda ke taimakawa kada ku taka wannan rake. Na farko, za mu iya saka idanu lokacin da muka fara rasa saƙonni. Na biyu, za mu iya saka idanu cewa muna da matsaloli tare da bayarwa.

Kuma wani lokacin mara daɗi - haɓakawa ta sau 10 a cikin gine-ginen microservice yana da sauƙi. Ba mu da buƙatun masu shigowa da yawa, amma saboda jadawali wanda waɗannan saƙon ke ci gaba da tafiya, saboda bayanan shiga, a zahiri muna ƙara nauyi akan log ɗin da kusan sau goma. Abin takaici, ba ni da lokaci don ƙididdige ainihin lambobi, amma microservices sune abin da suke. Dole ne a kiyaye wannan a zuciya. Ya bayyana cewa a halin yanzu tsarin tarin log shine mafi kayatarwa a Lazada.

Yury Bushmelev "Taswirar rake a fagen tattarawa da isar da rajistan ayyukan" - kwafin rahoton

Yadda za a warware matsalar elasticsearch? Idan kuna buƙatar saurin samun rajistan ayyukan a wuri ɗaya, don kada ku gudu a kan duk injuna da tattara su a wurin, yi amfani da ajiyar fayil. Wannan yana da tabbacin yin aiki. Ana yin shi daga kowane uwar garken. Kawai kuna buƙatar manne faifai a wurin kuma sanya syslog. Bayan haka, an ba ku tabbacin samun duk rajistan ayyukan a wuri guda. Sa'an nan zai yiwu a sannu a hankali daidaita elasticsearch, graylog, ko wani abu dabam. Amma za ku riga kuna da duk rajistan ayyukan, kuma, haka ma, kuna iya adana su, gwargwadon yawan isassun faifai.

Yury Bushmelev "Taswirar rake a fagen tattarawa da isar da rajistan ayyukan" - kwafin rahoton

A lokacin rahotona, shirin ya fara kama da haka. A zahiri mun daina rubutawa zuwa fayil ɗin. Yanzu, mafi mahimmanci, za mu kashe ragowar. A kan injunan gida da ke gudanar da API, za mu daina rubutawa zuwa fayiloli. Na farko, akwai ajiyar fayil, wanda ke aiki sosai. Abu na biyu, waɗannan injina koyaushe suna ƙarewa da sarari, kuna buƙatar saka idanu akai-akai.

Wannan ɓangaren tare da Logstash da Graylog, yana haɓaka sosai. Don haka, kuna buƙatar kawar da shi. Dole ne ku zaɓi ɗaya.

Yury Bushmelev "Taswirar rake a fagen tattarawa da isar da rajistan ayyukan" - kwafin rahoton

Mun yanke shawarar sauke Logstash da Kibana. Domin muna da sashen tsaro. Menene haɗin? Haɗin kai shine Kibana ba tare da fakitin X ba kuma ba tare da Garkuwa ba ba ya ba ku damar bambance haƙƙin shiga cikin rajistan ayyukan. Saboda haka, sun dauki Graylog. Yana da shi duka. Ba na son shi, amma yana aiki. Mun sayi sabon kayan aiki, mun shigar da sabon Graylog a wurin, kuma mun matsar da duk rajistan ayyukan tare da tsayayyen tsari zuwa Greylog na daban. Mun warware matsalar tare da nau'ikan fage iri ɗaya a tsari.

Yury Bushmelev "Taswirar rake a fagen tattarawa da isar da rajistan ayyukan" - kwafin rahoton

Menene ainihin abin da aka haɗa a cikin sabon Graylog. Mun rubuta komai a cikin docker. Mun dauki gungun sabobin, muka fitar da misalin Kafka guda uku, 7 Sabar Graylog 2.3 (saboda ina son sigar Elasticsearch 5). Duk wannan an taso ne akan hare-hare daga HDD. Mun ga adadin ƙididdigewa har zuwa saƙonni dubu 100 a cikin daƙiƙa guda. Mun ga adadi cewa terabytes 140 na bayanai a kowane mako.

Yury Bushmelev "Taswirar rake a fagen tattarawa da isar da rajistan ayyukan" - kwafin rahoton

Kuma a sake rake! Muna da tallace-tallace guda biyu suna zuwa. Mun wuce fiye da miliyan 6 posts. Mu Graylog ba mu da lokacin tauna. Ko ta yaya dole ne ka sake tsira.

Yury Bushmelev "Taswirar rake a fagen tattarawa da isar da rajistan ayyukan" - kwafin rahoton

Haka muka tsira. An ƙara wasu ƴan sabobin da SSDs. A halin yanzu muna rayuwa haka. Yanzu muna tauna saƙonnin 160k a sakan daya. Ba mu kai ga iyaka ba tukuna, don haka ba a san ko nawa za mu iya fita daga ciki ba.

Yury Bushmelev "Taswirar rake a fagen tattarawa da isar da rajistan ayyukan" - kwafin rahoton

Waɗannan su ne tsare-tsarenmu na gaba. Daga cikin waɗannan, da gaske, mafi mahimmanci shine yiwuwar samuwa mai yawa. Ba mu da shi tukuna. Haka kuma an kafa motoci da dama, amma ya zuwa yanzu komai na tafiya ta mota daya. Wajibi ne a kashe lokaci don saita rashin nasara a tsakaninsu.

Tattara ma'auni daga Graylog.

Yi iyakar ƙimar don mu sami API mahaukaci guda ɗaya wanda baya kashe mu bandwidth da komai.

Kuma a ƙarshe, sanya hannu kan wani nau'in SLA tare da masu haɓakawa don mu iya yin hidima da yawa. Idan kun kara rubutawa, to kuyi hakuri.

Kuma rubuta takardu.

Yury Bushmelev "Taswirar rake a fagen tattarawa da isar da rajistan ayyukan" - kwafin rahoton

A taƙaice, sakamakon duk abin da muka samu. Na farko, ma'auni. Na biyu, syslog shine cake. Na uku, rsyslog yana aiki daidai kamar yadda aka rubuta akan faifan. Kuma bari mu je ga tambayoyi.

Tambayoyi.

Tambayarku: Me ya sa suka yanke shawarar kin ɗauka ... (filebeat?)

Amsa: Bukatar rubuta zuwa fayil. Gaskiya ban so ba. Lokacin da API ɗinku ke rubuta dubunnan saƙonni a cikin daƙiƙa guda, ko da kuna juyawa sau ɗaya a sa'a, wannan har yanzu ba zaɓi bane. Kuna iya rubuta zuwa bututu. Abin da masu haɓakawa suka tambaye ni: "Me zai faru idan tsarin da muke rubutawa ya faɗi"? Sai kawai na rasa abin da zan ba su, na ce: "To, ok, kada mu yi haka."

Tambayarku: Me ya sa ba za ku rubuta rajistan ayyukan zuwa HDFS ba?

AmsaA: Wannan shine mataki na gaba. Tun da farko mun yi tunani game da shi, amma da yake babu albarkatun da za mu magance shi a halin yanzu, ya rataya a kan mafitarmu na dogon lokaci.

Tambayarku: Tsarin shafi zai zama mafi dacewa.

Amsa: Na gane. Muna "don" da hannu biyu.

Tambayarku: Ka rubuta zuwa rsyslog. Dukansu TCP da UDP suna can. Amma idan UDP, to ta yaya kuke garantin bayarwa?

AmsaA: Akwai maki biyu. Na farko, nan da nan na gaya wa kowa cewa ba mu da garantin isar da katako. Domin lokacin da masu haɓakawa suka zo suka ce: "Bari mu fara rubuta bayanan kuɗi a can, kuma za ku sanya mana wani wuri idan wani abu ya faru," mun amsa musu, "Mai girma! Bari mu fara toshewa akan rubutawa zuwa soket, kuma muyi shi a cikin ma'amaloli, domin ku sami tabbacin sanya shi a cikin soket ɗin mu kuma ku tabbata cewa mun karɓi shi daga ɗayan ɓangaren. Kuma a wannan lokacin, kowa da kowa ya zama ba dole ba. Idan kuma ba haka ba, to wadanne tambayoyi muke da su? Idan baku son bada garantin rubutawa zuwa soket, me yasa zamu bada garantin bayarwa? Muna yin ƙoƙari mafi kyau. Muna ƙoƙari da gaske don isar da iyawa gwargwadon iko kuma gwargwadon iyawa, amma ba mu ba da garantin 100% ba. Don haka, ba kwa buƙatar rubuta bayanan kuɗi a wurin. Akwai bayanan ma'amala don wannan.

Tambayarku: Lokacin da API ya haifar da wasu saƙo zuwa log ɗin kuma yana canja wurin sarrafawa zuwa microservices, shin kun ci karo da matsalar cewa saƙonni daga microservices daban-daban suna zuwa cikin tsari mara kyau? Saboda wannan, rudani yana tasowa.

AmsaA: Yana da al'ada cewa sun zo cikin wani tsari daban. Dole ne ku kasance cikin shiri don wannan. Domin duk isar da hanyar sadarwa baya bada garantin oda gare ku, ko kuna buƙatar kashe albarkatu na musamman akan wannan. Idan muka ɗauki ma'ajiyar fayiloli, to kowane API yana adana rajistan ayyukan zuwa nasa fayil. Maimakon haka, rsyslog yana jujjuya su zuwa kundin adireshi a can. Kowane API yana da nasa rajistan ayyukan a can, inda za ka iya zuwa duba, sa'an nan za ka iya kwatanta su da timestamp a cikin wannan log. Idan sun je duba a cikin Graylog, to a can za a jera su ta timestamp. Komai zai yi kyau a can.

Tambayarku: Tambarin lokaci na iya bambanta da milli seconds.

Amsa: API ɗin kanta ne ke samar da tambarin lokaci. Wannan, a gaskiya, shi ne gaba ɗaya batu. Muna da NTP. API ɗin yana haifar da tambarin lokaci riga a cikin saƙon kanta. Ba a ƙara ta rsyslog ba.

Tambayarku: Mu'amala tsakanin cibiyoyin bayanai ba ta bayyana sosai ba. A cikin tsarin cibiyar bayanai, ya bayyana a sarari yadda aka tattara da sarrafa rajistan ayyukan. Yaya hulɗa tsakanin cibiyoyin bayanai? Ko kuwa kowace cibiyar bayanai tana gudanar da rayuwarta?

Amsa: Kusan. Muna da kowace ƙasa tana cikin cibiyar bayanai ɗaya. A halin yanzu ba mu da yadawa, don haka an sanya ƙasa ɗaya a cikin cibiyoyin bayanai daban-daban. Don haka, babu buƙatar haɗa su. A cikin kowace cibiya akwai Log Relay. Wannan sabar Rsyslog ce. A zahiri, injin sarrafa guda biyu. Haka aka kafa su. Amma a yanzu, zirga-zirgar ababen hawa ke bi ta ɗaya daga cikinsu. Ta tattara komai a hade. Yana da layin diski kawai idan akwai. Ta danna gungumen azaba ta aika da su zuwa cibiyar tattara bayanai ta tsakiya (Singapore), inda a nan an riga an saka su guba a Graylog. Kuma kowace cibiyar bayanai tana da nata ma'ajiyar fayil. Idan muka rasa haɗin gwiwa, muna da duk rajistan ayyukan a can. Za su tsaya a can. Za a adana su a can.

Tambayarku: Kuna samun rajistan ayyukan daga can yayin yanayi mara kyau?

Amsa: Kuna iya zuwa can (zuwa wurin ajiyar fayil) ku duba.

Tambayarku: Ta yaya kuke saka idanu cewa ba ku rasa gundumomi?

Amsa: A gaskiya muna rasa su, kuma muna sa ido. An fara sa ido wata daya da ya wuce. Laburaren da Go APIs ke amfani da shi yana da ma'auni. Za ta iya ƙirga sau nawa ta kasa rubuta wa soket. A halin yanzu akwai wani m heuristic. Akwai ma'auni a wurin. Yana ƙoƙarin rubuta saƙo daga gare ta zuwa soket. Idan buffer ya cika, yana fara sauke su. Kuma ya kirga nawa ya jefar da su. Idan ma'ajin sun fara malalowa a wurin, za mu san game da shi. Yanzu kuma suna zuwa prometheus, kuma kuna iya ganin hotuna a Grafana. Kuna iya saita faɗakarwa. Sai dai har yanzu ba a bayyana wanda zai aike su ba.

Tambayarku: A cikin elasticsearch, kuna adana rajistan ayyukan tare da sakewa. Kwafi nawa kuke da su?

Amsa: Kwafi ɗaya.

Tambayarku: Layi daya ne kawai?

Amsa: Wannan shi ne babban kuma kwafi. Ana adana bayanan a cikin kwafi.

Tambayarku: Shin kun tweak girman rsyslog buffer ko ta yaya?

Amsa: Muna rubuta bayanaigrams zuwa kwas ɗin unix na al'ada. Wannan nan da nan yana sanya iyakancewar kilobytes 128 akan mu. Ba za mu iya ƙara rubutu a ciki ba. Mun rubuta wannan a cikin ma'auni. Wanda yake so ya shiga cikin ajiya, sun rubuta 128 kilobytes. Dakunan karatu, haka kuma, yanke, a sanya tuta cewa an yanke sakon. Muna da filin na musamman a cikin ma'auni na sakon da kansa, wanda ke nuna ko an yanke shi yayin rikodin ko a'a. Don haka muna da damar yin bibiyar wannan lokacin.

Tambaya: Kuna rubuta karya JSON?

Amsa: Broken JSON za a jefar da shi ko dai a lokacin relay saboda fakitin ya yi girma sosai. Ko kuma za a jefar da Graylog, saboda ba zai iya tantance JSON ba. Amma akwai nuances a nan waɗanda ke buƙatar gyarawa, kuma galibi an haɗa su da rsyslog. Na riga na cika wasu 'yan batutuwa a can, waɗanda har yanzu suna buƙatar aiki a kansu.

Tambaya: Me yasa Kafka? Shin kun gwada RabbitMQ? Graylog baya ƙarawa a ƙarƙashin irin waɗannan nauyin?

Amsa: Ba ya aiki tare da Graylog. Kuma Graylog yana samun tsari. Gaskiya yana da matsala gare shi. Yana wani irin abu. Kuma, a gaskiya, ba a buƙata ba. Na fi so in rubuta daga rsyslog kai tsaye zuwa elasticsearch sannan in kalli Kibana. Amma muna bukatar mu sasanta lamarin da jami’an tsaro. Wannan shine yuwuwar bambance-bambancen ci gaban mu lokacin da muka jefar da Graylog kuma muka yi amfani da Kibana. Logstash ba zai yi ma'ana ba. Domin zan iya yin haka tare da rsyslog. Kuma yana da tsarin da za a rubuta zuwa elasticsearch. Tare da Graylog muna ƙoƙarin rayuwa ko ta yaya. Mun ma tweaked shi kadan. Amma har yanzu akwai sauran damar ingantawa.

About Kafka. Haka abin ya faru a tarihi. Lokacin da na isa, ya riga ya kasance, kuma an riga an rubuta masa katako. Mun ɗaga gungu ɗin mu muka matsa gungume a ciki. Muna sarrafa shi, mun san yadda yake ji. Amma RabbitMQ... muna samun matsala da RabbitMQ. Kuma RabbitMQ yana haɓaka mana. Muna da shi a cikin samarwa, kuma akwai matsaloli tare da shi. Yanzu, kafin a sayar da shi, za a shamantar da shi, kuma zai fara aiki kullum. Amma kafin wannan, ban kasance a shirye in sake shi zuwa samarwa ba. Akwai ƙarin batu. Graylog na iya karanta sigar AMQP 0.9 kuma rsyslog na iya rubuta sigar AMQP 1.0. Kuma babu wata mafita da za ta iya yin duka a tsakiya. Akwai ko dai daya ko daya. Don haka a yanzu kawai Kafka. Amma akwai kuma nuances. Domin omkafka na nau'in rsyslog da muke amfani da shi na iya rasa duk buffer ɗin saƙon da ya tattara daga rsyslog. Matukar mun hakura da shi.

Tambaya: Kuna amfani da Kafka saboda kuna da shi? Ba a amfani da shi don wani dalili?

Amsa: Kafka, wanda ƙungiyar Kimiyyar Bayanai ta yi amfani da ita. Wannan aiki ne daban-daban, game da abin da ni, da rashin alheri, ba zan iya cewa komai ba. Ban sani Ba. Tawagar Data Science ce ta tafiyar da ita. Lokacin da katako ya fara, sun yanke shawarar yin amfani da shi, don kada su sanya nasu. Yanzu mun sabunta Graylog, kuma mun rasa daidaituwa, saboda akwai tsohuwar sigar Kafka. Dole ne mu yi namu. A lokaci guda, mun kawar da waɗannan batutuwa guda huɗu don kowane API. Mun yi saman fadi guda ɗaya don kowa da kowa, saman fadi ɗaya mai faɗi don duk shirye-shiryen kuma muna harbi komai a wurin. Graylog yana fitar da wannan duka a layi daya.

Tambaya: Me yasa muke buƙatar wannan shamanism tare da kwasfa? Shin kun gwada amfani da direban log ɗin syslog don kwantena.

Amsa: A lokacin da muka yi wannan tambayar, muna da dangantaka mai tsanani da docker. Ya kasance docker 1.0 ko 0.9. Docker kanta abin mamaki ne. Abu na biyu, idan kai ma ka tura rajistan ayyukan a ciki ... Ina da wani zato wanda ba a tabbatar da shi ba cewa yana wuce duk rajistan ayyukan ta kanta, ta hanyar docker daemon. Idan muna da API guda ɗaya da ke hauka, to sauran API ɗin za su shiga cikin gaskiyar cewa ba za su iya aika stdout da stderr ba. Ban san inda wannan zai kai ga ba. Ina da tuhuma a matakin jin cewa ba lallai ba ne a yi amfani da direban syslog na docker a wannan wuri. Sashen gwajin aikin mu yana da gungu na Graylog tare da gundumomi. Suna amfani da direbobin log ɗin docker kuma komai yana da kyau a wurin. Amma nan da nan suka rubuta GELF zuwa Graylog. A lokacin da muka fara duk wannan, muna buƙatar shi don yin aiki kawai. Wataƙila daga baya, sa’ad da wani ya zo ya ce ya yi shekara ɗari yana aiki kullum, za mu gwada.

Tambaya: Kuna isar da tsakanin cibiyoyin bayanai ta amfani da rsyslog. Me yasa ba akan Kafka ba?

Amsa: Muna yin wannan, kuma ga yadda abin yake. Don dalilai guda biyu. Idan tashar ta mutu kwata-kwata, to, duk log ɗinmu, ko da a cikin nau'i mai matsewa, ba za su hau ta cikinsa ba. Kuma kafka yana ba su damar rasa kawai a cikin tsari. Ta wannan hanyar, muna kawar da mannewar waɗannan katako. Muna amfani da Kafka kawai a cikin wannan harka kai tsaye. Idan muna da tashar mai kyau kuma muna so mu kyauta, to muna amfani da rsyslog na su. Amma a zahiri, zaku iya saita shi don ya faɗi abin da bai samu ba. A halin yanzu muna amfani da isar da rsyslog kai tsaye a wani wuri, wani wuri Kafka.

source: www.habr.com

Add a comment