Mar a bha sinn aig CIAN a’ taomadh terabytes de logaichean

Mar a bha sinn aig CIAN a’ taomadh terabytes de logaichean

Halo a h-uile duine, is e m ’ainm Alexander, tha mi ag obair aig CIAN mar innleadair agus tha mi an sàs ann an rianachd siostam agus fèin-ghluasad pròiseasan bun-structair. Anns na beachdan gu aon de na h-artaigilean roimhe, chaidh iarraidh oirnn innse càite am faigh sinn 4 TB de logaichean gach latha agus dè a nì sinn leotha. Tha, tha tòrr chlàran againn, agus chaidh cruinneachadh bun-structair fa leth a chruthachadh gus an làimhseachadh, a leigeas leinn duilgheadasan fhuasgladh gu sgiobalta. San artaigil seo bruidhnidh mi mu mar a dh’ atharraich sinn e thar bliadhna gus obrachadh le sruth dàta a tha a’ sìor fhàs.

Càite an do thòisich sinn?

Mar a bha sinn aig CIAN a’ taomadh terabytes de logaichean

Thairis air na beagan bhliadhnaichean a dh ’fhalbh, tha an luchd air cian.ru air fàs gu math luath, agus ron treas ràithe de 2018, ràinig trafaic ghoireasan 11.2 millean neach-cleachdaidh sònraichte gach mìos. Aig an àm sin, aig amannan èiginneach chaill sinn suas ri 40% de na logaichean, agus is e sin as coireach nach b’ urrainn dhuinn dèiligeadh gu sgiobalta ri tachartasan agus chuir sinn seachad tòrr ùine is oidhirp gan fuasgladh. Cuideachd gu tric cha b’ urrainn dhuinn adhbhar na trioblaid a lorg, agus thigeadh e a-rithist às deidh ùine. B’ e ifrinn a bh’ ann agus bha rudeigin ri dhèanamh mu dheidhinn.

Aig an àm sin, chleachd sinn cruinneachadh de nodan dàta 10 le dreach ElasticSearch 5.5.2 le roghainnean clàr-amais àbhaisteach airson logaichean a stòradh. Chaidh a thoirt a-steach o chionn còrr is bliadhna mar fhuasgladh mòr-chòrdte agus aig prìs reusanta: an uairsin cha robh sruth nan logaichean cho mòr, cha robh feum sam bith ann a bhith a’ tighinn suas le rèiteachaidhean neo-àbhaisteach. 

Chaidh giullachd logaichean a-steach a thoirt seachad le Logstash air diofar phuirt air còig co-òrdanaichean ElasticSearch. Bha aon chlàr-amais, a dh'aindeoin meud, air a dhèanamh suas de chòig slatan. Chaidh cuairteachadh uair a thìde agus làitheil a chuir air dòigh, mar thoradh air an sin, nochd timcheall air 100 shards ùra anns a’ bhuidheann gach uair a thìde. Ged nach robh mòran chlàran ann, dhèilig an cruinneachadh gu math agus cha tug duine aire dha na roghainnean aige. 

Na dùbhlain a tha an lùib fàs luath

Dh'fhàs an àireamh de logaichean a chaidh a chruthachadh gu math luath, leis gu robh dà phròiseas a 'dol thairis air a chèile. Air an aon làimh, dh'fhàs an àireamh de luchd-cleachdaidh na seirbheis. Air an làimh eile, thòisich sinn gu gnìomhach ag atharrachadh gu ailtireachd microservice, a 'sàbhaladh ar seann monoliths ann an C # agus Python. Chruthaich grunn dhusan meanbh-sheirbheisean ùra a ghabh àite pàirtean den monolith mòran a bharrachd chlàran airson a’ bhuidheann bun-structair. 

B’ e sgèileadh a thug sinn chun na h-ìre far an robh an cruinneachadh cha mhòr do-dhèanta a riaghladh. Nuair a thòisich na logaichean a’ ruighinn ìre de 20 mìle teachdaireachdan gach diog, mheudaich cuairteachadh gun fheum gu tric an àireamh de shards gu 6 mìle, agus bha còrr air 600 shards gach nód. 

Dh'adhbhraich seo duilgheadasan le riarachadh RAM, agus nuair a thuit nód, thòisich a h-uile shards air gluasad aig an aon àm, ag iomadachadh trafaic agus a ’luchdachadh nodan eile, a bha ga dhèanamh cha mhòr do-dhèanta dàta a sgrìobhadh chun bhuidheann. Agus rè na h-ùine seo bha sinn air fhàgail gun logaichean. Agus ma bha duilgheadas ann leis an fhrithealaiche, chaill sinn 1/10 den bhuidheann gu bunaiteach. Chuir àireamh mhòr de chlàran-amais beaga iom-fhillteachd ris.

Às aonais logaichean, cha do thuig sinn na h-adhbharan airson na thachair agus b’ urrainn dhuinn nas luaithe no nas fhaide air adhart a dhol air an aon ràcan a-rithist, agus ann an ideòlas na sgioba againn cha robh seo iomchaidh, leis gu bheil na dòighean obrach againn uile air an dealbhadh gus a chaochladh a dhèanamh - na bi a-rithist. na h-aon duilgheadasan. Gus seo a dhèanamh, bha feum againn air an àireamh iomlan de logaichean agus an lìbhrigeadh cha mhòr ann an àm fìor, leis gu robh sgioba de innleadairean air dleasdanas a’ cumail sùil air rabhaidhean chan ann a-mhàin bho mheatairean, ach cuideachd bho logaichean. Gus meud na trioblaid a thuigsinn, aig an àm sin bha an àireamh iomlan de logaichean timcheall air 2 TB gach latha. 

Shuidhich sinn amas gus cuir às gu tur call chlàran agus lughdaich sinn an ùine lìbhrigidh gu cruinneachadh ELK gu 15 mionaidean aig a’ char as àirde rè force majeure (chuir sinn an urra ris an fhigear seo mar KPI a-staigh).

Uidheam cuairteachaidh ùr agus nodan blàth-bhlàth

Mar a bha sinn aig CIAN a’ taomadh terabytes de logaichean

Thòisich sinn air an tionndadh brabhsair le bhith ag ùrachadh an tionndadh ElasticSearch bho 5.5.2 gu 6.4.3. A-rithist bhàsaich ar brabhsair dreach 5, agus chuir sinn romhainn a thionndadh dheth agus ùrachadh gu tur - chan eil logaichean ann fhathast. Mar sin rinn sinn an eadar-ghluasad seo ann an dìreach beagan uairean a thìde.

B’ e an cruth-atharrachadh as motha aig an ìre seo buileachadh Apache Kafka air trì nodan le co-òrdanaiche mar bhufair eadar-mheadhanach. Shàbhail am broker teachdaireachd sinn bho bhith a’ call logaichean ri linn duilgheadasan le ElasticSearch. Aig an aon àm, chuir sinn 2 nodan ris a’ bhuidheann agus thionndaidh sinn gu ailtireachd blàth teth le trì nodan “teth” suidhichte ann an diofar racaichean san ionad dàta. Rinn sinn ath-stiùireadh air logaichean thuca a’ cleachdadh masg nach bu chòir a chall ann an suidheachadh sam bith - nginx, a bharrachd air logaichean mearachd tagraidh. Chaidh clàran beaga a chuir gu na nodan a bha air fhàgail - deasbaid, rabhadh, msaa, agus às deidh 24 uairean, chaidh logaichean “cudromach” bho nodan “teth” a ghluasad.

Gus nach àrdaich sinn an àireamh de chlàran-amais beaga, thionndaidh sinn bho chuairteachadh ùine chun inneal rollover. Bha mòran fiosrachaidh air na fòraman gu bheil cuairteachadh a rèir meud clàr-amais gu math neo-earbsach, agus mar sin chuir sinn romhainn cuairteachadh a chleachdadh leis an àireamh de sgrìobhainnean anns a ’chlàr-amais. Rinn sinn mion-sgrùdadh air gach clàr-amais agus chlàraich sinn an àireamh de sgrìobhainnean às deidh sin bu chòir cuairteachadh obrachadh. Mar sin, tha sinn air am meud shard as fheàrr a ruighinn - gun a bhith nas fhaide na 50 GB. 

Optimization brabhsair

Mar a bha sinn aig CIAN a’ taomadh terabytes de logaichean

Ach, chan eil sinn air faighinn cuidhteas na duilgheadasan gu tur. Gu mì-fhortanach, nochd clàran-amais beaga fhathast: cha do ràinig iad an tomhas ainmichte, cha deach an cuairteachadh, agus chaidh an toirt às le glanadh cruinne de chlàran-amais nas sine na trì latha, leis gun tug sinn air falbh cuairteachadh le ceann-latha. Dh'adhbhraich seo call dàta air sgàth 's gun do dh' fhalbh an clàr-amais bhon bhuidheann gu tur, agus bhris oidhirp sgrìobhadh gu clàr-amais nach robh ann loidsig an neach-gleidhidh a chleachd sinn airson riaghladh. Chaidh Alias ​​​​airson sgrìobhadh a thionndadh gu bhith na chlàr-amais agus bhris e an loidsig rollover, ag adhbhrachadh fàs neo-riaghlaidh de chuid de chlàran-amais suas gu 600 GB. 

Mar eisimpleir, airson an rèiteachadh cuairteachaidh:

сurator-elk-rollover.yaml

---
actions:
  1:
    action: rollover
    options:
      name: "nginx_write"
      conditions:
        max_docs: 100000000
  2:
    action: rollover
    options:
      name: "python_error_write"
      conditions:
        max_docs: 10000000

Mura robh alias rollover ann, thachair mearachd:

ERROR     alias "nginx_write" not found.
ERROR     Failed to complete action: rollover.  <type 'exceptions.ValueError'>: Unable to perform index rollover with alias "nginx_write".

Dh’ fhàg sinn am fuasgladh don duilgheadas seo airson an ath chuairt agus thog sinn cùis eile: thionndaidh sinn gu loidsig tarraing Logstash, a bhios a’ pròiseasadh logaichean a tha a’ tighinn a-steach (a’ toirt air falbh fiosrachadh neo-riatanach agus a’ beairteachadh). Chuir sinn ann an docker e, a bhios sinn a’ cur air bhog tro docker-compose, agus chuir sinn cuideachd logstash-exporter an sin, a bhios a’ cur metrics gu Prometheus airson sgrùdadh obrachaidh a dhèanamh air an t-sruth log. San dòigh seo thug sinn cothrom dhuinn fhìn atharrachadh gu rèidh air an àireamh de shuidheachaidhean logstash a tha an urra ri bhith a’ giullachd gach seòrsa log.

Fhad ‘s a bha sinn ag adhartachadh a’ bhuidheann, mheudaich trafaic cian.ru gu 12,8 millean neach-cleachdaidh sònraichte gach mìos. Mar thoradh air an sin, thionndaidh e a-mach gun robh na h-atharrachaidhean againn beagan air dheireadh air na h-atharrachaidhean ann an cinneasachadh, agus bha sinn an aghaidh nach b’ urrainn dha na nodan “blàth” dèiligeadh ris an luchd agus a chuir maill air lìbhrigeadh iomlan nan logaichean. Fhuair sinn dàta “teth” às aonais fàilligidhean, ach bha againn ri eadar-theachd a dhèanamh ann an lìbhrigeadh a’ chòrr agus gluasad làimhe a dhèanamh gus na clàran-amais a sgaoileadh gu cothromach. 

Aig an aon àm, bha e iom-fhillte a bhith a’ sgèileadh agus ag atharrachadh suidheachadh nan suidheachaidhean logstash anns a’ bhuidheann leis gur e sgrìobhadh docker ionadail a bh’ ann, agus chaidh a h-uile gnìomh a dhèanamh le làimh (gus cinn ùra a chur ris, bha e riatanach a dhol tro na h-uile. na frithealaichean agus dèan docker-compose up -d anns a h-uile àite).

Ath-sgaoileadh logaichean

San t-Sultain am-bliadhna, bha sinn fhathast a 'gearradh suas am monolith, bha an luchd air a' bhraisle a 'dol am meud, agus bha sruth nan logaichean a' tighinn faisg air 30 mìle teachdaireachd gach diog. 

Mar a bha sinn aig CIAN a’ taomadh terabytes de logaichean

Thòisich sinn an ath chuairt le ùrachadh bathar-cruaidh. Ghluais sinn bho chòig co-òrdanaichean gu trì, chuir sinn an àite nodan dàta agus bhuannaich sinn a thaobh airgead agus àite stòraidh. Airson nodan bidh sinn a’ cleachdadh dà rèiteachadh: 

  • Airson nodan “teth”: E3-1270 v6 / 960Gb SSD / 32 Gb x 3 x 2 (3 airson Hot1 agus 3 airson Hot2).
  • Airson nodan “blàth”: E3-1230 v6 / 4Tb SSD / 32 Gb x 4.

Aig an tionndadh seo, ghluais sinn an clàr-amais le logaichean ruigsinneachd de mhicro-sheirbheisean, a bheir suas an aon àite ri logaichean nginx aghaidh-aghaidh, chun dàrna buidheann de thrì nodan “teth”. Bidh sinn a-nis a’ stòradh dàta air nodan “teth” airson 20 uair, agus an uairsin gan gluasad gu nodan “blàth” chun chòrr de na logaichean. 

Dh’ fhuasgail sinn an duilgheadas le clàran-amais beaga a’ dol à sealladh le bhith ag ath-dhealbhadh an cuairteachadh. A-nis tha na clàran-amais air an cuairteachadh gach 23 uair co-dhiù, eadhon ged nach eil mòran dàta ann. Mheudaich seo an àireamh de shards beagan (bha timcheall air 800 dhiubh), ach a thaobh coileanadh brabhsair tha e fulangach. 

Mar thoradh air an sin, bha sia nodan “teth” agus dìreach ceithir “blàth” sa bhuidheann. Tha seo ag adhbhrachadh beagan dàil air iarrtasan thar ùine fhada, ach le bhith ag àrdachadh an àireamh de nodan san àm ri teachd a 'fuasgladh na duilgheadas seo.

Shuidhich an tionndadh seo cuideachd an duilgheadas a thaobh dìth sgèileadh leth-fèin-ghluasadach. Gus seo a dhèanamh, chleachd sinn buidheann bun-structair Nomad - coltach ris na tha sinn air a chleachdadh mar-thà ann an cinneasachadh. Airson a-nis, chan eil an ìre de Logstash ag atharrachadh gu fèin-ghluasadach a rèir an luchd, ach thig sinn gu seo.

Mar a bha sinn aig CIAN a’ taomadh terabytes de logaichean

Planaichean airson an ama ri teachd

Bidh na lannan rèiteachaidh gnìomhaichte gu foirfe, agus a-nis bidh sinn a’ stòradh 13,3 TB de dhàta - a h-uile log airson 4 latha, a tha riatanach airson mion-sgrùdadh èiginneach air rabhaidhean. Bidh sinn ag atharrachadh cuid de na logaichean gu meatrach, a chuireas sinn ri Graphite. Gus obair innleadairean a dhèanamh nas fhasa, tha metrics againn airson a’ bhuidheann bun-structair agus sgriobtaichean airson càradh leth-fèin-ghluasadach air duilgheadasan cumanta. Às deidh dhuinn an àireamh de nodan dàta àrdachadh, a thathar an dùil airson na h-ath bhliadhna, gluaisidh sinn gu stòradh dàta bho 4 gu 7 latha. Bidh seo gu leòr airson obair obrachaidh, oir bidh sinn an-còmhnaidh a’ feuchainn ri tachartasan a sgrùdadh cho luath ‘s a ghabhas, agus airson sgrùdaidhean fad-ùine tha dàta telemetry ann. 

Anns an Dàmhair 2019, bha trafaic gu cian.ru mu thràth air fàs gu 15,3 millean neach-cleachdaidh sònraichte gach mìos. Thàinig seo gu bhith na fhìor dheuchainn air an fhuasgladh ailtireachd airson lìbhrigeadh logaichean. 

A-nis tha sinn ag ullachadh airson ElasticSearch ùrachadh gu dreach 7. Ach, airson seo feumaidh sinn ùrachadh a dhèanamh air mapadh mòran chlàran-amais ann an ElasticSearch, leis gun do ghluais iad bho dhreach 5.5 agus gun deach an ainmeachadh mar nach deach a mholadh ann an dreach 6 (chan eil iad ann ach ann an dreach 7). 7). Tha seo a’ ciallachadh gum bi force majeure de sheòrsa air choreigin ann tron ​​phròiseas ùrachaidh, a dh’ fhàgas sinn gun logaichean fhad ‘s a thèid a’ chùis fhuasgladh. De dhreach XNUMX, tha sinn a’ coimhead air adhart gu mòr ri Kibana le eadar-aghaidh leasaichte agus sìoltachain ùra. 

Choilean sinn ar prìomh amas: sguir sinn a’ call chlàran agus lughdaich sinn ùine downt a’ bhun-structair bho thubaistean 2-3 san t-seachdain gu uair no dhà de dh’ obair cumail suas gach mìos. Tha an obair seo gu lèir ann an riochdachadh cha mhòr do-fhaicsinneach. Ach, a-nis is urrainn dhuinn dearbhadh dè dìreach a tha a ’tachairt leis an t-seirbheis againn, is urrainn dhuinn a dhèanamh gu sgiobalta ann am modh sàmhach agus na gabh dragh gun tèid na logaichean a chall. Anns an fharsaingeachd, tha sinn riaraichte, toilichte agus ag ullachadh airson cleachdaidhean ùra, a bhios sinn a 'bruidhinn mu dheidhinn nas fhaide air adhart.

Source: www.habr.com

Cuir beachd ann