Bawo ni a ṣe ni CIAN tamed terabytes ti awọn log

Bawo ni a ṣe ni CIAN tamed terabytes ti awọn log

Kaabo gbogbo eniyan, orukọ mi ni Alexander, Mo ṣiṣẹ ni CIAN bi ẹlẹrọ ati pe mo ni ipa ninu iṣakoso eto ati adaṣe ti awọn ilana amayederun. Ninu awọn asọye si ọkan ninu awọn nkan iṣaaju, a beere lọwọ wa lati sọ ibiti a ti gba TB 4 ti awọn akọọlẹ fun ọjọ kan ati kini a ṣe pẹlu wọn. Bẹẹni, a ni ọpọlọpọ awọn akọọlẹ, ati pe a ti ṣẹda iṣupọ amayederun ọtọtọ lati ṣe ilana wọn, eyiti o jẹ ki a yara yanju awọn iṣoro. Ninu nkan yii Emi yoo sọrọ nipa bawo ni a ṣe ṣe deede ni akoko ti ọdun kan lati ṣiṣẹ pẹlu ṣiṣan data ti n dagba nigbagbogbo.

Nibo ni a bẹrẹ?

Bawo ni a ṣe ni CIAN tamed terabytes ti awọn log

Ni awọn ọdun diẹ sẹhin, fifuye lori cian.ru ti dagba ni iyara pupọ, ati nipasẹ mẹẹdogun kẹta ti ọdun 2018, ijabọ awọn orisun de awọn olumulo alailẹgbẹ 11.2 milionu fun oṣu kan. Ni akoko yẹn, ni awọn akoko to ṣe pataki a padanu to 40% ti awọn akọọlẹ, eyiti o jẹ idi ti a ko le yara koju awọn iṣẹlẹ ati lo akoko pupọ ati igbiyanju lati yanju wọn. Nigbagbogbo a ko le rii idi ti iṣoro naa, ati pe yoo tun waye lẹhin igba diẹ. O je apaadi ati nkankan ni lati ṣee ṣe nipa o.

Ni akoko yẹn, a lo iṣupọ ti awọn apa data 10 pẹlu ElasticSearch version 5.5.2 pẹlu awọn eto atọka boṣewa lati tọju awọn akọọlẹ. O ti ṣafihan diẹ sii ju ọdun kan sẹhin bi ojutu olokiki ati ifarada: lẹhinna ṣiṣan ti awọn akọọlẹ ko tobi pupọ, ko si aaye ni wiwa pẹlu awọn atunto ti kii ṣe deede. 

Ṣiṣẹda awọn akọọlẹ ti nwọle ti pese nipasẹ Logstash lori awọn ebute oko oju omi oriṣiriṣi lori awọn oluṣeto ElasticSearch marun. Atọka kan, laibikita iwọn, ni awọn shards marun. A ṣeto yiyi wakati kan ati lojoojumọ, nitori abajade, nipa 100 titun shards han ninu iṣupọ ni wakati kọọkan. Lakoko ti ko si ọpọlọpọ awọn akọọlẹ, iṣupọ naa farada daradara ati pe ko si ẹnikan ti o san ifojusi si awọn eto rẹ. 

Awọn italaya ti idagbasoke iyara

Iwọn ti awọn igbasilẹ ti ipilẹṣẹ dagba ni yarayara, bi awọn ilana meji ṣe bori ara wọn. Ni ọna kan, nọmba awọn olumulo ti iṣẹ naa dagba. Ni apa keji, a bẹrẹ lati yipada ni itara si faaji microservice, ti n rii awọn monoliths atijọ wa ni C # ati Python. Orisirisi awọn mejila titun microservices ti o rọpo awọn ẹya ara ti monolith ti ipilẹṣẹ significantly siwaju sii àkọọlẹ fun awọn amayederun iṣupọ. 

Ìwọ̀n ni ó mú wa dé àyè tí ìdìpọ̀ náà ti di èyí tí a kò lè ṣàkóso. Nigbati awọn akọọlẹ bẹrẹ lati de ni iwọn 20 ẹgbẹrun awọn ifiranṣẹ fun iṣẹju keji, yiyi asan loorekoore pọ si nọmba awọn shards si 6 ẹgbẹrun, ati pe o wa diẹ sii ju 600 shards fun ipade. 

Eyi yori si awọn iṣoro pẹlu ipin ti Ramu, ati nigbati ipade kan ti kọlu, gbogbo awọn shards bẹrẹ lati gbe ni nigbakannaa, isodipupo ijabọ ati ikojọpọ awọn apa miiran, eyiti o jẹ ki o ṣee ṣe lati kọ data si iṣupọ. Ati ni akoko yii a fi wa silẹ laisi awọn igi. Ati pe ti iṣoro kan ba wa pẹlu olupin naa, a padanu 1/10 ti iṣupọ. Nọmba nla ti awọn atọka kekere ti ṣafikun idiju.

Laisi awọn akọọlẹ, a ko loye awọn idi fun iṣẹlẹ naa ati pe o le pẹ tabi nigbamii tẹsẹ lori rake kanna lẹẹkansi, ati ninu imọ-jinlẹ ti ẹgbẹ wa eyi ko ṣe itẹwọgba, nitori gbogbo awọn ọna ṣiṣe iṣẹ wa ni a ṣe lati ṣe ni idakeji - maṣe tun ṣe awọn iṣoro kanna. Lati ṣe eyi, a nilo iwọn didun kikun ti awọn akọọlẹ ati ifijiṣẹ wọn fẹrẹẹ ni akoko gidi, nitori ẹgbẹ kan ti awọn onimọ-ẹrọ iṣẹ ṣe abojuto awọn itaniji kii ṣe lati awọn metiriki nikan, ṣugbọn tun lati awọn akọọlẹ. Lati loye iwọn iṣoro naa, ni akoko yẹn lapapọ iwọn didun ti awọn akọọlẹ jẹ nipa 2 TB fun ọjọ kan. 

A ṣeto ibi-afẹde kan lati yọkuro pipadanu awọn iwe-ipamọ patapata ati dinku akoko ifijiṣẹ wọn si iṣupọ ELK si iwọn iṣẹju 15 ti o pọju lakoko majeure agbara (a nigbamii gbarale eeya yii bi KPI ti inu).

Titun yiyi siseto ati ki o gbona-gbona apa

Bawo ni a ṣe ni CIAN tamed terabytes ti awọn log

A bẹrẹ iyipada iṣupọ nipa mimudojuiwọn ẹya ElasticSearch lati 5.5.2 si 6.4.3. Lẹẹkansi ẹda 5 iṣupọ wa ti ku, a pinnu lati pa a ati ṣe imudojuiwọn rẹ patapata - ko si awọn akọọlẹ ṣi wa. Nitorinaa a ṣe iyipada yii ni awọn wakati meji pere.

Iyipada iwọn-nla julọ ni ipele yii ni imuse ti Apache Kafka lori awọn apa mẹta pẹlu oluṣeto bi ifipamọ agbedemeji. Alagbata ifiranṣẹ ti fipamọ wa lati sisọnu awọn akọọlẹ lakoko awọn iṣoro pẹlu ElasticSearch. Ni akoko kanna, a ṣafikun awọn apa 2 si iṣupọ ati yipada si ile-iṣọ gbona-gbona pẹlu awọn apa “gbona” mẹta ti o wa ni awọn agbeko oriṣiriṣi ni ile-iṣẹ data. A darí awọn akọọlẹ si wọn ni lilo iboju-boju ti ko yẹ ki o sọnu labẹ eyikeyi ayidayida - nginx, bakanna bi awọn aṣiṣe aṣiṣe ohun elo. Awọn akọọlẹ kekere ni a firanṣẹ si awọn apa ti o ku - yokokoro, ikilọ, ati bẹbẹ lọ, ati lẹhin awọn wakati 24, awọn akọọlẹ “pataki” lati awọn apa “gbona” ti gbe.

Ni ibere ki o má ba mu nọmba awọn itọka kekere pọ si, a yipada lati akoko yiyi si ẹrọ iyipo. Alaye pupọ wa lori awọn apejọ pe yiyi nipasẹ iwọn atọka jẹ igbẹkẹle pupọ, nitorinaa a pinnu lati lo yiyi nipasẹ nọmba awọn iwe aṣẹ ninu atọka. A ṣe itupalẹ atọka kọọkan ati gbasilẹ nọmba awọn iwe aṣẹ lẹhin eyi ti iyipo yẹ ki o ṣiṣẹ. Nitorinaa, a ti de iwọn shard to dara julọ - ko ju 50 GB lọ. 

Iṣatunṣe iṣupọ

Bawo ni a ṣe ni CIAN tamed terabytes ti awọn log

Sibẹsibẹ, a ko ti yọkuro awọn iṣoro naa patapata. Laanu, awọn atọka kekere tun han: wọn ko de iwọn ti a sọ, ko yiyi, ati pe wọn paarẹ nipasẹ mimọ agbaye ti awọn atọka ti o dagba ju ọjọ mẹta lọ, nitori a yọ yiyi kuro ni ọjọ. Eyi yori si pipadanu data nitori otitọ pe atọka lati inu iṣupọ ti sọnu patapata, ati igbiyanju lati kọwe si atọka ti ko si tẹlẹ fọ ọgbọn ti olutọju ti a lo fun iṣakoso. Inagijẹ fun kikọ jẹ iyipada sinu atọka ati fọ ọgbọn-ọrọ rollover, nfa idagbasoke ti ko ni iṣakoso ti diẹ ninu awọn atọka to 600 GB. 

Fun apẹẹrẹ, fun atunto iyipo:

с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

Ti ko ba si inagijẹ rollover, aṣiṣe kan ṣẹlẹ:

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

A fi ojutu silẹ si iṣoro yii fun aṣetunṣe atẹle ati gbe ọran miiran: a yipada si imọ-jinlẹ fa ti Logstash, eyiti o ṣe ilana awọn igbasilẹ ti nwọle (yiyọ alaye ti ko wulo ati imudara). A gbe e sinu docker, eyiti a ṣe ifilọlẹ nipasẹ docker-compose, ati pe a tun gbe logstash-atporter nibẹ, eyiti o firanṣẹ awọn metiriki si Prometheus fun ibojuwo iṣẹ ṣiṣe ti ṣiṣan log. Ni ọna yii a fun ara wa ni aye lati yipada laisiyonu nọmba awọn iṣẹlẹ logstash ti o ni iduro fun sisẹ iru log kọọkan.

Lakoko ti a n ṣe ilọsiwaju iṣupọ, ijabọ cian.ru pọ si awọn olumulo alailẹgbẹ 12,8 milionu fun oṣu kan. Bi abajade, o wa ni pe awọn iyipada wa jẹ diẹ lẹhin awọn iyipada ninu iṣelọpọ, ati pe a dojuko pẹlu otitọ pe awọn apa "gbona" ​​ko le koju ẹru naa ati ki o fa fifalẹ gbogbo ifijiṣẹ ti awọn igi. A gba data “gbona” laisi awọn ikuna, ṣugbọn a ni lati laja ni ifijiṣẹ ti iyokù ati ṣe rollover afọwọṣe lati le pin kaakiri awọn atọka. 

Ni akoko kanna, wiwọn ati yiyipada awọn eto ti awọn iṣẹlẹ logstash ninu iṣupọ jẹ idiju nipasẹ otitọ pe o jẹ olupilẹṣẹ agbegbe, ati pe gbogbo awọn iṣe ni a ṣe pẹlu ọwọ (lati ṣafikun awọn opin tuntun, o jẹ dandan lati lọ pẹlu ọwọ gbogbo rẹ. awọn olupin ati docker-compose soke -d nibi gbogbo).

Wọle si pinpin

Ni Oṣu Kẹsan ti ọdun yii, a tun n ge monolith, ẹru ti o wa lori iṣupọ n pọ si, ati ṣiṣan awọn igi ti n sunmọ 30 ẹgbẹrun ifiranṣẹ fun iṣẹju kan. 

Bawo ni a ṣe ni CIAN tamed terabytes ti awọn log

A bẹrẹ aṣetunṣe atẹle pẹlu imudojuiwọn ohun elo kan. A yipada lati awọn alakoso marun si mẹta, rọpo awọn apa data ati gba ni awọn ofin ti owo ati aaye ipamọ. Fun awọn apa a lo awọn atunto meji: 

  • Fun awọn apa "gbona": E3-1270 v6 / 960Gb SSD / 32 Gb x 3 x 2 (3 fun Hot1 ati 3 fun Hot2).
  • Fun awọn apa “gbona”: E3-1230 v6 / 4Tb SSD / 32 Gb x 4.

Ni aṣetunṣe yii, a gbe itọka naa pẹlu awọn iwe iwọle ti awọn microservices, eyiti o gba aaye kanna bi awọn iwe nginx iwaju-laini, si ẹgbẹ keji ti awọn apa “gbona” mẹta. A tọju data bayi lori awọn apa “gbona” fun awọn wakati 20, ati lẹhinna gbe wọn lọ si awọn apa “gbona” si iyokù awọn akọọlẹ. 

A yanju iṣoro ti awọn atọka kekere ti o padanu nipa atunto iyipo wọn. Bayi awọn atọka ti yiyi ni gbogbo wakati 23 ni eyikeyi ọran, paapaa ti data kekere ba wa nibẹ. Eyi pọ si diẹ ninu nọmba awọn shards (o fẹrẹ to 800 ninu wọn), ṣugbọn lati oju-ọna ti iṣẹ iṣupọ o jẹ ifarada. 

Bi abajade, awọn “gbona” mẹfa wa ati awọn apa “gbona” mẹrin nikan ni iṣupọ naa. Eyi fa idaduro diẹ lori awọn ibeere lori awọn aaye arin igba pipẹ, ṣugbọn jijẹ nọmba awọn apa ni ọjọ iwaju yoo yanju iṣoro yii.

Yi aṣetunṣe tun ti o wa titi awọn isoro ti aini ti ologbele-laifọwọyi igbelosoke. Lati ṣe eyi, a gbe ohun amayederun iṣupọ Nomad - iru si ohun ti a ti gbe lọ tẹlẹ ni iṣelọpọ. Ni bayi, iye Logstash ko yipada laifọwọyi da lori fifuye, ṣugbọn a yoo wa si eyi.

Bawo ni a ṣe ni CIAN tamed terabytes ti awọn log

Eto fun ojo iwaju

Awọn iwọn iṣeto ni imuse ni pipe, ati ni bayi a tọju TB 13,3 ti data - gbogbo awọn akọọlẹ fun awọn ọjọ 4, eyiti o jẹ pataki fun itupalẹ pajawiri ti awọn itaniji. A ṣe iyipada diẹ ninu awọn akọọlẹ sinu awọn metiriki, eyiti a ṣafikun si Graphite. Lati jẹ ki iṣẹ awọn onimọ-ẹrọ rọrun, a ni awọn metiriki fun iṣupọ amayederun ati awọn iwe afọwọkọ fun atunṣe ologbele-laifọwọyi ti awọn iṣoro ti o wọpọ. Lẹhin jijẹ nọmba awọn apa data, eyiti a gbero fun ọdun to nbọ, a yoo yipada si ibi ipamọ data lati 4 si awọn ọjọ 7. Eyi yoo to fun iṣẹ ṣiṣe, nitori a nigbagbogbo gbiyanju lati ṣe iwadii awọn iṣẹlẹ ni kete bi o ti ṣee, ati fun awọn iwadii igba pipẹ data telemetry wa. 

Ni Oṣu Kẹwa ọdun 2019, ijabọ si cian.ru ti dagba tẹlẹ si awọn olumulo alailẹgbẹ 15,3 milionu fun oṣu kan. Eyi di idanwo pataki ti ojutu ayaworan fun jiṣẹ awọn igbasilẹ. 

Bayi a ngbaradi lati ṣe imudojuiwọn ElasticSearch si ẹya 7. Bibẹẹkọ, fun eyi a yoo ni lati ṣe imudojuiwọn aworan agbaye ti ọpọlọpọ awọn atọka ni ElasticSearch, niwọn bi wọn ti gbe lati ẹya 5.5 ati pe wọn ti kede bi a ti sọ silẹ ni ẹya 6 (wọn kan ko si tẹlẹ ninu ẹya. 7). Eyi tumọ si pe lakoko ilana imudojuiwọn yoo dajudaju iru agbara majeure, eyiti yoo fi wa silẹ laisi awọn akọọlẹ lakoko ti o ti yanju ọran naa. Ti ẹya 7, a n reti pupọ julọ si Kibana pẹlu wiwo ilọsiwaju ati awọn asẹ tuntun. 

A ṣaṣeyọri ibi-afẹde akọkọ wa: a dẹkun sisọnu awọn akọọlẹ ati dinku akoko isunmọ ti iṣupọ amayederun lati awọn ipadanu 2-3 ni ọsẹ kan si awọn wakati meji ti iṣẹ itọju fun oṣu kan. Gbogbo iṣẹ yii ni iṣelọpọ jẹ eyiti a ko rii. Sibẹsibẹ, ni bayi a le pinnu gangan ohun ti n ṣẹlẹ pẹlu iṣẹ wa, a le yara ṣe ni ipo idakẹjẹ ati maṣe yọ ara rẹ lẹnu pe awọn akọọlẹ yoo sọnu. Ni gbogbogbo, a ni itẹlọrun, idunnu ati ngbaradi fun awọn iṣamulo tuntun, eyiti a yoo sọrọ nipa nigbamii.

orisun: www.habr.com

Fi ọrọìwòye kun