HighLoad ++, Andrey Gushchin (Zabbix): àrd-choileanadh agus sgaradh dùthchasach

Seallaidh sinn air mar a bhios Zabbix ag obair leis an stòr-dàta TimescaleDB mar an deireadh-sheachdain. Seallaidh sinn dhut mar a thòisicheas tu bhon fhìor thoiseach agus mar a nì thu imrich bho PostgreSQL. Bheir sinn cuideachd seachad deuchainnean coileanaidh coimeasach air an dà rèiteachadh.

HighLoad ++, Andrey Gushchin (Zabbix): àrd-choileanadh agus sgaradh dùthchasach

HighLoad++ Siberia 2019. Talla Tomsk. 24 an t-Ògmhios, 16:00. tràchdais agus taisbeanadh. Thèid an ath cho-labhairt HighLoad ++ a chumail air 6 agus 7 Giblean, 2020 ann an St. Mion-fhiosrachadh agus tiogaidean Ceangal.

Andrey Gushchin (an dèidh seo - AG): - Tha mi nam innleadair taic theicnigeach ZABBIX (air an ainmeachadh an-seo mar “Zabbix”), trèanair. Tha mi air a bhith ag obair ann an taic theicnigeach airson còrr air 6 bliadhna agus tha eòlas dìreach air a bhith agam le coileanadh. An-diugh bruidhnidh mi mun choileanadh a dh'fhaodas TimescaleDB a thoirt seachad an coimeas ri PostgreSQL 10 cunbhalach. Cuideachd, pàirt tòiseachaidh mu mar a tha e ag obair san fharsaingeachd.

Prìomh dhùbhlain cinneasachd: bho chruinneachadh dàta gu glanadh dàta

An toiseach, tha cuid de dhùbhlain coileanaidh mu choinneamh gach siostam sgrùdaidh. Is e a’ chiad dùbhlan cinneasachd a bhith a’ cruinneachadh agus a’ giullachd dàta gu sgiobalta.

HighLoad ++, Andrey Gushchin (Zabbix): àrd-choileanadh agus sgaradh dùthchasach

Bu chòir do shiostam sgrùdaidh math a h-uile dàta fhaighinn gu sgiobalta, ann an deagh àm, a phròiseasadh a rèir abairtean brosnachaidh, is e sin, a phròiseasadh a rèir cuid de shlatan-tomhais (tha seo eadar-dhealaichte ann an diofar shiostaman) agus a shàbhaladh ann an stòr-dàta gus an dàta seo a chleachdadh anns an ri teachd.

HighLoad ++, Andrey Gushchin (Zabbix): àrd-choileanadh agus sgaradh dùthchasach

Is e an dàrna dùbhlan coileanaidh stòradh eachdraidh. Glèidh ann an stòr-dàta gu tric agus faigh cothrom luath is goireasach air na meatrach sin a chaidh a chruinneachadh thar ùine. Is e an rud as cudromaiche gu bheil an dàta seo goireasach ri fhaighinn, ga chleachdadh ann an aithisgean, grafaichean, brosnachaidhean, ann an cuid de luachan stairsnich, airson rabhaidhean, msaa.

HighLoad ++, Andrey Gushchin (Zabbix): àrd-choileanadh agus sgaradh dùthchasach

Is e an treas dùbhlan coileanaidh glanadh eachdraidh, is e sin, nuair a ruigeas tu an ìre far nach fheum thu tomhasan mionaideach a chaidh a chruinneachadh thar 5 bliadhna (eadhon mìosan no dà mhìos) a stòradh. Chaidh cuid de nodan lìonra a dhubhadh às, no cuid de luchd-aoigheachd, chan eil feum air na meatrach tuilleadh leis gu bheil iad seann-fhasanta mu thràth agus nach eil iad air an cruinneachadh tuilleadh. Feumar seo uile a ghlanadh gus nach fàs an stòr-dàta agad ro mhòr. San fharsaingeachd, is e fìor dheuchainn airson stòradh a th 'ann an eachdraidh glanaidh - gu tric bidh buaidh làidir aige air coileanadh.

Ciamar a gheibh thu fuasgladh air duilgheadasan caching?

Bruidhnidh mi a-nis gu sònraichte mu Zabbix. Ann an Zabbix, thèid a’ chiad agus an dàrna fios fhuasgladh le bhith a’ cleachdadh caching.

HighLoad ++, Andrey Gushchin (Zabbix): àrd-choileanadh agus sgaradh dùthchasach

Cruinneachadh agus giullachd dàta - Bidh sinn a’ cleachdadh RAM gus an dàta seo gu lèir a stòradh. Thèid an dàta seo a dheasbad nas mionaidiche a-nis.

Cuideachd air taobh an stòr-dàta tha beagan tasgadan airson prìomh thaghaidhean - airson grafaichean agus rudan eile.

A’ tasgadh air taobh frithealaiche Zabbix fhèin: tha ConfigurationCache, ValueCache, HistoryCache, TrendsCache againn. Dè th' ann?

HighLoad ++, Andrey Gushchin (Zabbix): àrd-choileanadh agus sgaradh dùthchasach

Is e ConfigurationCache am prìomh tasgadan anns am bi sinn a’ stòradh metrics, luchd-aoigheachd, nithean dàta, brosnachaidhean; a h-uile dad a dh’ fheumas tu gus ro-phròiseasadh a phròiseasadh, dàta a chruinneachadh, cò na h-aoighean a chruinnicheas iad, dè cho tric. Tha seo uile air a stòradh ann an ConfigurationCache gus nach tèid thu chun stòr-dàta agus gus ceistean neo-riatanach a chruthachadh. Às deidh don fhrithealaiche tòiseachadh, bidh sinn ag ùrachadh an tasgadan seo (cruthaich e) agus ga ùrachadh bho àm gu àm (a rèir nan roghainnean rèiteachaidh).

HighLoad ++, Andrey Gushchin (Zabbix): àrd-choileanadh agus sgaradh dùthchasach

A 'tasgadh ann an Zabbix. Cruinneachadh dàta

An seo tha an diagram gu math mòr:

HighLoad ++, Andrey Gushchin (Zabbix): àrd-choileanadh agus sgaradh dùthchasach

Is e na prìomh fheadhainn san sgeama na luchd-cruinneachaidh seo:

HighLoad ++, Andrey Gushchin (Zabbix): àrd-choileanadh agus sgaradh dùthchasach

Is iad sin na pròiseasan cruinneachaidh iad fhèin, diofar “luchd-bhòtaidh” air a bheil uallach airson diofar sheòrsaichean co-chruinneachaidhean. Bidh iad a’ cruinneachadh dàta tro icmp, ipmi, agus diofar phròtacalan agus ga ghluasad gu ro-phròiseasadh.

Tasgadh eachdraidh ro-phròiseas

Cuideachd, ma tha sinn air eileamaidean dàta obrachadh a-mach (tha fios aig an fheadhainn a tha eòlach air Zabbix), is e sin, air a thomhas, eileamaidean dàta cruinneachaidh, bidh sinn gan toirt gu dìreach bho ValueCache. Innsidh mi dhut mar a thèid a lìonadh nas fhaide air adhart. Bidh na luchd-cruinneachaidh sin uile a’ cleachdadh ConfigurationCache gus na h-obraichean aca fhaighinn agus an uairsin gan toirt seachad gu ro-phròiseasadh.

HighLoad ++, Andrey Gushchin (Zabbix): àrd-choileanadh agus sgaradh dùthchasach

Bidh preprocessing cuideachd a’ cleachdadh ConfigurationCache gus ceumannan ro-ghiollachd fhaighinn agus gus an dàta seo a phròiseasadh ann an diofar dhòighean. A’ tòiseachadh bho dhreach 4.2, tha sinn air a ghluasad gu neach-ionaid. Tha seo gu math goireasach, oir tha ro-phròiseasadh fhèin na ghnìomhachd caran duilich. Agus ma tha Zabbix glè mhòr agad, le àireamh mhòr de eileamaidean dàta agus tricead cruinneachaidh àrd, bidh seo gu mòr a ’sìmpleachadh na h-obrach.

A rèir sin, às deidh dhuinn an dàta seo a phròiseasadh ann an dòigh air choireigin a’ cleachdadh ro-phròiseasadh, bidh sinn ga shàbhaladh ann an HistoryCache gus a phròiseasadh nas fhaide. Tha seo a’ crìochnachadh cruinneachadh an dàta. Bidh sinn a 'dol air adhart chun a' phrìomh phròiseas.

Obair syncer eachdraidh

HighLoad ++, Andrey Gushchin (Zabbix): àrd-choileanadh agus sgaradh dùthchasach

Is e am prìomh phròiseas ann an Zabbix (leis gur e ailtireachd monolithic a th’ ann) sioncranachadh Eachdraidh. Is e seo am prìomh phròiseas a tha a’ dèiligeadh gu sònraichte ri giullachd atamach gach eileamaid dàta, is e sin, gach luach:

  • thig an luach (bidh e ga thoirt bho HistoryCache);
  • seicichean ann an sioncranachadh Configuration: whether there are any triggers for calculation - calculations them;
    ma tha - a 'cruthachadh thachartasan, a' cruthachadh àrdachadh gus rabhadh a chruthachadh, ma tha sin riatanach a rèir an rèiteachaidh;
  • clàran brosnachaidhean airson giollachd às deidh sin, cruinneachadh; ma chruinnicheas tu thairis air an uair mu dheireadh agus mar sin air adhart, tha an luach seo air a chuimhneachadh le ValueCache gus nach tèid thu chun chlàr eachdraidh; Mar sin, tha an ValueCache air a lìonadh leis an dàta riatanach a tha riatanach gus obrachadh a-mach luchd-brosnachaidh, eileamaidean àireamhaichte, msaa;
  • an uairsin bidh eachdraidh sioncranachaidh a’ sgrìobhadh a h-uile dàta chun stòr-dàta;
  • bidh an stòr-dàta gan sgrìobhadh gu diosc - seo far a bheil am pròiseas giollachd a’ tighinn gu crìch.

Stòr-dàta. Tasgaidh

Air taobh an stòr-dàta, nuair a tha thu airson grafaichean no aithisgean air tachartasan fhaicinn, tha diofar caches ann. Ach anns an aithisg seo cha bhith mi a’ bruidhinn mun deidhinn.

Airson MySQL tha Innodb_buffer_pool, agus dòrlach de caches eadar-dhealaichte a ghabhas rèiteachadh cuideachd.
Ach is iad seo na prìomh fheadhainn:

  • co-roinnte_buffers;
  • èifeachdach_cache_size;
  • roinnte_pool.

HighLoad ++, Andrey Gushchin (Zabbix): àrd-choileanadh agus sgaradh dùthchasach

Airson a h-uile stòr-dàta, thuirt mi gu bheil cuid de caches ann a leigeas leat an dàta a tha a dhìth gu tric airson ceistean a stòradh ann an RAM. Tha na teicneòlasan aca fhèin airson seo.

Mu Choileanadh Stòr-dàta

A rèir sin, tha àrainneachd farpaiseach ann, is e sin, bidh an frithealaiche Zabbix a ’tional dàta agus ga chlàradh. Nuair a thèid ath-thòiseachadh, bidh e cuideachd a 'leughadh bho eachdraidh gus an ValueCache a lìonadh agus mar sin air adhart. An seo faodaidh tu sgriobtaichean agus aithisgean a bhith agad a chleachdas an Zabbix API, a tha stèidhichte air eadar-aghaidh lìn. Bidh Zabbix API a ’dol a-steach don stòr-dàta agus a’ faighinn an dàta riatanach gus grafaichean, aithisgean, no liosta de sheòrsa air choreigin fhaighinn, duilgheadasan o chionn ghoirid.

HighLoad ++, Andrey Gushchin (Zabbix): àrd-choileanadh agus sgaradh dùthchasach

Cuideachd is e fuasgladh fradharc mòr-chòrdte Grafana, a bhios ar luchd-cleachdaidh a’ cleachdadh. Comasach air logadh a-steach gu dìreach an dà chuid tro API Zabbix agus tron ​​​​stòr-dàta. Bidh e cuideachd a ’cruthachadh farpais sònraichte airson dàta fhaighinn: tha feum air gleusadh nas fheàrr agus nas fheàrr air an stòr-dàta gus gèilleadh ri lìbhrigeadh luath de thoraidhean agus deuchainn.

HighLoad ++, Andrey Gushchin (Zabbix): àrd-choileanadh agus sgaradh dùthchasach

A 'glanadh eachdraidh. Tha Fear-taighe aig Zabbix

Tha an treas gairm a thathas a 'cleachdadh ann an Zabbix a' glanadh eachdraidh a 'cleachdadh Neach-gleidhidh Taighe. Bidh neach-gleidhidh taighe a’ leantainn a h-uile suidheachadh, is e sin, tha na h-eileamaidean dàta againn a’ nochdadh dè cho fada airson stòradh (ann an làithean), dè cho fada airson gluasadan a stòradh, agus daineamaigs atharrachaidhean.

Cha do bhruidhinn mi mu dheidhinn TrendCache, a bhios sinn ag obrachadh a-mach air an itealan: bidh dàta a’ ruighinn, bidh sinn ga chruinneachadh airson uair a thìde (mar as trice tha iad sin nan àireamhan airson an uair mu dheireadh), tha an t-suim cuibheasach / as ìsle agus bidh sinn ga chlàradh uair san uair anns an clàr air dinamics nan atharrachaidhean (“Trends”) . Bidh “Housekeeper” a’ tòiseachadh agus a’ sguabadh às dàta bhon stòr-dàta a’ cleachdadh taghaidhean cunbhalach, rud nach eil an-còmhnaidh èifeachdach.

Ciamar a thuigsinn gu bheil e neo-èifeachdach? Chì thu an dealbh a leanas air grafaichean coileanaidh pròiseasan taobh a-staigh:

HighLoad ++, Andrey Gushchin (Zabbix): àrd-choileanadh agus sgaradh dùthchasach

Tha an sioncradair Eachdraidh agad an-còmhnaidh trang (graf dearg). Agus an graf “dearg” a tha a’ dol air a’ mhullach. 'S e seo "Housekeeper" a thòisicheas agus a 'feitheamh gus an stòr-dàta a sguabadh às a h-uile sreath a tha e air a shònrachadh.

Gabhaidh sinn beagan ID Nì: feumaidh tu na 5 mìle mu dheireadh a dhubhadh às; gu dearbh, le clàran-amais. Ach mar as trice tha an dàta gu math mòr - bidh an stòr-dàta fhathast ga leughadh bhon diosc agus ga chuir a-steach don tasgadan, agus is e obair gu math daor a tha seo airson an stòr-dàta. A rèir a mheud, faodaidh seo leantainn gu cuid de dhuilgheadasan coileanaidh.

Faodaidh tu Neach-gleidhidh Taighe a chuir dheth ann an dòigh shìmplidh - tha eadar-aghaidh lìn eòlach againn. Suidhichidhean ann an Rianachd coitcheann (shuidheachaidhean airson “Housekeeper”) bidh sinn a’ cuir casg air cumail taighe a-staigh airson eachdraidh agus gluasadan a-staigh. Mar sin, chan eil an Neach-gleidhidh a’ cumail smachd air seo tuilleadh:

HighLoad ++, Andrey Gushchin (Zabbix): àrd-choileanadh agus sgaradh dùthchasach

Dè as urrainn dhut a dhèanamh an ath rud? Chuir thu dheth e, tha na grafaichean agad air a dhol sìos... Dè na duilgheadasan eile a dh'fhaodadh èirigh sa chùis seo? Dè as urrainn cuideachadh?

sgaradh (roinn)

Mar as trice tha seo air a rèiteachadh ann an dòigh eadar-dhealaichte air gach stòr-dàta dàimh a tha mi air a liostadh. Tha an teicneòlas fhèin aig MySQL. Ach san fharsaingeachd tha iad glè choltach nuair a thig e gu PostgreSQL 10 agus MySQL. Gu dearbh, tha mòran eadar-dhealachaidhean taobh a-staigh ann a thaobh mar a tha e uile air a bhuileachadh agus mar a bheir e buaidh air coileanadh. Ach san fharsaingeachd, bidh cruthachadh sgaradh ùr gu tric a 'leantainn gu duilgheadasan sònraichte.

HighLoad ++, Andrey Gushchin (Zabbix): àrd-choileanadh agus sgaradh dùthchasach

A rèir an t-suidheachaidh agad (cia mheud dàta a chruthaicheas tu ann an aon latha), mar as trice bidh iad a ’suidheachadh an ìre as ìsle - is e seo 1 latha / baidse, agus airson“ gluasadan ”, daineamaigs atharrachaidhean - 1 mìos / baidse ùr. Dh’ fhaodadh seo atharrachadh ma tha suidheachadh glè mhòr agad.

Canaidh sinn sa bhad mu mheud an t-suidheachaidh: suas ri 5 mìle luachan ùra gach diog (ris an canar nvps) - bidh seo air a mheas mar “shuidheachadh” beag. Cuibheasach - bho 5 gu 25 mìle luachan gach dàrna. Tha a h-uile rud gu h-àrd mar-thà mar ionadan mòra agus glè mhòr a dh ’fheumas rèiteachadh gu math faiceallach den stòr-dàta.

Air ionadan fìor mhòr, is dòcha nach bi 1 latha cho math. Tha mi gu pearsanta air sgaraidhean fhaicinn air MySQL de 40 gigabytes gach latha (agus is dòcha gu bheil barrachd ann). 'S e seo àireamh mhòr de dhàta, a dh'fhaodadh leantainn gu cuid de dhuilgheadasan. Feumaidh e bhith air a lùghdachadh.

Carson a tha feum agad air sgaradh?

Is e na tha Partitioning a ’toirt seachad, tha mi a’ smaoineachadh a tha fios aig a h-uile duine, is e sgaradh bùird. Gu tric is e faidhlichean fa leth a tha seo air diosc agus iarrtasan rèis. Bidh e a’ taghadh aon sgaradh nas fheàrr ma tha e na phàirt de sgaradh àbhaisteach.

HighLoad ++, Andrey Gushchin (Zabbix): àrd-choileanadh agus sgaradh dùthchasach

Airson Zabbix, gu sònraichte, tha e air a chleachdadh le raon, a rèir raon, is e sin, bidh sinn a’ cleachdadh stampa-ama (àireamh cunbhalach, ùine bho thoiseach na h-ùine). Bidh thu a’ sònrachadh toiseach an latha/deireadh an latha, agus seo an sgaradh. Mar sin, ma tha thu ag iarraidh dàta a tha dà latha a dh'aois, thèid a h-uile càil a thoirt air ais bhon stòr-dàta nas luaithe, oir chan fheum thu ach aon fhaidhle a luchdachadh a-steach don tasgadan agus a thilleadh (seach clàr mòr).

HighLoad ++, Andrey Gushchin (Zabbix): àrd-choileanadh agus sgaradh dùthchasach

Bidh mòran stòran-dàta cuideachd a’ luathachadh cuir a-steach (cuir a-steach ann an aon chlàr cloinne). Tha mi a’ bruidhinn eas-chruthach airson a-nis, ach tha seo comasach cuideachd. Bidh partadh gu tric na chuideachadh.

Elasticsearch airson NoSQL

O chionn ghoirid, ann an 3.4, chuir sinn fuasgladh NoSQL an gnìomh. Chuir sinn ris a’ chomas sgrìobhadh ann an Elasticsearch. Faodaidh tu seòrsaichean sònraichte a sgrìobhadh: bidh thu a’ taghadh - an dàrna cuid a’ sgrìobhadh àireamhan no cuid de shoidhnichean; tha teacs sreang againn, faodaidh tu logaichean a sgrìobhadh gu Elasticsearch... Mar sin, gheibh an eadar-aghaidh lìn cothrom air Elasticsearch cuideachd. Bidh seo ag obair gu math ann an cuid de chùisean, ach aig an àm seo faodar a chleachdadh.

HighLoad ++, Andrey Gushchin (Zabbix): àrd-choileanadh agus sgaradh dùthchasach

Raon-amaDB. Clàran àrd

Airson 4.4.2 thug sinn aire do aon rud mar TimescaleDB. Dè th' ann? Is e leudachadh a tha seo airson PostgreSQL, is e sin, tha eadar-aghaidh dùthchasach PostgreSQL aige. A bharrachd air an sin, leigidh an leudachadh seo leat obrachadh mòran nas èifeachdaiche le dàta sreath ùine agus sgaradh fèin-ghluasadach. Cò ris a tha e coltach:

HighLoad ++, Andrey Gushchin (Zabbix): àrd-choileanadh agus sgaradh dùthchasach

Tha seo hypertable - tha a leithid de bhun-bheachd ann an Clàr-ama. Is e seo hypertable a chruthaicheas tu, agus tha cnapan ann. Is e sgaraidhean a th’ ann an cnapan, is iad sin bùird cloinne, mura h-eil mi ceàrr. Tha e fìor èifeachdach.

HighLoad ++, Andrey Gushchin (Zabbix): àrd-choileanadh agus sgaradh dùthchasach

Raon-amaDB agus PostgreSQL

Mar a tha an luchd-saothrachaidh TimescaleDB a’ dèanamh cinnteach, bidh iad a’ cleachdadh algairim nas ceart airson a bhith a’ giullachd cheistean, gu sònraichte cuir a-steach, a leigeas leotha coileanadh timcheall air seasmhach a bhith aca le meud an t-seata dàta a tha a’ sìor fhàs. Is e sin, às deidh 200 millean sreath de Postgres, bidh am fear àbhaisteach a ’tòiseachadh a’ sag gu mòr agus a ’call coileanadh gu litearra gu neoni, fhad‘ s a tha Clàr-ama a ’toirt cothrom dhut cuir a-steach cho èifeachdach sa ghabhas le tomhas sam bith de dhàta.

HighLoad ++, Andrey Gushchin (Zabbix): àrd-choileanadh agus sgaradh dùthchasach

Mar a stàlaicheas tu TimescaleDB? Tha e sìmplidh!

Tha e anns na sgrìobhainnean, tha e air a mhìneachadh - faodaidh tu a stàladh bho phasganan airson gin ... Tha e an urra ri pasganan oifigeil Postgres. Faodar a chur ri chèile le làimh. Tha e mar sin a thachair gun robh agam ri cur ri chèile airson an stòr-dàta.

HighLoad ++, Andrey Gushchin (Zabbix): àrd-choileanadh agus sgaradh dùthchasach

Air Zabbix bidh sinn dìreach a ’gnìomhachadh Extention. Tha mi a’ smaoineachadh gun robh an fheadhainn a chleachd Leudachadh ann am Postgres... Tha thu dìreach a’ cuir an gnìomh Extention, cruthaich e airson an stòr-dàta Zabbix a tha thu a’ cleachdadh.

Agus an ceum mu dheireadh ...

Raon-amaDB. Imrich clàran eachdraidh

Feumaidh tu hypertable a chruthachadh. Tha gnìomh sònraichte ann airson seo - Cruthaich hypertable. Ann, is e a 'chiad paramadair an clàr a tha a dhìth anns an stòr-dàta seo (airson a bheil feum agad air hypertable a chruthachadh).

HighLoad ++, Andrey Gushchin (Zabbix): àrd-choileanadh agus sgaradh dùthchasach

An raon airson cruthachadh, agus chunk_time_interval (seo an eadar-ama de phìosan (pàirtean a dh’ fheumar a chleachdadh). Tha 86 aon latha.

Migrate_data parameter: Ma chuireas tu a-steach gu fìor, gluaisidh seo a h-uile dàta làithreach gu pìosan a chaidh a chruthachadh ro-làimh.

Tha mi air migrate_data a chleachdadh mi fhìn - bheir e beagan ùine, a rèir dè cho mòr sa tha an stòr-dàta agad. Bha còrr air terabyte agam - thug e còrr air uair a thìde airson cruthachadh. Ann an cuid de chùisean, rè deuchainn, chuir mi às dàta eachdraidheil airson teacsa (history_text) agus sreang (history_str) gus nach gluais iad iad - cha robh iad gu math inntinneach dhomh.

Agus bidh sinn a’ dèanamh an ùrachadh mu dheireadh nar db_extention: bidh sinn a’ stàladh timescaledb gus am bi an stòr-dàta agus, gu sònraichte, ar Zabbix a’ tuigsinn gu bheil db_extention ann. Bidh e ga ghnìomhachadh agus a’ cleachdadh an co-chòrdadh ceart agus ceistean chun an stòr-dàta, a’ cleachdadh na “feartan” sin a tha riatanach airson TimescaleDB.

Rèiteachadh an fhrithealaiche

Chleachd mi dà fhrithealaiche. Is e inneal brìgheil beag a th ’anns a’ chiad fhrithealaiche, 20 pròiseasar, 16 gigabytes de RAM. Stèidhich mi Postgres 10.8 air:

HighLoad ++, Andrey Gushchin (Zabbix): àrd-choileanadh agus sgaradh dùthchasach

B’ e Debian an siostam-obrachaidh, b’ e xfs an siostam faidhle. Rinn mi glè bheag de shuidheachaidhean airson an stòr-dàta sònraichte seo a chleachdadh, às aonais na chleachdas Zabbix fhèin. Air an aon inneal bha frithealaiche Zabbix, PostgreSQL agus riochdairean luchdan.

HighLoad ++, Andrey Gushchin (Zabbix): àrd-choileanadh agus sgaradh dùthchasach

Tha mi air 50 àidseantan gnìomhach a chleachdadh a bhios a’ cleachdadh LoadableModule gus diofar thoraidhean a ghineadh gu sgiobalta. Is iadsan an fheadhainn a chruthaich na teudan, na h-àireamhan, agus mar sin air adhart. Lìon mi an stòr-dàta le tòrr dàta. An toiseach, bha 5 mìle eileamaid dàta anns an rèiteachadh airson gach aoigh, agus bha inneal-brosnachaidh timcheall air gach eileamaid dàta - gus am biodh seo na fhìor shuidheachadh. Aig amannan feumaidh tu eadhon barrachd air aon inneal-brosnachaidh airson a chleachdadh.

HighLoad ++, Andrey Gushchin (Zabbix): àrd-choileanadh agus sgaradh dùthchasach

Rinn mi riaghladh air an eadar-ama ùrachaidh agus an luchd fhèin le bhith chan ann a-mhàin a’ cleachdadh 50 àidseantan (a’ cur barrachd ris), ach cuideachd a’ cleachdadh eileamaidean dàta fiùghantach agus a’ lughdachadh an eadar-ama ùrachaidh gu 4 diogan.

Deuchainn coileanaidh. PostgreSQL: 36 mìle NVP

Bha a’ chiad fhoillseachadh, a’ chiad stèidheachadh a bh’ agam air PostreSQL 10 fìor air a’ bhathar-cruaidh seo (35 mìle luach gach diog). San fharsaingeachd, mar a chì thu air an sgrion, bheir cuir a-steach dàta bloighean diog - tha a h-uile dad math agus luath, draibhearan SSD (200 gigabytes). Is e an aon rud gu bheil 20 GB a’ lìonadh gu math luath.

HighLoad ++, Andrey Gushchin (Zabbix): àrd-choileanadh agus sgaradh dùthchasach

Bidh tòrr ghrafaichean mar sin ann san àm ri teachd. Is e seo deas-bhòrd coileanaidh frithealaiche Zabbix àbhaisteach.

HighLoad ++, Andrey Gushchin (Zabbix): àrd-choileanadh agus sgaradh dùthchasach

Is e a 'chiad ghraf an àireamh de luachan gach diog (gorm, clì gu h-àrd), 35 mìle luachan sa chùis seo. Is e seo (meadhan àrd) luchdachadh phròiseasan togail, agus is e seo (gu h-àrd air an làimh dheis) luchdachadh phròiseasan a-staigh: sioncronaich eachdraidh agus bean-taighe, a tha an seo (meadhan bun) air a bhith a’ ruith airson ùine mhòr.

Tha an graf seo (meadhan bun) a’ sealltainn cleachdadh ValueCache - cia mheud a bhuaileas ValueCache airson luchd-brosnachaidh (grunn mhìltean luachan gach diog). Is e graf cudromach eile an ceathramh fear (clì gu h-ìosal), a sheallas cleachdadh HistoryCache, air an do bhruidhinn mi, a tha na bhufair mus cuir thu a-steach don stòr-dàta.

Deuchainn coileanaidh. PostgreSQL: 50 mìle NVP

An uairsin, mheudaich mi an luchd gu 50 mìle luachan gach diog air an aon bhathar-cruaidh. Nuair a chaidh a luchdachadh le Neach-gleidhidh Taighe, chaidh 10 mìle luachan a chlàradh ann an 2-3 diogan le àireamhachadh. Dè, gu dearbh, a tha air a shealltainn anns an screenshot a leanas:

HighLoad ++, Andrey Gushchin (Zabbix): àrd-choileanadh agus sgaradh dùthchasach

Tha “neach-gleidhidh taighe” mu thràth a ’tòiseachadh a’ cur bacadh air obair, ach san fharsaingeachd, tha an luchd air luchd-glacaidh eachdraidh fhathast aig ìre 60% (treas graf, gu h-àrd air an làimh dheis). HistoryCache mar-thà a 'tòiseachadh a' lìonadh gu gnìomhach fhad 'sa tha bean-taighe a' ruith (gu h-ìosal air an làimh chlì). Bha e mu leth gigabyte, 20% làn.

HighLoad ++, Andrey Gushchin (Zabbix): àrd-choileanadh agus sgaradh dùthchasach

Deuchainn coileanaidh. PostgreSQL: 80 mìle NVP

An uairsin mheudaich mi e gu 80 mìle luachan gach diog:

HighLoad ++, Andrey Gushchin (Zabbix): àrd-choileanadh agus sgaradh dùthchasach

Bha e timcheall air 400 mìle eileamaidean dàta, 280 mìle brosnachaidh. Bha an cuir a-steach, mar a chì thu, a thaobh an luchd de sinkers eachdraidh (bha 30 dhiubh ann) gu math àrd mar-thà. An uairsin mheudaich mi diofar pharaimearan: sinkers eachdraidh, tasgadan ... Air a ’bhathar-cruaidh seo, thòisich an luchd air sinkers eachdraidh a’ dol suas chun ìre as àirde, cha mhòr “air an sgeilp” - a rèir sin, chaidh HistoryCache a-steach do luchd glè àrd:

HighLoad ++, Andrey Gushchin (Zabbix): àrd-choileanadh agus sgaradh dùthchasach

Fad na h-ùine seo rinn mi sùil air paramadairean an t-siostaim gu lèir (mar a tha am pròiseasar air a chleachdadh, RAM) agus fhuair mi a-mach gu robh cleachdadh diosc aig a ’char as àirde - choilean mi an comas as motha den diosc seo air a’ bhathar-cruaidh seo, air an inneal brìgheil seo. Thòisich "Postgres" a 'dumpadh dàta gu gnìomhach cho dian, agus cha robh ùine aig an diosg a sgrìobhadh, a leughadh ...

HighLoad ++, Andrey Gushchin (Zabbix): àrd-choileanadh agus sgaradh dùthchasach

Ghabh mi frithealaiche eile aig an robh pròiseasairean 48 mu thràth agus 128 gigabytes de RAM:

HighLoad ++, Andrey Gushchin (Zabbix): àrd-choileanadh agus sgaradh dùthchasach

Rinn mi “gleusadh” air cuideachd - chuir mi a-steach History syncer (60 pìosan) agus choilean mi coileanadh iomchaidh. Gu dearbh, chan eil sinn “air an sgeilp,” ach is dòcha gur e seo crìoch cinneasachd, far a bheil e riatanach rudeigin a dhèanamh mu dheidhinn.

Deuchainn coileanaidh. Raon-amaDB: 80 mìle NVP

B’ e mo phrìomh obair TimescaleDB a chleachdadh. Tha gach graf a’ sealltainn dip:

HighLoad ++, Andrey Gushchin (Zabbix): àrd-choileanadh agus sgaradh dùthchasach

Tha na fàilligidhean sin dìreach mar imrich dàta. Às deidh sin, anns an t-seirbheisiche Zabbix, dh’ atharraich ìomhaigh luchdaidh sinkers eachdraidh, mar a chì thu, gu mòr. Leigidh e leat dàta a chuir a-steach cha mhòr 3 tursan nas luaithe agus nas lugha de HistoryCache a chleachdadh - a rèir sin, bidh dàta agad air a lìbhrigeadh ann an àm. A-rithist, tha 80 mìle luachan gach dàrna ìre gu math àrd (gu dearbh, chan ann airson Yandex). Gu h-iomlan is e suidheachadh meadhanach mòr a tha seo, le aon fhrithealaiche.

Deuchainn coileanaidh PostgreSQL: 120 mìle NVP

An uairsin, mheudaich mi luach an àireamh de eileamaidean dàta gu leth mhillean agus fhuair mi luach àireamhaichte de 125 mìle gach diog:

HighLoad ++, Andrey Gushchin (Zabbix): àrd-choileanadh agus sgaradh dùthchasach

Agus fhuair mi na grafaichean seo:

HighLoad ++, Andrey Gushchin (Zabbix): àrd-choileanadh agus sgaradh dùthchasach

Ann am prionnsabal, is e suidheachadh obrach a tha seo, faodaidh e obrachadh airson ùine mhòr. Ach leis nach robh agam ach diosc 1,5 terabyte, chleachd mi e ann an latha no dhà. Is e an rud as cudromaiche gun deach sgaraidhean ùra a chruthachadh aig an aon àm air TimescaleDB, agus bha seo gu tur gun mhothachadh airson coileanadh, nach urrainnear a ràdh mu MySQL.

Mar as trice, bidh sgaraidhean air an cruthachadh air an oidhche, oir mar as trice bidh seo a’ bacadh cuir a-steach agus ag obair le bùird agus faodaidh e leantainn gu truailleadh na seirbheis. Anns a 'chùis seo chan eil seo fìor! B’ e am prìomh obair comasan TimescaleDB a dhearbhadh. B 'e an toradh am figear a leanas: 120 mìle luachan gach diog.

Tha eisimpleirean anns a’ choimhearsnachd cuideachd:

HighLoad ++, Andrey Gushchin (Zabbix): àrd-choileanadh agus sgaradh dùthchasach

Thionndaidh an neach cuideachd air TimescaleDB agus thuit an luchd air cleachdadh io.weight air a’ phròiseasar; agus tha cleachdadh eileamaidean pròiseas a-staigh cuideachd air a dhol sìos mar thoradh air a bhith a’ toirt a-steach TimescaleDB. A bharrachd air an sin, is e diosgan pancake àbhaisteach a tha seo, is e sin, inneal brìgheil àbhaisteach air diosgan àbhaisteach (chan e SSDs)!

Airson cuid de shuidheachaidhean beaga a tha cuingealaichte le coileanadh diosc, tha TimescaleDB, nam bheachd-sa, na fhuasgladh fìor mhath. Leigidh e leat leantainn air adhart ag obair mus gluais thu gu bathar-cruaidh nas luaithe airson an stòr-dàta.

Tha mi a 'toirt cuireadh dhut uile gu na tachartasan againn: Co-labhairt ann am Moscow, Summit ann an Riga. Cleachd na seanailean againn - Telegram, fòram, IRC. Ma tha ceist sam bith agad, thig chun deasg againn, is urrainn dhuinn bruidhinn mu dheidhinn a h-uile dad.

Ceistean Luchd-amais

Ceist bhon luchd-èisteachd (an-seo - A): - Ma tha TimescaleDB cho furasta a rèiteachadh, agus gu bheil e a’ toirt àrdachadh coileanaidh mar sin, is dòcha gum bu chòir seo a chleachdadh mar chleachdadh as fheàrr airson Zabbix a rèiteachadh le Postgres? Agus a bheil duilgheadasan agus eas-bhuannachdan aig an fhuasgladh seo, no às deidh a h-uile càil, ma cho-dhùin mi Zabbix a dhèanamh dhomh fhìn, is urrainn dhomh Postgres a ghabhail gu furasta, clàr-ama a chuir a-steach an sin sa bhad, a chleachdadh agus gun a bhith a’ smaoineachadh mu dhuilgheadasan sam bith?

HighLoad ++, Andrey Gushchin (Zabbix): àrd-choileanadh agus sgaradh dùthchasach

AG: - Tha, chanainn gur e moladh math a tha seo: cleachd Postgres sa bhad leis an leudachadh TimescaleDB. Mar a thuirt mi mu thràth, mòran de lèirmheasan math, a dh'aindeoin gu bheil an "feart" seo deuchainneach. Ach gu dearbh tha deuchainnean a’ sealltainn gur e fuasgladh math a tha seo (le TimescaleDB) agus tha mi a’ smaoineachadh gun tig e air adhart! Tha sinn a’ cumail sùil air mar a leasaicheas an leudachadh seo agus nì sinn atharrachaidhean mar a dh’ fheumar.

Eadhon aig àm leasachaidh, bha sinn an urra ri aon de na “feartan” ainmeil aca: bha e comasach obrachadh le pìosan beagan eadar-dhealaichte. Ach an uairsin gheàrr iad a-mach e san ath fhoillseachadh, agus bha againn ri stad a bhith an urra ris a’ chòd seo. Tha mi a’ moladh am fuasgladh seo a chleachdadh air iomadh suidheachadh. Ma chleachdas tu MySQL... Airson rèiteachaidhean cuibheasach, bidh fuasgladh sam bith ag obair gu math.

A: - Air na grafaichean mu dheireadh bhon choimhearsnachd, bha graf ann le “Housekeeper”:

HighLoad ++, Andrey Gushchin (Zabbix): àrd-choileanadh agus sgaradh dùthchasach

Lean e air ag obair. Dè a bhios Neach-gleidhidh Taighe a’ dèanamh le TimescaleDB?

AG: - A-nis chan urrainn dhomh a ràdh le cinnt - seallaidh mi ris a’ chòd agus innsidh mi dhut nas mionaidiche. Bidh e a’ cleachdadh cheistean TimescaleDB gun a bhith a’ sguabadh às pìosan, ach airson an cruinneachadh ann an dòigh air choireigin. Chan eil mi deiseil airson a’ cheist theicnigeach seo a fhreagairt fhathast. Gheibh sinn a-mach barrachd aig an stand an-diugh neo a-màireach.

A: – Tha ceist coltach ris agam – mu choileanadh an obrachaidh sguabaidh às ann an Clàr-ama.
A (freagairt bhon luchd-èisteachd): - Nuair a sguabas tu às dàta bho bhòrd, ma nì thu e tro dhubhadh às, feumaidh tu a dhol tron ​​​​bhòrd - cuir às, glan, comharraich a h-uile dad airson falamh san àm ri teachd. Ann an Clàr-ama, leis gu bheil cnapan agad, faodaidh tu tuiteam. Gu ìre mhòr, tha thu dìreach ag innse don fhaidhle a tha ann an dàta mòr: “Sguab às!”

Tha clàr-ama dìreach a’ tuigsinn nach eil cnap mar sin ann tuilleadh. Agus leis gu bheil e air fhilleadh a-steach don dealbhaiche ceiste, bidh e a’ cleachdadh dubhan gus na cumhaichean agad a ghlacadh ann an gnìomhachd taghte no gnìomhachd eile agus tuigidh sa bhad nach eil am pìos seo ann tuilleadh - “Cha tèid mi ann tuilleadh!” (dàta nach eil ri fhaighinn). Sin e! Is e sin, thèid cuir às do fhaidhlichean dà-chànanach an àite scan bùird, agus mar sin tha e luath.

A: - Tha sinn mu thràth air suathadh air cuspair neo-SQL. Cho fad ‘s a tha mi a’ tuigsinn, chan fheum Zabbix an dàta atharrachadh, agus tha seo uile rudeigin mar log. A bheil e comasach stòran-dàta sònraichte a chleachdadh nach urrainn an dàta aca atharrachadh, ach aig an aon àm sàbhail, cruinneachadh, agus sgaoileadh mòran nas luaithe - Clickhouse, mar eisimpleir, rudeigin coltach ri Kafka?.. Tha Kafka cuideachd na log! A bheil e comasach an aonachadh ann an dòigh air choreigin?

AG: - Faodar an luchdachadh sìos a dhèanamh. Tha “feart” sònraichte againn bho dhreach 3.4: faodaidh tu a h-uile faidhle eachdraidheil, tachartas, a h-uile càil eile a sgrìobhadh gu faidhlichean; agus an uairsin cuir gu stòr-dàta sam bith eile a’ cleachdadh inneal-làimhseachaidh. Gu dearbh, bidh mòran dhaoine ag ath-obair agus a’ sgrìobhadh gu dìreach chun stòr-dàta. Air an itealan, bidh sinicearan eachdraidh a 'sgrìobhadh seo gu lèir ann am faidhlichean, a' cuairteachadh na faidhlichean sin, agus mar sin air adhart, agus faodaidh tu seo a ghluasad gu Clickhouse. Chan urrainn dhomh a ràdh mu phlanaichean, ach is dòcha gun lean tuilleadh taic airson fuasglaidhean NoSQL (leithid Clickhouse).

A: - San fharsaingeachd, tha e coltach gum faigh thu cuidhteas postgres gu tur?

AG: - Gu dearbh, is e am pàirt as duilghe ann an Zabbix na clàran eachdraidheil, a chruthaicheas na duilgheadasan agus na tachartasan as motha. Anns a 'chùis seo, mura h-eil thu a' stòradh thachartasan airson ùine mhòr agus a 'stòradh na h-eachdraidh le gluasadan ann an stòradh luath eile, an uairsin san fharsaingeachd, tha mi a' smaoineachadh, cha bhi duilgheadasan ann.

A: - An urrainn dhut tuairmse a dhèanamh air dè cho luath ‘s a dh’ obraicheas a h-uile càil ma thionndaidheas tu gu Clickhouse, mar eisimpleir?

AG: - Cha do rinn mi deuchainn air. Tha mi a’ smaoineachadh gun gabh co-dhiù na h-aon àireamhan a choileanadh gu sìmplidh, leis gu bheil an eadar-aghaidh aige fhèin aig Clickhouse, ach chan urrainn dhomh a ràdh le cinnt. Tha e nas fheàrr deuchainn a dhèanamh. Tha e uile an urra ris an rèiteachadh: cia mheud aoigh a th’ agad, agus mar sin air adhart. Tha cuir a-steach aon rud, ach feumaidh tu cuideachd an dàta seo fhaighinn air ais - Grafana no rudeigin eile.

A: - Mar sin tha sinn a’ bruidhinn mu dheidhinn sabaid co-ionann, agus chan ann mu dheidhinn a ’bhuannachd mhòr a tha aig na stòran-dàta luath sin?

AG: - Tha mi a’ smaoineachadh nuair a bhios sinn ag aonachadh, gum bi deuchainnean nas cruinne ann.

A: - Càite an deach seann RRD math? Dè thug ort gluasad gu stòran-dàta SQL? An toiseach, chaidh a h-uile meatrach a chruinneachadh air RRD.

AG: - Bha RRD aig Zabbix, is dòcha ann an dreach gu math àrsaidh. Bha stòran-dàta SQL ann a-riamh - dòigh-obrach clasaigeach. Is e an dòigh-obrach clasaigeach MySQL, PostgreSQL (tha iad air a bhith ann airson ùine mhòr). Cha mhòr nach do chleachd sinn eadar-aghaidh cumanta airson stòran-dàta SQL agus RRD.

HighLoad ++, Andrey Gushchin (Zabbix): àrd-choileanadh agus sgaradh dùthchasach

Cuid de shanasan 🙂

Tapadh leibh airson fuireach còmhla rinn. An toil leat na h-artaigilean againn? A bheil thu airson susbaint nas inntinniche fhaicinn? Thoir taic dhuinn le bhith a’ cur òrdugh no a’ moladh do charaidean, sgòth VPS airson luchd-leasachaidh bho $4.99, analog sònraichte de luchd-frithealaidh ìre inntrigidh, a chaidh a chruthachadh leinn dhut: An fhìrinn gu lèir mu VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps bho $ 19 no ciamar a roinn thu frithealaiche? (ri fhaighinn le RAID1 agus RAID10, suas ri 24 cores agus suas ri 40GB DDR4).

Dell R730xd 2x nas saoire ann an ionad dàta Equinix Tier IV ann an Amsterdam? A-mhàin an seo 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV bho $199 anns an Òlaind! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - bho $99! Leugh mu dheidhinn Ciamar a thogail bun-structair Corp. clas le bhith a’ cleachdadh frithealaichean Dell R730xd E5-2650 v4 luach 9000 iùro airson sgillinn?

Source: www.habr.com

Cuir beachd ann