HighLoad ++, Andrey Gushchin (Zabbix): fampisehoana avo lenta sy fizarazarana teratany

Hojerentsika ny fomba fiasan'i Zabbix miaraka amin'ny tahiry TimescaleDB ho backend. Hasehonay anao ny fomba hanombohana manomboka amin'ny scratch sy ny fomba hifindra avy amin'ny PostgreSQL. Hanome andrana fampitahana ny zava-bita amin'ireo fanitsiana roa ihany koa izahay.

HighLoad ++, Andrey Gushchin (Zabbix): fampisehoana avo lenta sy fizarazarana teratany

HighLoad++ Siberia 2019. Tomsk Hall. Jona 24, 16:00. Theses ary fampahafantarana. Ny fihaonambe HighLoad++ manaraka dia hatao ny 6 sy 7 aprily 2020 any Saint-Pétersbourg. Ny antsipiriany sy ny tapakila rohy.

Andrey Gushchin (AG): – Injeniera mpanohana ara-teknika ZABBIX (antsoina hoe “Zabbix”) aho, mpampiofana. Efa niasa tamin'ny fanohanana ara-teknika nandritra ny 6 taona mahery aho ary nanana traikefa mivantana tamin'ny fampisehoana. Androany aho dia hiresaka momba ny fampisehoana izay azon'ny TimescaleDB omena raha ampitahaina amin'ny PostgreSQL 10 mahazatra. Ary koa, ampahany fampidirana momba ny fomba fiasa amin'ny ankapobeny.

Fanamby ambony indrindra amin'ny famokarana: manomboka amin'ny fanangonana angon-drakitra ka hatramin'ny fanadiovana data

Hanombohana dia misy fanamby amin'ny fampandehanana izay atrehin'ny rafitra fanaraha-maso tsirairay. Ny fanamby voalohany amin'ny famokarana dia ny fanangonana sy fanodinana angona haingana.

HighLoad ++, Andrey Gushchin (Zabbix): fampisehoana avo lenta sy fizarazarana teratany

Ny rafitra fanaraha-maso tsara dia tokony haingana, mandray ara-potoana ny angon-drakitra rehetra, manodina azy araka ny fitenenana trigger, izany hoe manodina azy araka ny fepetra sasany (tsy mitovy amin'ny rafitra samihafa izany) ary mitahiry izany ao anaty tahiry mba hampiasana izany data izany amin'ny ho avy.

HighLoad ++, Andrey Gushchin (Zabbix): fampisehoana avo lenta sy fizarazarana teratany

Ny fanamby faharoa amin'ny fampisehoana dia ny fitahirizana tantara. Tehirizo ao anaty angon-drakitra matetika ary mahazo fidirana haingana sy mora amin'ireo metrika voaangona nandritra ny fotoana elaela. Ny zava-dehibe indrindra dia ity angon-drakitra ity dia mora azo, ampiasaina amin'ny tatitra, grafika, trigger, amin'ny soatoavin'ny tokonam-baravarana sasany, ho an'ny fanairana, sns.

HighLoad ++, Andrey Gushchin (Zabbix): fampisehoana avo lenta sy fizarazarana teratany

Ny fanamby fahatelo amin'ny fampisehoana dia ny fanadiovana ny tantara, izany hoe rehefa tonga any amin'ny toerana tsy mila mitahiry metrika amin'ny antsipiriany izay voaangona nandritra ny 5 taona (na volana na roa volana aza). Voafafa ny node tambajotra sasany, na ny mpampiantrano sasany, tsy ilaina intsony ny metrika satria efa lany andro sy tsy voaangona intsony. Izany rehetra izany dia mila diovina mba tsy hitombo be loatra ny angon-drakitrao. Amin'ny ankapobeny, ny famafana ny tantara dia matetika fitsapana lehibe ho an'ny fitahirizana - matetika misy fiantraikany mahery vaika amin'ny fampisehoana izany.

Ahoana no hamahana ny olan'ny caching?

Hiresaka manokana momba an'i Zabbix aho izao. Ao amin'ny Zabbix, voavaha amin'ny fampiasana caching ny antso voalohany sy faharoa.

HighLoad ++, Andrey Gushchin (Zabbix): fampisehoana avo lenta sy fizarazarana teratany

Fanangonana sy fanodinana angona - Mampiasa RAM izahay hitahirizana ireo angona rehetra ireo. Hodinihina amin'ny antsipiriany bebe kokoa izao ireo angona ireo.

Ao amin'ny lafin'ny angon-drakitra ihany koa dia misy caching ho an'ny safidy lehibe - ho an'ny grafika sy zavatra hafa.

Caching amin'ny sisin'ny mpizara Zabbix mihitsy: manana ConfigurationCache, ValueCache, HistoryCache, TrendsCache izahay. Inona izany?

HighLoad ++, Andrey Gushchin (Zabbix): fampisehoana avo lenta sy fizarazarana teratany

ConfigurationCache no cache lehibe indrindra hitehirizana metrika, mpampiantrano, entana angona, trigger; ny zavatra rehetra ilainao amin'ny fanodinana mialoha, manangona angon-drakitra, avy amin'ireo mpampiantrano angonina, amin'ny firy. Izany rehetra izany dia voatahiry ao amin'ny ConfigurationCache mba tsy handehanana any amin'ny tahiry ary hamorona fanontaniana tsy ilaina. Rehefa manomboka ny mpizara dia manavao ity cache ity izahay (mamorona azy) ary manavao azy io tsindraindray (miankina amin'ny firafitry ny configuration).

HighLoad ++, Andrey Gushchin (Zabbix): fampisehoana avo lenta sy fizarazarana teratany

Caching ao amin'ny Zabbix. Fanangonana angona

Ity diagram ity dia tena lehibe:

HighLoad ++, Andrey Gushchin (Zabbix): fampisehoana avo lenta sy fizarazarana teratany

Ireo mpanangona ireo no tena ao anatin'ilay tetika:

HighLoad ++, Andrey Gushchin (Zabbix): fampisehoana avo lenta sy fizarazarana teratany

Ireo dia ny fizotry ny fivoriambe, "pollers" samihafa izay tompon'andraikitra amin'ny karazana fivoriambe. Manangona angon-drakitra amin'ny alàlan'ny icmp, ipmi, ary protocols isan-karazany izy ireo ary mamindra izany rehetra izany amin'ny preprocessing.

PreProcessing HistoryCache

Ary koa, raha nanao kajy ireo singa angona izahay (ireo izay mahafantatra an'i Zabbix dia mahafantatra), izany hoe, kajy, singa angona fanangonana, dia raisinay mivantana avy amin'ny ValueCache. Holazaiko aminao ny famenoana azy any aoriana. Ireo mpanangona rehetra ireo dia mampiasa ConfigurationCache mba handraisana ny asany ary avy eo ampita izany amin'ny fanodinana.

HighLoad ++, Andrey Gushchin (Zabbix): fampisehoana avo lenta sy fizarazarana teratany

Ny preprocessing dia mampiasa ConfigurationCache ihany koa mba hahazoana dingana mialoha ny fanodinana sy fanodinana ireo angona ireo amin'ny fomba isan-karazany. Manomboka amin'ny version 4.2 dia nafindranay ho proxy izany. Tena mety izany, satria ny preprocessing mihitsy dia asa sarotra. Ary raha manana Zabbix tena lehibe ianao, miaraka amin'ny singa angon-drakitra marobe ary matetika ny fanangonana avo, dia manamora ny asa izany.

Arak'izany, rehefa avy nokarakarainay tamin'ny fomba sasany tamin'ny alalan'ny preprocessing ity angona ity, dia tehirizinay ao amin'ny HistoryCache izany mba hikolokolo azy bebe kokoa. Izany no mamarana ny fanangonana angona. Miroso amin'ny dingana lehibe isika.

Ny asan'ny syncer tantara

HighLoad ++, Andrey Gushchin (Zabbix): fampisehoana avo lenta sy fizarazarana teratany

Ny dingana lehibe ao amin'ny Zabbix (satria izy io dia maritrano monolithic) dia ny Syncer History. Ity no dingana lehibe izay miresaka manokana momba ny fanodinana atomika isaky ny singa data, izany hoe ny sanda tsirairay:

  • tonga ny sandany (maka azy avy amin'ny HistoryCache);
  • manamarina ao amin'ny Configuration syncer: raha misy trigger ho an'ny kajy - kajy azy ireo;
    raha misy - mamorona hetsika, mamorona fisondrotana mba hamoronana fanairana, raha ilaina araka ny fanamafisana;
  • firaketana an-tsoratra ho an'ny fanodinana manaraka, fanangonana; raha mitambatra mandritra ny ora farany sy ny sisa ianao dia tadidin'ny ValueCache io sanda io mba tsy handehanana any amin'ny tabilao tantara; Noho izany, ny ValueCache dia feno ny angon-drakitra ilaina ilaina amin'ny kajy ireo trigger, singa kajy, sns.;
  • avy eo ny History sync dia manoratra ny angona rehetra amin'ny angon-drakitra;
  • manoratra azy ireo amin'ny kapila ny angon-drakitra - eto no hifaranan'ny fizotran'ny fanodinana.

Database. Caching

Eo amin'ny lafiny angona, rehefa te-hijery grafika na tatitra sasany momba ny zava-nitranga ianao, dia misy cache isan-karazany. Saingy amin'ity tatitra ity dia tsy hiresaka momba azy ireo aho.

Ho an'ny MySQL dia misy Innodb_buffer_pool, ary karazana cache samihafa azo amboarina ihany koa.
Fa ireto no tena lehibe:

  • shared_buffers;
  • effective_cache_size;
  • shared_pool.

HighLoad ++, Andrey Gushchin (Zabbix): fampisehoana avo lenta sy fizarazarana teratany

Ho an'ny angon-drakitra rehetra dia nilaza aho fa misy cache sasany ahafahanao mitahiry ao amin'ny RAM ny angon-drakitra ilaina matetika amin'ny fangatahana. Manana ny teknolojiany manokana amin'izany izy ireo.

Momba ny Performance Database

Noho izany, misy ny tontolo mifaninana, izany hoe ny mpizara Zabbix dia manangona angon-drakitra ary mirakitra izany. Rehefa averina indray dia mamaky tantara ihany koa izy mba hamenoana ny ValueCache sy ny sisa. Eto ianao dia afaka manana sora-baventy sy tatitra mampiasa ny Zabbix API, izay naorina amin'ny interface interface. Zabbix API dia miditra amin'ny angon-drakitra ary mandray ny angon-drakitra ilaina hahazoana sary, tatitra, na karazana lisitry ny zava-nitranga, olana vao haingana.

HighLoad ++, Andrey Gushchin (Zabbix): fampisehoana avo lenta sy fizarazarana teratany

Vahaolana malaza indrindra amin'ny fijerena sary ihany koa ny Grafana, izay ampiasain'ny mpampiasa anay. Afaka miditra mivantana amin'ny alàlan'ny Zabbix API na amin'ny alàlan'ny angon-drakitra. Mamorona fifaninanana ihany koa izy io amin'ny fahazoana angon-drakitra: ilaina ny fanitsiana tsara kokoa sy tsara kokoa amin'ny angon-drakitra mba hanarahana ny fandefasana haingana ny valiny sy ny fitsapana.

HighLoad ++, Andrey Gushchin (Zabbix): fampisehoana avo lenta sy fizarazarana teratany

Fanadiovana ny tantara. Zabbix dia manana Housekeeper

Ny antso fahatelo ampiasaina amin'ny Zabbix dia ny fanadiovana ny tantara amin'ny fampiasana Housekeeper. Manaraka ny toe-javatra rehetra ny mpikarakara trano, izany hoe, ireo singa angon-drakitray dia manondro ny halavan'ny fitahirizana (ao anatin'ny andro), ny halavan'ny fitahirizana ny fironana, ary ny fihetsehan'ny fiovana.

Tsy niresaka momba ny TrendCache aho, izay kajy amin'ny sidina: tonga ny data, manangona azy mandritra ny adiny iray (ny ankamaroany dia isa ho an'ny ora farany), ny salan'isa dia salan'isa / farafahakeliny ary raketinay indray mandeha isan'ora ao amin'ny tabilaon'ny dinamikan'ny fiovana ("Trends") . Ny "Housekeeper" dia manomboka sy mamafa ny angona avy amin'ny angon-drakitra amin'ny alàlan'ny fifantenana mahazatra, izay tsy mahomby foana.

Ahoana no ahafantarana fa tsy mahomby izany? Azonao atao ny mahita ity sary manaraka ity amin'ny sarin'ny fahombiazan'ny dingana anatiny:

HighLoad ++, Andrey Gushchin (Zabbix): fampisehoana avo lenta sy fizarazarana teratany

Be atao tsy an-kijanona ny mpandrindra ny tantaranao (sary mena). Ary ny tabilao "mena" izay mandeha eo ambony. Ity dia "Mpanome trano" izay manomboka ary miandry ny angon-drakitra hamafa ny andalana rehetra nofaritany.

Andao haka ID Item: mila mamafa ny 5 arivo farany ianao; mazava ho azy, amin'ny fanondroana. Saingy matetika ny angona dia tena lehibe - ny angon-drakitra dia mbola mamaky azy avy amin'ny kapila ary mametraka azy ao anaty cache, ary izany dia asa lafo be ho an'ny angon-drakitra. Miankina amin'ny habeny, mety hiteraka olana amin'ny fampisehoana izany.

Azonao atao ny manafoana ny Housekeeper amin'ny fomba tsotra - manana interface interface mahazatra izahay. Settings in Administration general (setting ho an'ny "Housekeeper") dia manafoana ny fitandremana anatiny ho an'ny tantara anatiny sy ny fironana. Noho izany, ny Housekeeper dia tsy mifehy izany intsony:

HighLoad ++, Andrey Gushchin (Zabbix): fampisehoana avo lenta sy fizarazarana teratany

Inona no azonao atao manaraka? Novonoinao izany, nihena ny kisarinao... Inona no olana hafa mety hitranga amin'ity tranga ity? Inona no afaka manampy?

Fizarana (fizarana)

Amin'ny ankapobeny dia amboarina amin'ny fomba hafa amin'ny angon-drakitra mifandray tsirairay nosoratako izany. Manana teknolojia manokana ny MySQL. Saingy amin'ny ankapobeny dia mitovy amin'ny PostgreSQL 10 sy MySQL izy ireo. Mazava ho azy fa be dia be ny fahasamihafana anatiny amin'ny fomba fampiharana azy rehetra sy ny fiantraikan'izany rehetra izany. Saingy amin'ny ankapobeny, ny famoronana partition vaovao dia matetika miteraka olana sasany.

HighLoad ++, Andrey Gushchin (Zabbix): fampisehoana avo lenta sy fizarazarana teratany

Miankina amin'ny fametrahanao (ohatra ny angon-drakitra noforoninao ao anatin'ny iray andro), matetika izy ireo no mametraka ny kely indrindra - 1 andro / batch izany, ary ho an'ny "fironana", dinamika fanovana - 1 volana / andiany vaovao. Mety hiova izany raha manana setup lehibe ianao.

Andeha holazainay avy hatrany ny haben'ny setup: hatramin'ny 5 arivo sanda vaovao isan-tsegondra (antsoina hoe nvps) - izany dia ho raisina ho "setup" kely. Salanisa - avy amin'ny 5 ka hatramin'ny 25 arivo isa-tsegondra. Izay rehetra eo ambony dia efa fametrahana lehibe sy tena lehibe izay mitaky fikirakirana tsara ny angon-drakitra.

Amin'ny fametrahana lehibe dia mety tsy mety ny 1 andro. Izaho manokana dia nahita fizarazarana tao amin'ny MySQL amin'ny 40 gigabytes isan'andro (ary mety hisy bebe kokoa). Angon-drakitra be dia be izany, izay mety hiteraka olana sasany. Mila ahena izany.

Nahoana ianao no mila fisarahana?

Ny omen'ny Partitioning, heveriko fa fantatry ny rehetra, dia ny fisarahana latabatra. Matetika ireo dia rakitra misaraka amin'ny fangatahana kapila sy span. Mifidy fizarazarana iray amin'ny fomba tsara kokoa izy io raha anisan'ny fizarazarana mahazatra.

HighLoad ++, Andrey Gushchin (Zabbix): fampisehoana avo lenta sy fizarazarana teratany

Ho an'ny Zabbix, indrindra indrindra, dia ampiasaina amin'ny alàlan'ny elanelana, amin'ny alàlan'ny elanelana, izany hoe mampiasa marika famantarana (isa mahazatra, fotoana hatramin'ny fiandohan'ny vanim-potoana). Manondro ny fiandohan'ny andro / fiafaran'ny andro ianao, ary ity no fisarahana. Noho izany, raha mangataka angona roa andro ianao, dia alaina haingana kokoa avy amin'ny angon-drakitra ny zava-drehetra, satria mila mampiditra rakitra iray ao anaty cache ianao ary mamerina azy (fa tsy latabatra lehibe).

HighLoad ++, Andrey Gushchin (Zabbix): fampisehoana avo lenta sy fizarazarana teratany

Betsaka koa ny angon-drakitra manafaingana ny fampidirana (fampidirana ao anaty latabatra ankizy iray). Miresaka tsy misy dikany aho amin'izao fotoana izao, fa azo atao koa izany. Matetika manampy ny partitoning.

Elasticsearch ho an'ny NoSQL

Vao haingana, tao amin'ny 3.4, nametraka vahaolana NoSQL izahay. Nampiana ny fahaizana manoratra ao amin'ny Elasticsearch. Afaka manoratra karazana sasany ianao: misafidy ianao - na manoratra isa na famantarana sasany; manana lahatsoratra amin'ny tady izahay, afaka manoratra logs amin'ny Elasticsearch ianao ... Araka izany, ny interface web dia hiditra amin'ny Elasticsearch ihany koa. Izany dia miasa tsara amin'ny tranga sasany, fa amin'izao fotoana izao dia azo ampiasaina.

HighLoad ++, Andrey Gushchin (Zabbix): fampisehoana avo lenta sy fizarazarana teratany

TimescaleDB. Hypertables

Ho an'ny 4.4.2 dia nifantoka tamin'ny zavatra iray toy ny TimescaleDB izahay. Inona izany? Ity dia fanitarana ho an'ny PostgreSQL, izany hoe manana interface PostgreSQL teratany. Fanampin'izay, ity fanitarana ity dia ahafahanao miasa amin'ny fomba mahomby kokoa miaraka amin'ny angon-drakitra timeseries ary manana fizarazarana mandeha ho azy. Inona ny endriny:

HighLoad ++, Andrey Gushchin (Zabbix): fampisehoana avo lenta sy fizarazarana teratany

Ity dia hypertable - misy hevitra toy izany ao amin'ny Timescale. Ity dia hypertable izay noforoninao, ary misy sombiny. Ny tapa-kazo dia fizarazarana, latabatra ankizy ireo, raha tsy diso aho. Tena mandaitra tokoa.

HighLoad ++, Andrey Gushchin (Zabbix): fampisehoana avo lenta sy fizarazarana teratany

TimescaleDB sy PostgreSQL

Araka ny fanomezan-toky ny mpanamboatra TimescaleDB, dia mampiasa algorithm marina kokoa izy ireo amin'ny fanodinana fanontaniana, indrindra ny fampidirana, izay mamela ny fampandehanana tsy tapaka miaraka amin'ny haben'ny fampidirana data. Izany hoe, aorian'ny andalana 200 tapitrisa amin'ny Postgres, ny mahazatra dia manomboka mihena be ary very ny fahombiazany ara-bakiteny ho aotra, raha ny Timescale kosa dia mamela anao hampiditra insert araka izay azo atao miaraka amin'ny habetsaky ny angona.

HighLoad ++, Andrey Gushchin (Zabbix): fampisehoana avo lenta sy fizarazarana teratany

Ahoana ny fametrahana TimescaleDB? Tsotra izany!

Ao amin'ny antontan-taratasy izy io, voalaza - azonao atao ny mametraka azy amin'ny fonosana ho an'ny rehetra ... Miankina amin'ny fonosana Postgres ofisialy izany. Azo atambatra amin'ny tanana. Ny zava-nitranga dia tsy maintsy nanangona ny angona aho.

HighLoad ++, Andrey Gushchin (Zabbix): fampisehoana avo lenta sy fizarazarana teratany

Amin'ny Zabbix dia manetsika fotsiny ny Extention. Heveriko fa ireo izay nampiasa Extention tao amin'ny Postgres... Ampifanaraho fotsiny ny Extention dia mamorona izany ho an'ny angon-drakitra Zabbix ampiasainao.

Ary ny dingana farany...

TimescaleDB. Fifindran'ny tabilao tantara

Mila mamorona hypertable ianao. Misy fiasa manokana amin'izany - Mamorona hypertable. Ao anatin'izany, ny mari-pamantarana voalohany dia ny latabatra izay ilaina amin'ity tahiry ity (izay ilainao hamoronana hypertable).

HighLoad ++, Andrey Gushchin (Zabbix): fampisehoana avo lenta sy fizarazarana teratany

Ny saha izay hamoronana, ary ny chunk_time_interval (ity ny elanelan'ny sombintsombiny (fizarana mila ampiasaina) 86 dia iray andro.

Parameter Migrate_data: Raha ampidirinao amin'ny true, dia hamindra ny angona rehetra amin'izao fotoana izao mankany amin'ny sombiny efa noforonina.

Efa nampiasa migrate_data ny tenako - mila fotoana ara-drariny izany, miankina amin'ny haben'ny angon-drakitrao. Nanana terabyte mahery aho - adiny iray mahery vao noforonina. Amin'ny toe-javatra sasany, nandritra ny fitsapana, nofafako ny angona ara-tantara ho an'ny lahatsoratra (history_text) sy ny tady (history_str) mba tsy hamindra azy ireo - tsy dia mahaliana ahy loatra izy ireo.

Ary manao ny fanavaozana farany ao amin'ny db_extention izahay: mametraka timescaledb izahay mba hahafantaran'ny angon-drakitra ary indrindra ny Zabbix-nay fa misy ny db_extention. Mampihetsika izany izy ary mampiasa ny fehezanteny sy fanontaniana marina amin'ny angon-drakitra, amin'ny fampiasana ireo "endri-javatra" ilaina amin'ny TimescaleDB.

Fanofanana mpizara

Nampiasa mpizara roa aho. Ny mpizara voalohany dia milina virtoaly kely, processeur 20, RAM 16 gigabytes. Namboariko ny Postgres 10.8 teo aminy:

HighLoad ++, Andrey Gushchin (Zabbix): fampisehoana avo lenta sy fizarazarana teratany

Ny rafitra fandidiana dia Debian, ny rafitra rakitra dia xfs. Nanao fanovana kely aho mba hampiasana an'io tahiry manokana io, minus izay hampiasain'i Zabbix. Ao amin'io milina io ihany dia nisy mpizara Zabbix, PostgreSQL ary mpiasan'ny entana.

HighLoad ++, Andrey Gushchin (Zabbix): fampisehoana avo lenta sy fizarazarana teratany

Nampiasa mpiasa mavitrika 50 aho izay mampiasa LoadableModule mba hamokatra vokatra hafa haingana. Izy ireo no namorona ny tady, isa, sy ny sisa. Nofenoiko ny angon-drakitra betsaka. Tany am-boalohany dia misy singa data 5 arivo isaky ny mpampiantrano ny fikandrana, ary eo ho eo ny singa data tsirairay dia misy trigger - mba ho tena fananganana izany. Indraindray aza mila trigger mihoatra ny iray ianao hampiasaina.

HighLoad ++, Andrey Gushchin (Zabbix): fampisehoana avo lenta sy fizarazarana teratany

Nofeheziko ny elanelan'ny fanavaozana sy ny enta-mavesatra amin'ny alàlan'ny tsy fampiasana mpiasa 50 fotsiny (manampy bebe kokoa), fa mampiasa singa data mavitrika ary mampihena ny elanelan'ny fanavaozana ho 4 segondra.

Fitsapana fahombiazana. PostgreSQL: 36 arivo NVPs

Ny fandefasana voalohany, ny fametrahana voalohany nataoko dia tao amin'ny PostreSQL 10 madio amin'ity fitaovana ity (sarobidy 35 arivo isan-tsegondra). Amin'ny ankapobeny, araka ny hitanao eo amin'ny efijery, ny fampidirana angon-drakitra dia maka ampahany amin'ny segondra iray - tsara sy haingana ny zava-drehetra, SSD drive (200 gigabytes). Ny hany tokana dia ny 20 GB dia feno haingana.

HighLoad ++, Andrey Gushchin (Zabbix): fampisehoana avo lenta sy fizarazarana teratany

Hisy sary maromaro toy izany amin'ny ho avy. Ity dia dashboard fampisehoana an-tserasera Zabbix mahazatra.

HighLoad ++, Andrey Gushchin (Zabbix): fampisehoana avo lenta sy fizarazarana teratany

Ny tabilao voalohany dia ny isan'ny sanda isan-tsegondra (manga, ankavia ambony), 35 arivo sanda amin'ity tranga ity. Ity (ambony afovoany) dia ny fametahana ny fizotran'ny fananganana, ary ity (ambony havanana) dia ny fampidinana ireo dingana anatiny: ny syncers tantara sy ny mpikarakara trano, izay eto (afovoany ambany) dia efa niasa hatry ny ela.

Ity grafika ity (afovoany ambany) dia mampiseho ny fampiasana ValueCache - firy ny isan'ny ValueCache ho an'ny trigger (sarobidy an'arivony isan-tsegondra). Ny tabilao manan-danja iray hafa dia ny fahefatra (ambany ankavia), izay mampiseho ny fampiasana HistoryCache, izay noresahiko, izay buffer alohan'ny hampidirana ao amin'ny tahiry.

Fitsapana fahombiazana. PostgreSQL: 50 arivo NVPs

Avy eo dia nampitombo ny entana ho 50 arivo isa-tsegondra amin'ny fitaovana mitovy. Rehefa entin'ny Housekeeper, sanda 10 arivo no voarakitra ao anatin'ny 2-3 segondra miaraka amin'ny kajy. Inona, raha ny marina, no aseho amin'ity pikantsary manaraka ity:

HighLoad ++, Andrey Gushchin (Zabbix): fampisehoana avo lenta sy fizarazarana teratany

Efa manomboka manelingelina ny asa ny "Housekeeper", fa amin'ny ankapobeny dia mbola eo amin'ny 60% ny enta-mavesatra amin'ny mpanendaka tantara (sary fahatelo, ambony havanana). Efa manomboka feno tanteraka ny HistoryCache raha mandeha ny Housekeeper (ambany ankavia). Teo amin'ny antsasaky ny gigabyte izy io, feno 20%.

HighLoad ++, Andrey Gushchin (Zabbix): fampisehoana avo lenta sy fizarazarana teratany

Fitsapana fahombiazana. PostgreSQL: 80 arivo NVPs

Avy eo dia nampitomboiko ho 80 arivo isa-tsegondra:

HighLoad ++, Andrey Gushchin (Zabbix): fampisehoana avo lenta sy fizarazarana teratany

Manodidina ny 400 arivo ny singa data, 280 arivo ny trigger. Ny fampidirana, araka ny hitanao, amin'ny resaka enta-mavesatry ny tantara (misy 30 amin'izy ireo) dia efa avo be. Avy eo dia nampitombo ny mari-pamantarana isan-karazany aho: mpandefa tantara, cache... Amin'ity fitaovana ity dia nanomboka nitombo ho ambony indrindra ny enta-mavesatra teo amin'ireo mpandefa tantara, saika "eo amin'ny talantalana" - araka izany, ny HistoryCache dia niditra tao anaty enta-mavesatra be:

HighLoad ++, Andrey Gushchin (Zabbix): fampisehoana avo lenta sy fizarazarana teratany

Nandritra izany fotoana izany dia nanara-maso ny masontsivana rafitra rehetra aho (ny fomba ampiasana ny processeur, RAM) ary nahita fa ny fampiasana kapila dia ambony indrindra - Nahatratra ny fahafaha-manao ambony indrindra amin'ity kapila ity aho amin'ity fitaovana ity, amin'ity milina virtoaly ity. Ny "Postgres" dia nanomboka nanary ny angon-drakitra tamin'ny heriny toy izany, ary tsy nanam-potoana hanoratana, hamaky...

HighLoad ++, Andrey Gushchin (Zabbix): fampisehoana avo lenta sy fizarazarana teratany

Naka mpizara hafa izay efa manana processeur 48 sy RAM 128 gigabytes aho:

HighLoad ++, Andrey Gushchin (Zabbix): fampisehoana avo lenta sy fizarazarana teratany

Izaho koa dia "naneno" azy - nametraka syncer History (60 sekely) ary nahavita fahombiazana azo ekena. Raha ny marina, tsy "eo amin'ny talantalana" isika, fa io angamba no fetran'ny famokarana, izay efa ilaina ny manao zavatra momba izany.

Fitsapana fahombiazana. TimescaleDB: 80 arivo NVPs

Ny tena asako dia ny fampiasana TimescaleDB. Ny grafika tsirairay dia mampiseho fidina:

HighLoad ++, Andrey Gushchin (Zabbix): fampisehoana avo lenta sy fizarazarana teratany

Ireo tsy fahombiazana ireo dia ny fifindra-monina marina indrindra. Taorian'izay, tao amin'ny mpizara Zabbix, niova be ny mombamomba ny fisidinan'ny tantara, araka ny hitanao. Mamela anao hampiditra data efa ho in-3 haingana kokoa ary mampiasa HistoryCache kely kokoa - mifanaraka amin'izany, hanana angon-drakitra aterina ara-potoana ianao. Indray mandeha, ny sanda 80 arivo isan-tsegondra dia avo lenta (mazava ho azy fa tsy ho an'ny Yandex). Amin'ny ankapobeny dia setup lehibe ity, miaraka amin'ny mpizara iray.

Fitsapana fampisehoana PostgreSQL: 120 arivo NVPs

Manaraka izany dia nampitomboiko ho antsasaka tapitrisa ny sandan'ny singa data ary nahazo sanda 125 arivo isan-tsegondra aho:

HighLoad ++, Andrey Gushchin (Zabbix): fampisehoana avo lenta sy fizarazarana teratany

Ary nahazo ireto grafika ireto aho:

HighLoad ++, Andrey Gushchin (Zabbix): fampisehoana avo lenta sy fizarazarana teratany

Amin'ny ankapobeny, ity dia setup miasa, afaka miasa mandritra ny fotoana maharitra. Fa satria tsy nanana afa-tsy 1,5 terabyte disk aho dia nampiasa izany tao anatin'ny roa andro. Ny zava-dehibe indrindra dia tamin'izany fotoana izany dia nisy fizarana vaovao noforonina tao amin'ny TimescaleDB, ary tsy voamarika tanteraka izany noho ny fampisehoana, izay tsy azo lazaina momba ny MySQL.

Amin'ny ankapobeny, ny fizarazarana dia noforonina amin'ny alina, satria izany amin'ny ankapobeny dia manakana ny fampidirana sy miasa miaraka amin'ny latabatra ary mety hitarika amin'ny fanimbana ny serivisy. Amin'ity tranga ity dia tsy izany no izy! Ny tena asa dia ny hizaha toetra ny fahaizan'ny TimescaleDB. Ny vokatra dia toy izao manaraka izao: sanda 120 arivo isan-tsegondra.

Misy ohatra koa eo amin'ny fiaraha-monina:

HighLoad ++, Andrey Gushchin (Zabbix): fampisehoana avo lenta sy fizarazarana teratany

Nandefa ny TimescaleDB ihany koa ilay olona ary nihena ny entana tamin'ny fampiasana io.weight teo amin'ny processeur; ary nihena ihany koa ny fampiasana ireo singa fanodinana anatiny noho ny fampidirana ny TimescaleDB. Ambonin'izany, ireo dia kapila pancake mahazatra, izany hoe milina virtoaly mahazatra amin'ny kapila mahazatra (fa tsy SSD)!

Ho an'ny fanamboarana kely sasany izay voafetra amin'ny fampisehoana kapila, ny TimescaleDB, araka ny hevitro, dia vahaolana tena tsara. Izany dia ahafahanao manohy miasa alohan'ny hifindrana amin'ny fitaovana haingana kokoa ho an'ny angon-drakitra.

Manasa anareo rehetra aho amin'ny hetsika ataontsika: Conference in Moscow, Summit in Riga. Ampiasao ny fantsonay - Telegram, forum, IRC. Raha manana fanontaniana ianao dia tongava ato amin'ny biraonay fa afaka miresaka momba ny zava-drehetra izahay.

Fanontanian'ny mpihaino

Fanontaniana avy amin'ny mpihaino (manaraka izany - A): - Raha toa ka mora ny manamboatra ny TimescaleDB, ary manome fampisondrotana toy izany, dia mety ho fomba fanao tsara indrindra amin'ny fanamboarana Zabbix amin'ny Postgres izany? Ary misy ve ny fandrika sy ny fatiantoka amin'ity vahaolana ity, sa raha toa ka nanapa-kevitra ny hanao Zabbix ho an'ny tenako aho, dia afaka maka mora foana ny Postgres, mametraka ny Timescale eo no ho eo, mampiasa izany ary tsy mieritreritra olana ?

HighLoad ++, Andrey Gushchin (Zabbix): fampisehoana avo lenta sy fizarazarana teratany

AG: - Eny, lazaiko fa tolo-kevitra tsara izany: ampiasao avy hatrany ny Postgres miaraka amin'ny fanitarana TimescaleDB. Araka ny efa nolazaiko, be dia be ny hevitra tsara, na dia eo aza ny zava-misy fa io "endri-javatra" dia andrana. Fa raha ny marina, ny fitsapana dia mampiseho fa vahaolana lehibe ity (miaraka amin'ny TimescaleDB) ary heveriko fa hivoatra izany! Manara-maso ny fivoaran'ity fanitarana ity izahay ary hanao fanovana raha ilaina.

Na dia nandritra ny fampandrosoana aza, dia niantehitra tamin'ny iray amin'ireo "endriny" fanta-daza izahay: azo atao ny miara-miasa amin'ny ampahany kely amin'ny fomba hafa. Saingy notapahin'izy ireo izany tamin'ny famoahana manaraka, ary tsy maintsy nijanona tsy niantehitra tamin'ity code ity izahay. Manoro hevitra aho hampiasa ity vahaolana ity amin'ny setup maro. Raha mampiasa MySQL ianao... Ho an'ny setup antonony dia miasa tsara ny vahaolana rehetra.

A: - Ao amin'ny kisary farany avy amin'ny vondrom-piarahamonina, misy tabilao misy "Mpanampy trano":

HighLoad ++, Andrey Gushchin (Zabbix): fampisehoana avo lenta sy fizarazarana teratany

Nanohy niasa izy. Inona no ataon'ny Housekeeper amin'ny TimescaleDB?

AG: - Ankehitriny dia tsy afaka milaza marina aho - hijery ny kaody aho ary hilaza aminao amin'ny antsipiriany bebe kokoa. Mampiasa ny fangatahana TimescaleDB izy io mba tsy hamafa sombin-javatra, fa mba hanambatra azy ireo. Mbola tsy vonona hamaly io fanontaniana teknika io aho. Hahafantatra bebe kokoa eny amin’ny kianja isika anio na rahampitso.

A: – Manana fanontaniana mitovitovy amin'izany aho – momba ny fanatanterahana ny famafana ao amin'ny Timescale.
A (valiny avy amin'ny mpihaino): - Rehefa mamafa ny angona amin'ny latabatra ianao, raha manao izany amin'ny alàlan'ny famafana ianao, dia mila mandalo ny latabatra - mamafa, manadio, marika ny zava-drehetra ho an'ny banga ho avy. Ao amin'ny Timescale, satria manana ampahany ianao dia afaka milatsaka. Amin'ny ankapobeny dia lazainao fotsiny ilay rakitra izay ao anaty angon-drakitra lehibe: "Delete!"

Takatry ny Timescale fotsiny fa tsy misy intsony ny ampahany toy izany. Ary satria tafiditra ao anatin'ny drafitry ny fangataham-panontaniana izy, dia mampiasa farango izy mba hisintonana ny fepetrao amin'ny asa voafantina na hafa ary takany avy hatrany fa tsy misy intsony io ampahany io - "Tsy ho any intsony aho!" (tsy misy angona). Izay ihany! Izany hoe, ny scan table dia nosoloina famafana rakitra binary, noho izany dia haingana.

A: – Efa nikasika ny lohahevitra momba ny tsy SQL izahay. Raha ny fahazoako azy, Zabbix dia tsy tena mila manova ny angon-drakitra, ary izany rehetra izany dia toy ny log. Azo atao ve ny mampiasa angon-drakitra manokana izay tsy afaka manova ny angonany, fa miaraka amin'izay koa, mitahiry, manangona ary mizara haingana kokoa - Clickhouse, ohatra, zavatra mitovy amin'ny Kafka?.. Kafka koa dia log! Azo atao ve ny mampiditra azy ireo?

AG: - Azo atao ny fampidinana entana. Manana "endri-javatra" manokana izahay nanomboka tamin'ny dikan-teny 3.4: azonao atao ny manoratra ny rakitra ara-tantara rehetra, ny hetsika, ny zavatra hafa rehetra amin'ny rakitra; ary avy eo dia alefaso any amin'ny tahiry hafa amin'ny alàlan'ny mpitantana sasany. Raha ny marina, maro ny olona mamerina sy manoratra mivantana amin'ny angon-drakitra. Amin'ny lalitra, manoratra izany rehetra izany ho rakitra ireo mpandefa tantara, manodina ireo rakitra ireo, sy ny sisa, ary azonao atao ny mamindra izany amin'ny Clickhouse. Tsy afaka milaza momba ny drafitra aho, fa angamba ny fanohanana fanampiny ho an'ny vahaolana NoSQL (toy ny Clickhouse) dia hitohy.

A: - Amin'ny ankapobeny, hita fa afaka manala tanteraka ny postgres ianao?

AG: - Mazava ho azy fa ny ampahany sarotra indrindra amin'ny Zabbix dia ny tabilao ara-tantara, izay miteraka olana sy zava-mitranga indrindra. Amin'ity tranga ity, raha tsy mitahiry hetsika mandritra ny fotoana maharitra ianao ary mitahiry ny tantara miaraka amin'ny fironana amin'ny fitehirizana haingana hafa, dia amin'ny ankapobeny, heveriko fa tsy hisy olana.

A: – Azonao tombanana ve hoe ohatrinona ny fandehan'ny zava-drehetra raha mifindra amin'ny Clickhouse ianao, ohatra?

AG: – Tsy nanandrana izany aho. Heveriko fa farafaharatsiny ny isa mitovy dia azo tratrarina tsotra izao, satria ny Clickhouse dia manana ny interface tsara, saingy tsy azoko antoka. Aleo mitsapa. Miankina amin'ny configuration izany rehetra izany: firy ny mpampiantrano anao, sy ny sisa. Ny fampidirana dia zavatra iray, fa mila maka an'io data io koa ianao - Grafana na zavatra hafa.

A: – Ka ady mitovy no resahina, fa tsy ny tombony lehibe amin'ireo tahiry haingana ireo?

AG: – Heveriko fa rehefa mitambatra isika dia hisy fitsapana marina kokoa.

A: – Nankaiza ny RRD taloha tsara? Inona no nahatonga anao hifindra amin'ny angona SQL? Tany am-boalohany dia nangonina tao amin'ny RRD ny metrika rehetra.

AG: - Zabbix dia nanana RRD, angamba tamin'ny dikan-teny tranainy be. Nisy foana ny angona SQL - fomba fanao mahazatra. Ny fomba fiasa mahazatra dia MySQL, PostgreSQL (efa nisy hatry ny ela izy ireo). Saika tsy nampiasa interface mahazatra ho an'ny angona SQL sy RRD izahay.

HighLoad ++, Andrey Gushchin (Zabbix): fampisehoana avo lenta sy fizarazarana teratany

Ny doka sasany 🙂

Misaotra anao nijanona niaraka taminay. Tianao ve ny lahatsoratray? Te-hahita votoaty mahaliana kokoa? Tohano izahay amin'ny fametrahana baiko na fanolorana amin'ny namana, cloud VPS ho an'ny mpamorona manomboka amin'ny $4.99, analogue tsy manam-paharoa amin'ny mpizara ambaratonga fidirana, izay noforoninay ho anao: Ny marina rehetra momba ny VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps avy amin'ny $19 na ahoana no hizarana mpizara? (misy miaraka amin'ny RAID1 sy RAID10, hatramin'ny 24 cores ary hatramin'ny 40GB DDR4).

Dell R730xd 2x mora kokoa amin'ny foibe data Equinix Tier IV any Amsterdam? Eto ihany 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV manomboka amin'ny $199 any Holandy! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - manomboka amin'ny $99! Vakio ny momba ny Ahoana ny fananganana infrastructure corp. kilasy amin'ny fampiasana mpizara Dell R730xd E5-2650 v4 mitentina 9000 euros amin'ny denaria iray?

Source: www.habr.com

Add a comment