Yury Bushmelev "Jeyografik nan yon rato nan jaden an nan kolekte ak livrezon mòso bwa" - transkripsyon rapò a

Jounal yo se yon pati enpòtan nan sistèm nan, ki pèmèt ou konprann ke li travay (oswa pa travay) jan yo espere. Anba kondisyon yo nan achitekti mikwosèvis, travay ak mòso bwa vin tounen yon disiplin separe nan Olympiad Espesyal la. Gen anpil pwoblèm ki bezwen adrese:

  • ki jan yo ekri mòso bwa nan aplikasyon an;
  • ki kote yo ekri mòso bwa;
  • ki jan yo delivre mòso bwa pou depo ak pwosesis;
  • ki jan yo trete ak estoke mòso bwa.

Itilizasyon teknoloji containerizasyon ki popilè kounye a ajoute sab sou rato a nan domèn opsyon pou rezoud pwoblèm.

Jis sou sa a se transkripsyon an nan rapò a pa Yuri Bushmelev "Kat nan yon rato nan jaden an nan kolekte ak livrezon mòso bwa"

Ki moun ki pran swen, tanpri anba chat la.

Non mwen se Yuri Bushmelev. Mwen travay pou Lazada. Jodi a mwen pral pale sou ki jan nou te fè mòso bwa nou yo, ki jan nou kolekte yo, ak sa nou ekri la.

Yury Bushmelev "Jeyografik nan yon rato nan jaden an nan kolekte ak livrezon mòso bwa" - transkripsyon rapò a

Ki kote nou soti? Kiyès nou ye? Lazada se #1 an detay sou entènèt nan sis peyi nan Azi Sidès. Tout peyi sa yo distribye pami sant done yo. Kounye a gen 4 sant done an total.Poukisa sa enpòtan? Paske kèk desizyon yo te akòz lefèt ke gen yon lyen trè fèb ant sant yo. Nou gen yon achitekti microservice. Mwen te sezi jwenn ke nou deja gen 80 mikwosèvis. Lè m 'te kòmanse travay la ak mòso bwa, te gen sèlman nan yo 20. Anplis de sa, gen yon moso olye gwo nan PHP eritaj, ki mwen menm mwen dwe viv ak ak sipòte. Tout bagay sa yo jenere pou nou nan moman sa a plis pase 6 milyon mesaj pa minit pou sistèm nan antye. Pli lwen, mwen pral montre ki jan nou ap eseye viv ak sa a, ak poukisa sa a se konsa.

Yury Bushmelev "Jeyografik nan yon rato nan jaden an nan kolekte ak livrezon mòso bwa" - transkripsyon rapò a

Ou dwe viv ak 6 milyon mesaj sa yo yon jan kanmenm. Kisa nou ta dwe fè ak yo? 6 milyon mesaj bezwen:

  • voye soti nan app
  • aksepte pou livrezon
  • delivre pou analiz ak depo.
  • analize
  • magazen yon jan kanmenm.

Yury Bushmelev "Jeyografik nan yon rato nan jaden an nan kolekte ak livrezon mòso bwa" - transkripsyon rapò a

Lè te gen twa milyon mesaj, mwen te gen apeprè menm gade. Paske nou te kòmanse ak kèk peni. Li klè ke mòso bwa aplikasyon yo ekri la. Pou egzanp, pa t 'kapab konekte nan baz done a, te kapab konekte nan baz done a, men li pa t' kapab li yon bagay. Men, anplis sa a, chak nan mikwosèvis nou yo ekri tou yon boutèy demi lit aksè. Chak demann ki rive nan mikrosèvis la tonbe nan boutèy demi lit la. Poukisa nap fè sa? Devlopè vle pou kapab trase. Chak boutèy demi lit aksè gen jaden an traceid, dapre ki yon koòdone espesyal Lè sa a, detant chèn nan tout antye ak trè byen montre tras la. Tras la montre ki jan demann lan te ale, e sa ede devlopè nou yo fè fas ak nenpòt fatra enkoni pi vit.

Yury Bushmelev "Jeyografik nan yon rato nan jaden an nan kolekte ak livrezon mòso bwa" - transkripsyon rapò a

Ki jan yo viv ak li? Koulye a, mwen pral yon ti tan dekri jaden an nan opsyon - ki jan pwoblèm sa a jeneralman rezoud. Ki jan yo rezoud pwoblèm nan nan kolekte, transfere ak estoke mòso bwa.

Yury Bushmelev "Jeyografik nan yon rato nan jaden an nan kolekte ak livrezon mòso bwa" - transkripsyon rapò a

Ki jan yo ekri nan aplikasyon an? Li klè ke gen diferan fason. An patikilye, gen pi bon pratik, jan kanmarad alamòd di nou. Gen de kalite ansyen lekòl, jan granpapa te di. Gen lòt fason.

Yury Bushmelev "Jeyografik nan yon rato nan jaden an nan kolekte ak livrezon mòso bwa" - transkripsyon rapò a

Sitiyasyon an ak kolekte mòso bwa se apeprè menm. Pa gen anpil opsyon pou rezoud pati patikilye sa a. Gen plis nan yo deja, men pa tèlman anpil ankò.

Yury Bushmelev "Jeyografik nan yon rato nan jaden an nan kolekte ak livrezon mòso bwa" - transkripsyon rapò a

Men, ak livrezon ak analiz ki vin apre, kantite varyasyon kòmanse eksploze. Mwen pa pral dekri chak opsyon kounye a. Mwen panse ke opsyon prensipal yo byen konnen tout moun ki te enterese nan sijè a.

Yury Bushmelev "Jeyografik nan yon rato nan jaden an nan kolekte ak livrezon mòso bwa" - transkripsyon rapò a

Mwen pral montre w kouman nou te fè l nan Lazada ak ki jan tout bagay te kòmanse.

Yury Bushmelev "Jeyografik nan yon rato nan jaden an nan kolekte ak livrezon mòso bwa" - transkripsyon rapò a

Sa gen yon ane, mwen te vini nan Lazada epi yo te voye nan pwojè boutèy la. Se te konsa la. Yo te ekri jounal ki soti nan aplikasyon an nan stdout ak stderr. Tout bagay te fèt nan yon fason alamòd. Men, Lè sa a, devlopè yo jete l 'soti nan kouran yo estanda, ak Lè sa a, espesyalis enfrastrikti pral kalkile li soti yon jan kanmenm. Ant espesyalis enfrastrikti ak devlopè, gen tou deblozay ki te di: "uh ... byen, ann jis vlope yo nan yon dosye ak yon kokiy, epi li se li." Epi kòm tout bagay sa yo se nan yon veso, yo vlope l 'dwat nan veso a li menm, te trase anyè a andedan epi yo mete l' la. Mwen panse ke li trè evidan pou tout moun sa ki te pase.

Yury Bushmelev "Jeyografik nan yon rato nan jaden an nan kolekte ak livrezon mòso bwa" - transkripsyon rapò a

Ann gade yon ti kras pi lwen. Ki jan nou te delivre mòso bwa sa yo. Yon moun te chwazi td-agent, ki aktyèlman fluentd men pa byen fluentd. Mwen toujou pa konprann relasyon de pwojè sa yo, men yo sanble se sou menm bagay la. Ak sa a fluentd, ekri nan Ruby, li dosye log, analize yo nan JSON lè l sèvi avèk kèk ekspresyon regilye. Apre sa, yo te voye Kafka. Anplis, nan Kafka, nou te gen 4 sijè separe pou chak API. Poukisa 4? Paske gen live, gen staging, e paske gen stdout ak stderr. Devlopè yo pwodui yo, epi travayè enfrastrikti yo dwe kreye yo nan Kafka. Anplis, Kafka te kontwole pa yon lòt depatman. Se poutèt sa, li te nesesè yo kreye yon tikè pou yo te kreye 4 sijè la pou chak api. Tout moun te bliye li. An jeneral, se te fatra ak fatra.

Yury Bushmelev "Jeyografik nan yon rato nan jaden an nan kolekte ak livrezon mòso bwa" - transkripsyon rapò a

Kisa nou te fè apre sa? Nou voye l bay kafka. Pi lwen soti nan Kafka, mwatye nan mòso bwa yo te vole Logstash. Lòt mwatye mòso bwa yo te pataje. Gen kèk ki te pran vòl nan yon sèl Graylog, kèk nan yon lòt Graylog. Kòm yon rezilta, tout bagay sa yo te vole nan yon sèl gwoup Elasticsearch. Sa se, tout dezòd sa a te tonbe nan fen a la. Ou pa bezwen fè sa!

Yury Bushmelev "Jeyografik nan yon rato nan jaden an nan kolekte ak livrezon mòso bwa" - transkripsyon rapò a

Sa a se sa li sanble lè yo wè soti nan pi wo a. Ou pa bezwen fè sa! Isit la, zòn pwoblèm yo imedyatman make ak nimewo. Gen aktyèlman plis nan yo, men 6 yo se reyèlman pwoblèm, ak ki yon bagay bezwen fè. Mwen pral pale sou yo separeman kounye a.

Yury Bushmelev "Jeyografik nan yon rato nan jaden an nan kolekte ak livrezon mòso bwa" - transkripsyon rapò a

Isit la (1,2,3) nou ekri fichye, epi, kòmsadwa, gen twa rato isit la nan yon fwa.

Premye a (1) se ke nou bezwen ekri yo yon kote. Li pa toujou dezirab bay yon API kapasite pou ekri dirèkteman nan yon dosye. Li dezirab ke API a izole nan yon veso, e menm pi bon, ke li se sèlman lekti. Mwen se yon administratè sistèm, kidonk mwen gen yon ti kras altènatif wè bagay sa yo.

Dezyèm pwen (2,3) se ke nou gen anpil demann ki vini nan API a. API a ekri anpil done nan yon dosye. Dosye yo ap grandi. Nou bezwen vire yo. Paske sinon ou p ap ka sove okenn disk la. Wotasyon yo se move paske yo redireksyon atravè koki a nan yon anyè. Pa gen okenn fason nou ka vire l. Ou pa ka di aplikasyon an pou relouvri manch yo. Paske devlopè yo pral gade ou tankou yon moun sòt: "Ki deskriptè? Nou jeneralman ekri stdout. Kad yo te fè copytruncate nan logrotate, ki jis fè yon kopi dosye a ak kalson orijinal la. An konsekans, ant pwosesis kopi sa yo, espas ki gen kapasite anjeneral fini.

(4) Nou te gen diferan fòma nan diferan API. Yo te yon ti kras diferan, men regexp te dwe ekri yon fason diferan. Depi li te tout jere pa Puppet, te gen yon gwo pakèt klas ak pwòp ravèt yo. Anplis de sa, td-agent pi fò nan tan an te kapab manje memwa, dwe sòt, li te ka jis pretann ke li te travay epi pa fè anyen. Deyò, li te enposib konprann ke li pa t 'fè anyen. Nan pi bon, li pral tonbe, epi yon moun pral ranmase l pita. Plis jisteman, yon alèt pral vole nan, epi yon moun pral ale ak leve li ak men yo.

Yury Bushmelev "Jeyografik nan yon rato nan jaden an nan kolekte ak livrezon mòso bwa" - transkripsyon rapò a

(6) Ak pi fatra a ak fatra - li te elastiksearch. Paske se te yon ansyen vèsyon. Paske nou pa t gen mèt devwe nan epòk sa a. Nou te gen mòso bwa etewojèn ki gen jaden yo te kapab sipèpoze. Diferan mòso bwa aplikasyon diferan ta ka ekri ak non jaden yo menm, men an menm tan an ta ka gen diferan done andedan. Sa vle di, yon sèl boutèy demi lit vini ak yon nonb antye relatif nan yon jaden, pou egzanp, nivo. Yon lòt boutèy demi lit vini ak yon chaîne nan jaden nivo. Nan absans la nan kat estatik, tankou yon bèl bagay vire soti. Si, apre wotasyon endèks, yon mesaj ak yon fisèl te rive an premye nan elasticsearch, lè sa a nou viv nòmalman. Men, si premye a te rive ak Integer, Lè sa a, tout mesaj ki vin apre ki te rive ak String yo tou senpleman jete. Paske kalite jaden an pa matche.

Yury Bushmelev "Jeyografik nan yon rato nan jaden an nan kolekte ak livrezon mòso bwa" - transkripsyon rapò a

Nou te kòmanse poze kesyon sa yo. Nou deside pa chache koupab.

Yury Bushmelev "Jeyografik nan yon rato nan jaden an nan kolekte ak livrezon mòso bwa" - transkripsyon rapò a

Men, yon bagay bezwen fè! Bagay la evidan se ke nou bezwen etabli estanda. Nou te deja gen kèk estanda. Gen kèk nou te pote yon ti kras pita. Erezman, yon sèl fòma boutèy demi lit pou tout API yo te deja apwouve nan moman sa a. Li ekri dirèkteman nan estanda entèraksyon sèvis yo. An konsekans, moun ki vle resevwa mòso bwa yo ta dwe ekri yo nan fòma sa a. Si yon moun pa ekri mòso bwa nan fòma sa a, Lè sa a, nou pa garanti anyen.

Pli lwen, mwen ta renmen gen yon sèl estanda pou metòd yo nan anrejistreman, livrezon ak kolekte mòso bwa. Aktyèlman, ki kote yo ekri yo, ak ki jan yo delivre yo. Sitiyasyon ideyal la se lè pwojè yo itilize menm bibliyotèk la. Gen yon bibliyotèk separe pou Go, gen yon bibliyotèk separe pou PHP. Tout moun nou genyen, tout moun ta dwe itilize yo. Pou lemoman, mon ti dir ki nou pe reisi par 80 poursan. Men, gen kèk kontinye manje kakti.

Epi gen (sou glisad la) "SLA pou livrezon boutèy demi lit" apèn kòmanse parèt. Li poko la, men nou ap travay sou li. Paske li trè pratik lè infra di ke si ou ekri nan tèl ak tèl fòma nan tèl ak tèl yon kote ak pa plis pase N mesaj pa segonn, Lè sa a, nou pral gen plis chans delivre li la. Li retire anpil tèt fè mal. Si gen yon SLA, Lè sa a, li jis gwo!

Yury Bushmelev "Jeyografik nan yon rato nan jaden an nan kolekte ak livrezon mòso bwa" - transkripsyon rapò a

Ki jan nou te kòmanse rezoud pwoblèm nan? Rate prensipal la te ak td-agent. Li pa t klè ki kote mòso bwa nou yo ale. Èske yo delivre? Èske yo prale? Ki kote yo ye kanmenm? Se poutèt sa, li te deside ranplase td-agent ak premye atik la. Opsyon pou sa pou ranplase li ak, mwen yon ti tan dekri isit la.

Fluentd. Premyèman, mwen te rankontre l 'nan yon travay anvan, epi li tou detanzantan tonbe la. Dezyèmman, sa a se menm bagay la, sèlman nan pwofil.

filebeat. Ki jan li te bon pou nou? Lefèt ke li se nan Go, epi nou gen yon gwo ekspètiz nan Go. An konsekans, si anyen, nou ta ka yon jan kanmenm ajoute li nan tèt nou. Se poutèt sa nou pa t pran li. Se konsa ke pa ta menm gen okenn tantasyon yo kòmanse reekri li pou tèt ou.

Solisyon evidan pou sysadmin se tout kalite syslog nan kantite sa a (syslog-ng/rsyslog/nxlog).

Oswa ekri yon bagay pwòp ou a, men nou jete li, osi byen ke filebeat. Si w ekri yon bagay, li pi bon pou w ekri yon bagay itil pou biznis. Pou delivre mòso bwa, li pi bon pou pran yon bagay ki pare.

Se poutèt sa, chwa a aktyèlman te desann nan yon chwa ant syslog-ng ak rsyslog. Mwen te apiye nan direksyon rsyslog tou senpleman paske nou te deja gen klas pou rsyslog nan Puppet, epi mwen pa t 'jwenn yon diferans evidan ant yo. Ki sa ki syslog, ki sa ki syslog. Wi, gen kèk dokiman ki pi mal, gen kèk ki pi bon. Li konnen fason sa a, epi li fè li yon fason diferan.

Yury Bushmelev "Jeyografik nan yon rato nan jaden an nan kolekte ak livrezon mòso bwa" - transkripsyon rapò a

Ak yon ti kras sou rsyslog. Premyèman, li fre paske li gen yon anpil nan modil. Li gen yon RainerScript lizib pou moun (langaj konfigirasyon modèn). Yon bonis awizom se ke nou ta ka imite konpòtman an nan td-agent ak zouti estanda li yo, e pa gen anyen ki chanje pou aplikasyon yo. Sa vle di, nou chanje td-agent an rsyslog, epi nou pa manyen tout lòt bagay ankò. Epi imedyatman nou jwenn yon livrezon k ap travay. Apre sa, mmnormalize se bagay ki fre sou rsyslog. Li pèmèt ou analize mòso bwa, men se pa ak Grok ak regexp. Li fè yon pyebwa sentaks abstrè. Li analize mòso bwa nan menm jan an ke yon konpilateur analize sous yo. Sa a pèmèt ou travay trè vit, manje ti CPU, epi, an jeneral, li se jis yon bagay trè fre. Gen yon pakèt lòt bonis. Mwen p'ap rete sou yo.

Yury Bushmelev "Jeyografik nan yon rato nan jaden an nan kolekte ak livrezon mòso bwa" - transkripsyon rapò a

rsyslog gen anpil lòt dezavantaj. Yo apeprè menm jan ak bonis. Pwoblèm prensipal yo se ke ou bezwen konnen ki jan yo kwit li, epi ou bezwen chwazi vèsyon an.

Yury Bushmelev "Jeyografik nan yon rato nan jaden an nan kolekte ak livrezon mòso bwa" - transkripsyon rapò a

Nou te deside ke nou ta ekri mòso bwa nan yon priz Unix. Epi yo pa nan /dev/log, paske gen nou gen yon dezòd nan mòso bwa sistèm, gen journald nan tiyo sa a. Se konsa, ann ekri nan yon priz koutim. Nou pral tache li nan yon règ separe. Ann pa entèfere ak anyen. Tout bagay pral transparan ak konprann. Se konsa, nou aktyèlman te fè. Anyè a ki gen sipò sa yo estanda epi voye bay tout resipyan yo. Kontenè yo ka wè priz yo bezwen an, louvri epi ekri li.

Poukisa pa yon dosye? Paske tout moun te li atik sou Badushechka, ki te eseye voye fichye a nan Docker, epi li te jwenn ke apre rekòmanse rsyslog, deskriptè a fichye chanje, ak Docker pèdi dosye sa a. Li kenbe yon lòt bagay louvri, men se pa menm priz kote yo ekri a. Nou te deside ke nou ta kontoune pwoblèm sa a, epi, an menm tan, kontoune pwoblèm nan bloke.

Yury Bushmelev "Jeyografik nan yon rato nan jaden an nan kolekte ak livrezon mòso bwa" - transkripsyon rapò a

Rsyslog fè aksyon ki endike sou glisad la epi li voye mòso bwa nan swa relè oswa Kafka. Kafka swiv ansyen chemen an. Rayleigh - Mwen te eseye sèvi ak pi bon kalite rsyslog pou delivre mòso bwa. San keu mesaj, lè l sèvi avèk zouti estanda rsyslog. Fondamantalman, li travay.

Yury Bushmelev "Jeyografik nan yon rato nan jaden an nan kolekte ak livrezon mòso bwa" - transkripsyon rapò a

Men, gen nuans ak ki jan yo mete yo pita nan pati sa a (Logstash / Graylog / ES). Pati sa a (rsyslog-rsyslog) yo itilize ant datacenters. Isit la se yon lyen tcp konprese, ki pèmèt ou sove Pleasant epi, kòmsadwa, yon jan kanmenm ogmante chans pou nou pral resevwa kèk mòso bwa ki soti nan yon lòt sant done lè kanal la plen. Paske nou gen Endonezi, kote tout bagay se move. Se la pwoblèm konstan an chita.

Yury Bushmelev "Jeyografik nan yon rato nan jaden an nan kolekte ak livrezon mòso bwa" - transkripsyon rapò a

Nou te panse sou fason nou aktyèlman kontwole, ak ki pwobabilite mòso bwa ke nou anrejistre nan aplikasyon an rive nan fen sa a? Nou deside kòmanse metrik. Rsyslog gen pwòp modil koleksyon estatistik li yo, ki gen kèk kalite kontè. Pou egzanp, li ka montre w gwosè keu la, oswa konbyen mesaj ki te vini pou yon aksyon konsa. Ou ka deja pran yon bagay nan men yo. Anplis de sa, li gen kontwa koutim ke ou ka configured, epi li pral montre w, pou egzanp, kantite mesaj ke kèk API te anrejistre. Apre sa, mwen te ekri rsyslog_exporter nan Python, epi nou te voye tout bagay bay Prometheus ak trase. Nou te reyèlman vle mezi Graylog, men jiskaprezan nou pa te gen tan mete yo kanpe.

Yury Bushmelev "Jeyografik nan yon rato nan jaden an nan kolekte ak livrezon mòso bwa" - transkripsyon rapò a

Ki pwoblèm yo ye? Pwoblèm nan te parèt ak lefèt ke nou te jwenn (SUDDEN!) ke API Live nou yo ekri 50k mesaj pou chak segonn. Sa a se sèlman Live API san sèn. Epi Graylog sèlman montre nou 12 mil mesaj pa segonn. Ak yon kesyon rezonab te leve, kote rès yo? Soti nan ki nou konkli ke Graylog tou senpleman pa ka fè fas. Nou te gade, epi, tout bon, Graylog ak Elasticsearch pa t metrize koule sa a.

Apre sa, lòt dekouvèt nou te fè sou wout la.

Ekri nan priz yo bloke. Ki jan sa te rive? Lè mwen te itilize rsyslog pou livrezon, nan kèk pwen nou te kraze kanal la ant sant done yo. Livrezon leve nan yon sèl kote, livrezon leve nan yon lòt kote. Tout bagay sa a te desann nan yon machin ak APIs ki ekri nan priz la rsyslog. Te gen yon keu. Lè sa a, keu la pou ekri nan priz la Unix plen moute, ki pa default se 128 pake. Ak ekri nan pwochen () nan blòk aplikasyon yo. Lè nou te gade bibliyotèk ke nou itilize nan aplikasyon Go, li te ekri la ke ekri nan priz la fèt nan mòd ki pa bloke. Nou te sèten ke pa gen anyen ki te bloke. Paske nou te li atik sou Badushechkaki moun ki te ekri sou li. Men, gen yon moman. Te gen tou yon bouk enfini alantou apèl sa a, nan ki te gen yon tantativ konstan pouse yon mesaj nan priz la. Nou pat remake li. Mwen te oblije reekri bibliyotèk la. Depi lè sa a, li te chanje plizyè fwa, men kounye a nou te debarase m de kadna nan tout subsystems. Se poutèt sa, ou ka sispann rsyslog epi pa gen anyen pral tonbe.

Li nesesè kontwole gwosè a nan ke moun kap kriye yo, ki ede pa etap sou rato sa a. Premyèman, nou ka kontwole lè nou kòmanse pèdi mesaj. Dezyèmman, nou ka kontwole ke nou fondamantalman gen pwoblèm ak livrezon.

Ak yon lòt moman dezagreyab - anplifikasyon pa 10 fwa nan yon achitekti microservice se trè fasil. Nou pa gen anpil demann k ap fèk ap rantre, men akòz graf la ansanm ak mesaj sa yo kouri pi lwen, paske nan mòso bwa aksè yo, nou aktyèlman ogmante chaj la sou mòso bwa yo pa apeprè dis fwa. Malerezman, mwen pa t 'gen tan kalkile nimewo yo egzak, men mikwosèvis yo se sa yo ye. Sa a dwe kenbe nan tèt ou. Li sanble ke nan moman sa a se sous-sistèm nan koleksyon boutèy demi lit ki pi chaje nan Lazada.

Yury Bushmelev "Jeyografik nan yon rato nan jaden an nan kolekte ak livrezon mòso bwa" - transkripsyon rapò a

Ki jan yo rezoud pwoblèm elasticsearch? Si ou bezwen byen vit jwenn mòso bwa nan yon sèl kote, se konsa yo pa kouri atravè tout machin ak kolekte yo la, sèvi ak depo dosye. Sa a se garanti travay. Li fèt nan nenpòt sèvè. Ou jis bezwen kole disk la epi mete syslog. Apre sa, ou garanti pou gen tout journaux yo nan yon sèl kote. Lè sa a, li pral posib tou dousman configured elasticsearch, graylog, oswa yon lòt bagay. Men, ou pral deja gen tout mòso bwa yo, epi, Anplis, ou ka estoke yo, osi lwen ke gen ase ranje ki gen kapasite.

Yury Bushmelev "Jeyografik nan yon rato nan jaden an nan kolekte ak livrezon mòso bwa" - transkripsyon rapò a

Nan moman rapò mwen an, konplo a te kòmanse sanble ak sa a. Nou pratikman sispann ekri nan dosye a. Koulye a, gen plis chans, nou pral fèmen rès yo. Sou machin lokal k ap kouri API a, nou pral sispann ekri nan dosye yo. Premyèman, gen depo dosye, ki travay trè byen. Dezyèmman, machin sa yo toujou ap kouri soti nan espas, ou bezwen toujou ap kontwole li.

Pati sa a ak Logstash ak Graylog, li vrèman monte. Se poutèt sa, ou bezwen debarase m de li. Ou dwe chwazi youn.

Yury Bushmelev "Jeyografik nan yon rato nan jaden an nan kolekte ak livrezon mòso bwa" - transkripsyon rapò a

Nou deside lage Logstash ak Kibana. Paske nou gen yon depatman sekirite. Ki sa ki koneksyon an? Koneksyon an se ke Kibana san X-Pack ak san Shield pa pèmèt ou diferansye dwa aksè nan mòso bwa yo. Se poutèt sa, yo te pran Graylog. Li genyen li tout. Mwen pa renmen li, men li travay. Nou te achte nouvo pyès ki nan konpitè, enstale yon Graylog fre la, epi nou deplase tout mòso bwa ki gen fòma strik nan yon Graylog separe. Nou te rezoud pwoblèm nan ak diferan kalite jaden yo menm òganizasyonman.

Yury Bushmelev "Jeyografik nan yon rato nan jaden an nan kolekte ak livrezon mòso bwa" - transkripsyon rapò a

Ki sa egzakteman ki enkli nan nouvo Graylog la. Nou jis ekri tout bagay nan docker la. Nou te pran yon pakèt sèvè, woule twa kafka, 7 sèvè Graylog vèsyon 2.3 (paske mwen te vle Elasticsearch vèsyon 5). Tout bagay sa a te leve soti vivan nan atak soti nan HDD la. Nou te wè yon pousantaj Indexing ki rive jiska 100 mil mesaj pou chak segonn. Nou te wè figi a ki 140 terabytes nan done pou chak semèn.

Yury Bushmelev "Jeyografik nan yon rato nan jaden an nan kolekte ak livrezon mòso bwa" - transkripsyon rapò a

Epi ankò yon rato! Nou gen de lavant k ap vini. Nou te deplase pi lwen pase 6 milyon pòs. Nou Graylog pa gen tan moulen. Yon jan kanmenm ou gen yo siviv ankò.

Yury Bushmelev "Jeyografik nan yon rato nan jaden an nan kolekte ak livrezon mòso bwa" - transkripsyon rapò a

Men ki jan nou te siviv. Te ajoute kèk lòt serveurs ak SSD. Nan moman sa a nap viv konsa. Koulye a, nou deja moulen 160k mesaj pou chak segonn. Nou poko frape limit la, kidonk li pa klè konbyen nou ka realistikman soti nan li.

Yury Bushmelev "Jeyografik nan yon rato nan jaden an nan kolekte ak livrezon mòso bwa" - transkripsyon rapò a

Sa yo se plan nou pou lavni. Nan sa yo, reyèlman, pi enpòtan an se pwobableman disponiblite segondè. Nou poko genyen li. Plizyè machin yo mete kanpe menm jan an, men jiskaprezan tout bagay ap pase nan yon sèl machin. Li nesesè pase tan yo mete kanpe yon failover ant yo.

Kolekte mezi nan Graylog.

Fè yon limit pousantaj pou nou gen yon sèl API fou ki pa touye nou Pleasant ak tout lòt bagay.

Epi finalman, siyen yon kalite SLA ak devlopè pou nou ka sèvi sa anpil. Si w ekri plis, padon.

Epi ekri dokiman.

Yury Bushmelev "Jeyografik nan yon rato nan jaden an nan kolekte ak livrezon mòso bwa" - transkripsyon rapò a

Yon ti tan, rezilta yo nan tout bagay ke nou te fè eksperyans. Premyèman, estanda yo. Dezyèmman, syslog se gato. Twazyèmman, rsyslog travay egzakteman jan li ekri sou glise a. Epi ann ale nan kesyon yo.

Kesyon ou yo.

Kesyon: Poukisa yo deside pa pran ... (filebeat?)

Reponn: Bezwen ekri nan yon dosye. Mwen reyèlman pa t 'vle. Lè API ou ekri dè milye de mesaj pou chak segonn, menm si ou vire yon fwa pa èdtan, sa a se toujou pa yon opsyon. Ou ka ekri nan tiyo. Ki devlopè yo te mande m ': "Kisa ki pral rive si pwosesis la nan ke nou ap ekri aksidan"? Mwen jis pa jwenn sa pou reponn yo, epi li di: "Oke, ok, ann pa fè sa."

Kesyon: Poukisa ou pa jis ekri mòso bwa sou HDFS?

ReponnA: Sa a se pwochen etap la. Nou te panse sou li nan kòmansman an trè, men kòm pa gen okenn resous fè fas ak li nan moman sa a, li pandye nan solisyon alontèm nou an.

Kesyon: Yon fòma kolòn ta pi apwopriye.

Reponn: Mwen konprann. Nou se "pou" ak tou de men.

Kesyon: Ou ekri rsyslog. Tou de TCP ak UDP yo disponib la. Men, si UDP, Lè sa a, ki jan ou garanti livrezon?

ReponnA: Gen de pwen. Premyèman, mwen imedyatman di tout moun ke nou pa garanti livrezon an nan mòso bwa. Paske lè devlopè yo vini epi yo di: "Ann kòmanse ekri done finansye la, epi ou pral mete l 'yon kote pou nou si yon bagay rive," nou reponn yo, "Bon! Ann kòmanse bloke sou ekri nan priz la, epi fè li nan tranzaksyon, pou ke ou gen garanti yo mete l 'nan priz la pou nou epi asire w ke nou te resevwa li nan lòt bò a. Ak nan moman sa a, tout moun imedyatman vin pa nesesè. E si se pa sa, ki kesyon nou genyen? Si ou pa vle garanti yon ekri nan priz la, Lè sa a, poukisa nou ta garanti livrezon? Nou ap fè pi bon efò. Nou vrèman eseye delivre otank posib ak pi bon ke posib, men nou pa bay yon garanti 100%. Se poutèt sa, ou pa bezwen ekri done finansye la. Gen baz done tranzaksyon pou sa.

Kesyon: Lè API a jenere kèk mesaj nan boutèy la epi transfere kontwòl nan mikwo-sèvis, èske ou te rankontre pwoblèm nan ke mesaj ki soti nan diferan mikwo-sèvis yo rive nan move lòd? Poutèt sa, konfizyon rive.

ReponnA: Li nòmal ke yo vini nan yon lòt lòd. Ou dwe pare pou sa. Paske nenpòt livrezon rezo pa garanti lòd pou ou, oswa ou bezwen depanse resous espesyal sou sa. Si nou pran depo dosye, Lè sa a, chak API sove mòso bwa nan dosye pwòp li yo. Olye de sa, rsyslog dekonpoze yo nan repèrtwar la. Chak API gen mòso bwa pwòp li yo la, kote ou ka ale epi gade, epi Lè sa a, ou ka konpare yo lè l sèvi avèk timestamp la nan boutèy sa a. Si yo ale nan gade nan Graylog, Lè sa a, gen yo pral klase pa timestamp. Tout bagay pral byen la.

Kesyon: Timestamp ka varye pa milisgond.

Reponn: Timestamp la se API li menm ki pwodui. Sa a, an reyalite, se pwen an antye. Nou gen NTP. API a jenere yon timestamp deja nan mesaj la li menm. Li pa ajoute pa rsyslog.

Kesyon: Entèraksyon ant sant done yo pa trè klè. Nan kad sant done a, li klè ki jan mòso bwa yo te kolekte epi trete. Ki jan entèraksyon ant sant done yo? Oswa èske chak sant done ap viv pwòp lavi li?

Reponn: Prèske. Nou gen chak peyi ki sitiye nan yon sant done. Nou pa gen kounye a gaye, se konsa ke yon peyi yo mete nan sant done diferan. Se poutèt sa, pa gen okenn bezwen konbine yo. Anndan chak sant gen yon Log Relay. Sa a se yon sèvè Rsyslog. An reyalite, de machin jesyon. Yo mete sou pye menm jan an. Men, pou kounye a, trafik jis ale nan youn nan yo. Li anrejistre tout bagay. Li gen yon keu disk jis nan ka. Li peze mòso bwa yo epi voye yo nan sant done santral la (Singapore), kote plis yo deja anpwazonnen nan Graylog. Epi chak sant done gen pwòp depo dosye li yo. Nan ka nou pèdi koneksyon, nou gen tout mòso bwa la. Yo pral rete la. Yo pral estoke la.

Kesyon: Èske ou jwenn mòso bwa nan la pandan sitiyasyon nòmal?

Reponn: Ou ka ale la (nan depo dosye a) epi gade.

Kesyon: Ki jan ou kontwole ke ou pa pèdi mòso bwa?

Reponn: Nou aktyèlman pèdi yo, epi nou ap kontwole li. Siveyans te kòmanse yon mwa de sa. Bibliyotèk ke Go APIs yo itilize gen mezi. Li ka konte konbyen fwa li echwe pou ekri nan socket. Gen nan moman sa a gen yon euristik difisil. Gen yon tanpon la. Li eseye ekri yon mesaj soti nan priz. Si tanpon an debòde, li kòmanse jete yo. Epi li konte konbyen li lage yo. Si kontè yo kòmanse debòde la, nou pral konnen sou li. Kounye a yo vin jwenn prometheus tou, epi ou ka wè graf yo nan Grafana. Ou ka mete alèt. Men, li poko klè nan ki moun yo voye yo.

Kesyon: Nan elasticsearch, ou sere journaux ak redondance. Konbyen kopi ou genyen?

Reponn: Yon kopi.

Kesyon: Èske se jis yon liy?

Reponn: Sa a se mèt la ak kopi. Done yo estoke an kopi.

Kesyon: Eske ou te ajiste gwosè tanpon rsyslog la yon jan kanmenm?

Reponn: Nou ekri datagram nan yon priz Unix koutim. Sa a imedyatman enpoze yon limit nan 128 kilobyte sou nou. Nou pa ka ekri plis ladan l. Nou te ekri sa a nan estanda a. Ki moun ki vle antre nan depo, yo ekri 128 kilobytes. Bibliyotèk, anplis, koupe, epi mete yon drapo ke mesaj la koupe. Nou gen yon jaden espesyal nan estanda mesaj la li menm, ki montre si li te koupe pandan anrejistreman an oswa ou pa. Se konsa, nou gen opòtinite pou swiv moman sa a.

Kesyon: ou ekri JSON kase?

Reponn: JSON kase yo pral jete swa pandan relè paske pake a twò gwo. Oswa Graylog pral tonbe, paske li pa pral kapab analize JSON. Men, gen nuans isit la ki bezwen yo dwe fiks, epi yo sitou mare nan rsyslog. Mwen te deja ranpli nan kèk pwoblèm la, ki toujou bezwen travay sou.

Kesyon: Poukisa Kafka? Èske w te eseye RabbitMQ? Graylog pa ajoute anba chay sa yo?

Reponn: Li pa mache ak Graylog. Ak Graylog ap pran fòm. Li vrèman pwoblèm pou li. Li se kalite yon bagay. Epi, an reyalite, li pa nesesè. Mwen ta pito ekri soti nan rsyslog dirèkteman nan elasticsearch ak Lè sa a, gade Kibana. Men, nou bezwen rezoud pwoblèm nan ak gad sekirite yo. Sa a se yon varyant posib nan devlopman nou an lè nou jete Graylog epi sèvi ak Kibana. Logstash pa pral fè sans. Paske mwen ka fè menm bagay la ak rsyslog. Epi li gen yon modil pou ekri elasticsearch. Avèk Graylog nou ap eseye viv yon jan kanmenm. Nou menm tweaked li yon ti jan. Men, toujou gen plas pou amelyorasyon.

Konsènan Kafka. Se konsa sa te pase istorikman. Lè m rive, li te deja la, epi yo te deja ekri mòso bwa sou li. Nou jis leve gwoup nou an ak deplase mòso bwa nan li. Nou jere l, nou konnen ki jan li santi l. Kòm pou RabbitMQ... nou gen pwoblèm ak RabbitMQ. Ak RabbitMQ ap devlope pou nou. Nou genyen li nan pwodiksyon, e te gen pwoblèm ak li. Koulye a, anvan vant lan, li ta dwe shamanized, epi li ta kòmanse travay nòmalman. Men, anvan sa, mwen pa t 'pare yo lage li nan pwodiksyon an. Gen yon lòt pwen. Graylog ka li AMQP 0.9 vèsyon ak rsyslog ka ekri AMQP 1.0 vèsyon. Epi pa gen yon sèl solisyon ki ka fè tou de nan mitan an. Gen swa youn oswa lòt la. Se konsa, pou kounye a sèlman Kafka. Men, gen tou nuans. Paske omkafka nan vèsyon an nan rsyslog ke nou itilize ka pèdi tanpon nan mesaj tout antye ke li te retire nan rsyslog. Osi lontan ke nou sipòte li.

Kesyon: Èske w ap itilize Kafka paske ou te genyen l? Pa itilize pou okenn lòt rezon?

Reponn: Kafka, ki te itilize pa ekip Data Science. Sa a se yon pwojè konplètman separe, sou ki mwen, malerezman, pa ka di anyen. Mwen pa konnen. Li te dirije pa ekip la Syans Done. Lè mòso bwa yo te kòmanse, yo deside sèvi ak li, se konsa yo pa mete pwòp yo. Koulye a, nou te mete ajou Graylog, epi nou te pèdi konpatibilite, paske gen yon ansyen vèsyon nan Kafka. Nou te oblije fè pwòp pa nou. An menm tan an, nou te debarase m de kat sijè sa yo pou chak API. Nou te fè yon sèl lajè tèt pou tout moun ap viv, yon sèl lajè lajè tèt pou tout sèn epi nou jis tire tout bagay la. Graylog rato tout bagay sa yo nan paralèl.

Kesyon: Poukisa nou bezwen shamanism sa a ak priz? Èske w te eseye itilize chofè log syslog pou resipyan yo.

Reponn: Nan moman nou te poze kesyon sa a, nou te gen relasyon tansyon ak docker la. Se te docker 1.0 oswa 0.9. Docker tèt li te etranj. Dezyèmman, si ou tou pouse mòso bwa nan li ... Mwen gen yon sispèk unverified ke li pase tout mòso bwa nan tèt li, atravè demon an Docker. Si nou gen yon sèl API ki pral fou, Lè sa a, rès API yo pral kouri nan lefèt ke yo pa ka voye stdout ak stderr. Mwen pa konnen ki kote sa pral mennen. Mwen gen yon sispèk nan nivo a santi ke li pa nesesè yo sèvi ak chofè a syslog docker nan kote sa a. Depatman tès fonksyonèl nou an gen pwòp graylog li yo ak mòso bwa. Yo itilize chofè boutèy demi lit docker ak tout bagay sanble ap anfòm la. Men yo imedyatman ekri GELF pou Graylog. Nan moman sa a lè nou te kòmanse tout bagay sa yo, nou te bezwen li jis travay. Petèt pita, lè yon moun vini epi li di ke li te travay nòmalman pou yon santèn ane, nou pral eseye.

Kesyon: Ou delivre ant sant done lè l sèvi avèk rsyslog. Poukisa pa sou Kafka?

Reponn: Nou fè sa, e se konsa li vrèman ye. Pou de rezon. Si kanal la konplètman mouri, Lè sa a, tout mòso bwa nou yo, menm nan yon fòm konprese, pa pral monte nan li. Ak kafka pèmèt yo tou senpleman pèdi nan pwosesis la. Nan fason sa a, nou debarase m de kole nan mòso bwa sa yo. Nou jis itilize Kafka nan ka sa a dirèkteman. Si nou gen yon bon chanèl epi nou vle libere li, Lè sa a, nou itilize rsyslog yo. Men, an reyalite, ou ka mete li kanpe pou ke li gout sa li pa t 'jwenn nan. Nan moman sa a nou jis itilize livrezon rsyslog dirèkteman yon kote, yon kote Kafka.

Sous: www.habr.com

Add nouvo kòmantè