HighLoad++, Andrey Gushchin (Zabbix): ts'ebetso e phahameng le karohano ea matsoalloa

Re tla sheba Zabbix e sebetsang le database ea TimescaleDB e le backend. Re tla bonts'a mokhoa oa ho qala ho tloha qalong le mokhoa oa ho falla ho tloha PostgreSQL. Hape re tla fana ka liteko tsa papiso ea ts'ebetso ea litlhophiso tse peli.

HighLoad++, Andrey Gushchin (Zabbix): ts'ebetso e phahameng le karohano ea matsoalloa

HighLoad ++ Siberia 2019. Tomsk Hall. La 24 Phuptjane, 16:00. Abstracts le tlhahiso. Seboka se latelang sa HighLoad++ se tla tšoaroa ka la 6-7 Mmesa, 2020 St. Petersburg. Lintlha le litekete link tsa.

Andrey Gushchin (kamora mona - AG): - Ke moenjiniere oa tšehetso ea tekheniki oa ZABBIX (eo ka mor'a moo e bitsoang "Zabbix"), mokoetlisi. Ke qetile lilemo tse fetang 6 ke sebetsa ts'ehetso ea tekheniki mme ke kopane le ts'ebetso ka kotloloho. Kajeno ke tla bua ka ts'ebetso eo TimescaleDB e ka fanang ka eona, ha e bapisoa le kamehla PostgreSQL 10. Hape, karolo e 'ngoe ea kenyelletso - mabapi le hore na e sebetsa joang ka kakaretso.

Mathata a Bohlokoa a Ts'ebetso: Ho tloha Pokellong ea Lintlha ho ea ho Tlhoekiso ea Lintlha

Ha re qaleng ka taba ea hore ho na le liqholotso tse itseng tsa ts'ebetso tseo tsamaiso e 'ngoe le e 'ngoe ea tlhahlobo e tobanang le tsona. Phephetso ea pele ea ts'ebetso ke ho bokella le ho lokisa data ka potlako.

HighLoad++, Andrey Gushchin (Zabbix): ts'ebetso e phahameng le karohano ea matsoalloa

Sistimi e ntle ea ho beha leihlo e lokela ho amohela data eohle kapele le ka potlako, e e sebetse ho latela mantsoe a qalang, ke hore, e sebetsane le maemo a itseng (sena se fapana ka litsamaiso tse fapaneng) ebe o e boloka polokelong ea data e le hore data ena e ka sebelisoa nakong e tlang.

HighLoad++, Andrey Gushchin (Zabbix): ts'ebetso e phahameng le karohano ea matsoalloa

Phephetso ea bobeli ea ts'ebetso ke ho boloka nalane. E boloka sebakeng sa polokelo khafetsa le ho fihlella kapele le ha bonolo ho metrics ena e bokelletsoeng ka nako e telele. Ntho ea bohlokoa ka ho fetisisa ke hore data ena e bonolo ho e fumana, e sebelisoa litlalehong, li-graph, li-triggers, menyako, litlhokomeliso, joalo-joalo.

HighLoad++, Andrey Gushchin (Zabbix): ts'ebetso e phahameng le karohano ea matsoalloa

Phephetso ea boraro ea ts'ebetso ke tlhoekiso ea nalane, ke hore, ha u na le letsatsi leo ka lona u sa hlokeng ho boloka lintlha tse qaqileng tse ileng tsa bokelloa ka lilemo tse 5 (esita le likhoeli kapa likhoeli tse peli). Li-node tse ling tsa marang-rang li ile tsa hlakolwa, kapa baamohedi ba bang, metrics ha e sa hlokahala hobane e se e siilwe ke nako mme ha e sa bokellwa. Tsena tsohle li hloka ho hloekisoa e le hore database ea hau e se ke ea hola ho fihlela boholo bo boholo. 'Me ka kakaretso, ho hloekisa histori hangata ke teko e tebileng bakeng sa polokelo - hangata e ama ts'ebetso haholo.

Joang ho rarolla mathata a caching?

Hona joale ke tla bua ka ho toba ka Zabbix. Ho Zabbix, mohala oa pele le oa bobeli o rarolloa ka ho sebelisa caching.

HighLoad++, Andrey Gushchin (Zabbix): ts'ebetso e phahameng le karohano ea matsoalloa

Ho bokella le ho sebetsa ha data - re sebelisa RAM ho boloka data ena kaofela. Re tla bua ka data ena ka botlalo hona joale.

Ho boetse ho na le caching ka lehlakoreng la database bakeng sa disampole tsa mantlha - bakeng sa lirafshoa, lintho tse ling.

Caching ka lehlakoreng la seva sa Zabbix ka boeona: re na le ConfigurationCache, ValueCache, HistoryCache, TrendsCache. Ke eng?

HighLoad++, Andrey Gushchin (Zabbix): ts'ebetso e phahameng le karohano ea matsoalloa

ConfigurationCache ke cache e kholo moo re bolokang metrics, hosts, data elements, triggers; ntho e 'ngoe le e' ngoe e hlokahalang ho sebetsana le preprocessing, pokello ea data, e leng mabotho a ho bokella ho tloha, hangata hakae. Tsena tsohle li bolokiloe ho ConfigurationCache e le hore u se ke ua ea ho database, eseng ho etsa likopo tse sa hlokahaleng. Ka mor'a hore seva se qale, re ntlafatsa cache ena (e bōpe) 'me re e ntlafatsa nako le nako (ho itšetlehile ka litlhophiso tsa tlhophiso).

HighLoad++, Andrey Gushchin (Zabbix): ts'ebetso e phahameng le karohano ea matsoalloa

Caching ho Zabbix. Pokello ea lintlha

Mona ke setšoantšo se seholo haholo:

HighLoad++, Andrey Gushchin (Zabbix): ts'ebetso e phahameng le karohano ea matsoalloa

Tse ka sehloohong morerong ke li-assembler tsena:

HighLoad++, Andrey Gushchin (Zabbix): ts'ebetso e phahameng le karohano ea matsoalloa

Tsena ke lits'ebetso tsa kopano ka botsona, "bakhethoa" ba fapaneng ba ikarabellang bakeng sa mefuta e fapaneng ea likopano. Ba bokella lintlha ho icmp, ipmi, ho liprothokholo tse fapaneng ebe ba li fetisetsa kaofela ho preprocessing.

E tsoela pele ka HistoriCache

Hape, haeba re balile likarolo tsa data (ba tloaelaneng le Zabbix ba tseba sena), ke hore, ho baloa, likarolo tsa data tsa aggregation, re li nka ka ho toba ho ValueCache. Ke tla u bolella hore na e tlatsoa joang hamorao. Babokelli bana kaofela ba sebelisa ConfigurationCache ho amohela mesebetsi ea bona ebe ba e fetisetsa pele ho ts'ebetso.

HighLoad++, Andrey Gushchin (Zabbix): ts'ebetso e phahameng le karohano ea matsoalloa

Preprocessing e boetse e sebelisa ConfigurationCache ho fumana mehato ea ho lokisa esale pele, e sebetsana le data ena ka mekhoa e fapaneng. Ho qala ka mofuta oa 4.2, e fetisetsoa ho proxy. Sena se bonolo haholo, hobane preprocessing ka boeona ke ts'ebetso e boima haholo. 'Me haeba u na le Zabbix e kholo haholo, e nang le lintlha tse ngata tsa data le palo e phahameng ea pokello, joale sena se nolofatsa mosebetsi haholo.

Ka hona, ka mor'a hore re sebelitse data ena ka tsela e itseng re sebelisa preprocessing, re e boloka ho HistoryCache hore re e sebetse ho ea pele. Sena se phethela pokello ea lintlha. Re fetela ts'ebetsong e kholo.

Mosebetsi oa syncer oa nalane

HighLoad++, Andrey Gushchin (Zabbix): ts'ebetso e phahameng le karohano ea matsoalloa

Ts'ebetso ea mantlha ho Zabbix (kaha ke moralo oa monolithic) ke syncer ea nalane. Ona ke ts'ebetso ea mantlha e sebetsanang le ts'ebetso ea athomo ea karolo ka 'ngoe ea data, ke hore boleng bo bong le bo bong:

  • boleng bo fihla (e bo nka ho HistoryCache);
  • e hlahloba ho Configuration syncer: na ho na le lintho tse susumetsang ho bala - li bala;
    haeba ho na le e 'ngoe, e theha liketsahalo, e etsa hore ho be le ho phahama e le hore ho be le tlhokomeliso, haeba sena se hlokoa ke tlhophiso;
  • direkoto tse susumetsang bakeng sa tshebetso e latelang, aggregation; haeba u bokella hora ea ho qetela joalo-joalo, boleng bona bo hopoloa ke ValueCache e le hore u se ke ua fumana tafole ea histori; ka hona, ValueCache e tletse lintlha tse hlokahalang tse hlokahalang ho bala lintho tse susumetsang, likarolo tse baloang, joalo-joalo;
  • ebe syncer ea Histori e ngola lintlha tsohle ho database;
  • database e li ngolla ho disk - ke moo ts'ebetso e fellang teng.

Databases. Caching

Ka lehlakoreng la DB, ha u batla ho bona li-graph kapa litlaleho tse ling mabapi le liketsahalo, ho na le li-cache tse fapaneng. Empa ha ke na ho bua ka bona tlalehong ena.

Bakeng sa MySQL ho na le Innodb_buffer_pool, le sehlopha sa li-cache tse ling tse fapaneng tse ka hlophisoang.
Empa tsena ke tsona tse ka sehloohong:

  • share_buffers;
  • e sebetsang_cache_size;
  • letamo_le kopanetsweng.

HighLoad++, Andrey Gushchin (Zabbix): ts'ebetso e phahameng le karohano ea matsoalloa

Bakeng sa li-database tsohle ke bonts'itse hore ho na le li-cache tse lumellang ho boloka ho RAM data eo hangata e hlokahalang bakeng sa lipotso. Ba na le theknoloji ea bona bakeng sa sena.

Mabapi le ts'ebetso ea database

Ka hona, ho na le tikoloho ea tlholisano, ke hore, seva sa Zabbix se bokella data ebe oa e tlaleha. Ha o qala bocha, e boetse e bala ho tloha nalaneng ho tlatsa ValueCache joalo-joalo. Mona u ka boela ua ba le litokomane le litlaleho tse sebelisang Zabbix API, e hahiloeng motheong oa sebopeho sa marang-rang. Zabbix API e kena DB mme e fumana lintlha tse hlokahalang ho fumana lirafshoa, litlaleho kapa lethathamo le leng la liketsahalo, mathata a morao tjena.

HighLoad++, Andrey Gushchin (Zabbix): ts'ebetso e phahameng le karohano ea matsoalloa

Tharollo e 'ngoe e tsebahalang haholo ea pono ke Grafana, eo basebelisi ba rona ba e sebelisang. E ka kena ka ho toba ka Zabbix API le ka DB. E boetse e theha tlholisano e itseng bakeng sa ho nkuoa ha data: ho hlokahala hore ho be le tlhophiso e poteletseng, e ntle ea DB ho tsamaisana le phano e potlakileng ea liphetho le liteko.

HighLoad++, Andrey Gushchin (Zabbix): ts'ebetso e phahameng le karohano ea matsoalloa

Ho hlakola nalane. Zabbix o na le Mohlokomeli oa Ntlo

Pitso ea boraro e sebelisoang ho Zabbix ke ho hlakola nalane ka ho sebelisa Housekeeper. Mohlokomeli oa ntlo o hlompha litlhophiso tsohle, ke hore, re na le likarolo tsa data hore na re ka boloka bokae (ka matsatsi), ke bokae ho boloka mekhoa, matla a liphetoho.

Ha ke e-s'o ka ke bua ka TrendCash, eo re e balang ka fofa: data e kena, re e kopanya ka hora e le 'ngoe (haholo-holo tsena ke linomoro tsa hora ea ho qetela), palo e tloaelehileng / bonyane 'me u e ngole hang ka hora tafoleng ea liphetoho tse fetohang ("Trends"). "Mohlokomeli oa ntlo" o qala le ho tlosa data ho tswa ho database ho sebelisa likhetho tse tloaelehileng, tse sa sebetseng kamehla.

U tseba joang hore see ha se na thuso? U ka bona setšoantšo sena ho lichate tsa ts'ebetso ea ts'ebetso ea kahare:

HighLoad++, Andrey Gushchin (Zabbix): ts'ebetso e phahameng le karohano ea matsoalloa

Sycerne ea Histori ea hau e lula e phathahane (kerafo e khubelu). Le kerafo e "khubelu" e ka holimo. Ena ke "Housekeeper", e qalang le ho emela hore DB e hlakole mela eohle eo e e boletseng.

Ha re nkeng Item ID: re hloka ho hlakola tse likete tse 5 tsa ho qetela; ehlile, ka li-index. Empa hangata dataset e kholo haholo - database e ntse e e bala ho tsoa ho disk ebe e e phahamisetsa ho cache, mme ena ke ts'ebetso e theko e boima haholo bakeng sa DB. Ho itšetlehile ka boholo ba eona, sena se ka lebisa mathateng a itseng a tshebetso.

O ka tima Housekeeper ka tsela e bonolo - re na le sehokelo se tloaelehileng sa webo. Litlhophisong tse akaretsang tsa Tsamaiso (litlhophiso bakeng sa Mohlokomeli oa Ntlo), re thibela tlhokomelo ea kahare bakeng sa nalane ea ka hare le mekhoa. Ka hona, Housekeeper ha a sa laola sena:

HighLoad++, Andrey Gushchin (Zabbix): ts'ebetso e phahameng le karohano ea matsoalloa

U ka etsa'ng ka mor'a moo? U ile ua e tima, li-graph tsa hau li lekanyelitsoe ... Ke mathata afe a ka bang teng tabeng ee? Ke eng e ka thusang?

Ho arola (karolo)

Hangata, sena se hlophisitsoe ka tsela e fapaneng ho database e 'ngoe le e' ngoe ea likamano eo ke e thathamisitseng. MySQL e na le theknoloji ea eona. Empa ka kakaretso, li tšoana haholo, haeba re bua ka PostgreSQL 10 le MySQL. Ha e le hantle, ho na le liphapang tse ngata tsa ka hare mabapi le hore na li sebelisoa joang le hore na li ama ts'ebetso joang. Empa ka kakaretso, ho theha karohano e ncha hangata le hona ho lebisa mathateng a itseng.

HighLoad++, Andrey Gushchin (Zabbix): ts'ebetso e phahameng le karohano ea matsoalloa

Ho itšetlehile ka setupong sa hau (hore na u theha data e kae ka letsatsi), hangata bonyane bo behiloe - letsatsi le le leng / karohano, le bakeng sa "mekhoa", liphetoho tsa liphetoho - khoeli e le 'ngoe / karohano e ncha. Sena se ka fetoha haeba o na le setup se seholo haholo.

E-re ke u bolelle ka boholo ba ho seta hang-hang: ho fihlela ho litekanyetso tse ncha tse likete tse 5 ka motsotsoana (seo ho thoeng ke NVPS) - sena se tla nkoa e le "setup" se senyenyane. Karolelano - ho tloha ho 5 ho ea ho litekanyetso tse likete tse 25 ka motsotsoana. Ntho e 'ngoe le e' ngoe e ka holimo e se e ntse e le kholo e kholo le e kholo haholo e hlokang tlhophiso e hlokolosi ea database.

Lits'ebetsong tse kholo haholo, letsatsi le 1 le kanna la se sebetse hantle. Ke bone ka bonna likarolo tsa MySQL tsa 40 gigabytes ka letsatsi (mme ho ka ba le tse ling hape). Ena ke palo e kholo haholo ea data, e ka bakang mathata a mang. E hloka ho fokotseha.

Ke hobane'ng ha re hloka ho arohana?

Seo Partitioning e fanang ka sona, ke nahana hore motho e mong le e mong oa tseba - ke karohano ea tafole. Hangata tsena ke lifaele tse arohaneng ho disk le lipotso tsa span. E khetha ka nepo karohano e le 'ngoe haeba e kenyellelitsoe karohanong e tloaelehileng.

HighLoad++, Andrey Gushchin (Zabbix): ts'ebetso e phahameng le karohano ea matsoalloa

Bakeng sa "Zabbix", haholo-holo, e sebelisoa ka mefuta e fapaneng, ka mefuta e fapaneng, ke hore, re sebelisa timestamp (nomoro e tloaelehileng, nako ho tloha qalong ea mehla). U hlakisa qalo ea letsatsi / pheletso ea letsatsi, 'me ena ke karohano. Ka hona, haeba u fumana data ho tloha matsatsing a mabeli a fetileng, sena sohle se khethiloe ho tloha ho database ka potlako, hobane u hloka feela ho kenya faele e le 'ngoe ka har'a cache ebe u e ntša (eseng tafole e kholo).

HighLoad++, Andrey Gushchin (Zabbix): ts'ebetso e phahameng le karohano ea matsoalloa

Li-database tse ngata le tsona li potlakisa ho kenya (kenya tafoleng e le 'ngoe ea ngoana). Hona joale ke bua ka mokhoa o hlakileng, empa sena se ka khoneha. Ho arohana hangata hoa thusa.

Elasticsearch bakeng sa NoSQL

Haufinyane tjena, ho 3.4, re kentse tharollo bakeng sa NoSQL. Re kentse bokhoni ba ho ngolla Elasticsearch. O ka ngola mefuta e meng e arohaneng: o khetha - ho ngola linomoro kapa matšoao a mang; re na le mongolo oa likhoele, u ka ngola li-logs ho Elasticsearch ... Ka hona, sebopeho sa marang-rang se tla boela se fihlelle Elasticsearch. Sena se sebetsa hantle maemong a mang, empa hajoale se ka sebelisoa.

HighLoad++, Andrey Gushchin (Zabbix): ts'ebetso e phahameng le karohano ea matsoalloa

TimescaleDB. Li-hypertables

Bakeng sa 4.4.2, re ile ra ela hloko ntho e le 'ngoe, TimescaleDB. Ke eng? Ke katoloso ea Postgres, ke hore, e na le sebopeho sa sebaka sa PostgreSQL. Hape, katoloso ena e u lumella ho sebetsa le data ea timeseries ka mokhoa o atlehileng haholoanyane le ho arola othomathike. E shebahala joang:

HighLoad++, Andrey Gushchin (Zabbix): ts'ebetso e phahameng le karohano ea matsoalloa

Ena ke hypertable - ho na le maikutlo a joalo ho Timescale. Ena ke hypertable eo u e bōpang, 'me e na le likaroloana. Li-chunks ke li-partitions, tsena ke litafole tsa bana, haeba ke sa fose. Sena se hlile se sebetsa.

HighLoad++, Andrey Gushchin (Zabbix): ts'ebetso e phahameng le karohano ea matsoalloa

TimescaleDB le PostgreSQL

Joalo ka ha baetsi ba TimescaleDB ba netefatsa, ba sebelisa algorithm e nepahetseng haholoanyane bakeng sa ho sebetsana le lipotso, haholo-holo tse kentsoeng, tse lumellang ts'ebetso e batlang e sa fetohe ka boholo bo ntseng bo eketseha ba dataset e kentsoeng. Ke hore, ka mor'a mela e limilione tse 200, Postgres e tloaelehileng e qala ho theoha ka matla haholo 'me e lahleheloa ke ts'ebetso ea sebele ho ea ho zero, ha Timescale e lumella ho kenngoa ho kenngoa ka mokhoa o atlehileng ka hohle kamoo ho ka khonehang ka palo leha e le efe ea data.

HighLoad++, Andrey Gushchin (Zabbix): ts'ebetso e phahameng le karohano ea matsoalloa

Mokhoa oa ho kenya TimescaleDB? Ho bonolo!

E litokomaneng tsa hae, e hlalosoa - u ka e kenya ho tloha liphutheloana bakeng sa leha e le efe ... E itšetlehile ka liphutheloana tsa Postgres tsa molao. U ka e bokella ka letsoho. Ho ile ha etsahala hore ke tlameha ho e bokella bakeng sa DB.

HighLoad++, Andrey Gushchin (Zabbix): ts'ebetso e phahameng le karohano ea matsoalloa

Ho Zabbix re kenya tšebetsong Extention. Ke nahana hore ba sebelisitseng Extention ho Postgres… U kenya tšebetsong Extention, u e etse bakeng sa polokelo ea boitsebiso ea Zabbix eo u e sebelisang.

Mme mohato wa ho qetela...

TimescaleDB. Litafole tsa Histori tse Fallang

U hloka ho theha hypertable. Ho na le mosebetsi o khethehileng bakeng sa sena - Etsa hypertable. Ho eona, paramente ea pele ke tafole e hlokahalang ho DB ena (eo u hlokang ho theha hypertable).

HighLoad++, Andrey Gushchin (Zabbix): ts'ebetso e phahameng le karohano ea matsoalloa

Tšimo ea ho bopa ka le chunk_time_interval (ena ke nako ea li-chunks (partitions) ho sebelisoa). 86 ke letsatsi le le leng.

migrate_data parameter: haeba u e beha ho 'nete, e fetisetsa lintlha tsohle tsa hona joale ho likarolo tse entsoeng esale pele.

Ke sebelisitse migrate_data ka bonna - ho nka nako e lekaneng, ho latela hore na DB ea hau e kholo hakae. Ea ka e ne e feta terabyte - ho nkile hora ho theha. Maemong a mang, ha ke etsa liteko, ke ile ka hlakola lintlha tsa histori bakeng sa mongolo (history_text) le khoele (history_str) e le hore ke se ke ka falla - ke ne ke hlile ke sa thahaselle ho bona.

'Me ntlafatso ea ho qetela eo re e etsang ho db_extention ea rona: re kenya timescaledb e le hore DB mme, haholo-holo, "Zabbix" ea rona e utloisise hore ho na le db_extention. E e kenya tšebetsong 'me e sebelisa syntax e nepahetseng le lipotso ho DB, e sebelisa "likarolo" tse hlokahalang bakeng sa TimescaleDB.

Tlhophiso ea Seva

Ke sebelisitse li-server tse peli. Seva ea pele ke mochini o sebetsang, o monyane haholo, li-processor tse 20, li-gigabytes tse 16 tsa RAM. Ke hlophisitse Postgres 10.8 ho eona:

HighLoad++, Andrey Gushchin (Zabbix): ts'ebetso e phahameng le karohano ea matsoalloa

Sistimi ea ts'ebetso e ne e le Debian, sistimi ea faele – xfs. Ke entse litlhophiso tse fokolang ho sebelisa database ena ka ho khetheha, ntle le seo Zabbix ka boeona e tla se sebelisa. Seva ea Zabbix, PostgreSQL, le baemeli ba mojaro le tsona li kentsoe mochining ona.

HighLoad++, Andrey Gushchin (Zabbix): ts'ebetso e phahameng le karohano ea matsoalloa

Ke sebelisitse mahlahana a sebetsang a 50 a sebelisang LoadableModule ho hlahisa liphetho tse fapaneng kapele. Ba hlahisitse likhoele, linomoro, joalo-joalo Ke ile ka tlatsa DB ka lintlha tse ngata. Tlhophiso ea pele e ne e na le lintlha tse likete tse 5 tsa moamoheli ka mong, 'me hoo e batlang e le ntho e' ngoe le e 'ngoe ea data e ne e na le sesosa - hore sena e be setaele sa 'nete. Ka linako tse ling u bile u hloka lisebelisoa tse fetang bonngoe ho e sebelisa.

HighLoad++, Andrey Gushchin (Zabbix): ts'ebetso e phahameng le karohano ea matsoalloa

Ke ile ka laola nako ea ntlafatso le mojaro ka boeona ka ho se sebelise baemeli ba 50 feela (ho eketsa ho feta), empa hape le ho sebelisa lintlha tse matla tsa data le ho fokotsa nako ea ntlafatso ho metsotsoana ea 4.

Teko ea Ts'ebetso. PostgreSQL: 36K NVPs

Tlhahiso ea pele, setupo sa pele seo ke neng ke e-na le sona e ne e le ho PostreSQL 10 e hloekileng ho hardware ena (litekanyetso tse likete tse 35 motsotsoana). Ka kakaretso, joalokaha u ka bona skrineng, ho kenngoa ha data ho nka likaroloana tsa motsotsoana - ntho e 'ngoe le e' ngoe e ntle ebile e potlakile, li-disk tsa SSD (200 gigabytes). Ntho feela ke hore 20 GB e tlatsa kapele haholo.

HighLoad++, Andrey Gushchin (Zabbix): ts'ebetso e phahameng le karohano ea matsoalloa

Ho tla ba le li-graph tse ngata tse joalo ho ea pele. Ena ke dashboard e tloaelehileng ea ts'ebetso ea seva sa Zabbix.

HighLoad++, Andrey Gushchin (Zabbix): ts'ebetso e phahameng le karohano ea matsoalloa

Kerafo ea pele ke palo ea litekanyetso ka motsotsoana (buluu, holimo ka ho le letšehali), litekanyetso tse likete tse 35 tabeng ena. Sena (setsi se ka holimo) ke ho kenya mekhoa ea ho haha, 'me sena (ka holimo ka ho le letona) ke ho kenya lits'ebetso tsa ka hare: li-syncers tsa histori le mohlokomeli oa ntlo, tseo mona (bohareng bo ka tlaase) li neng li sebetsa nako e telele.

Kerafo ena (bohareng bo ka tlase) e bonts'a ts'ebeliso ea ValueCache - hore na ValueCache e otla tse kae bakeng sa li-triggers (litekanyetso tse likete tse 'maloa motsotsoana). Kerafo e 'ngoe ea bohlokoa ke ea bone (ka tlaase ka ho le letšehali), e bontšang tšebeliso ea HistoryCache, eo ke buileng ka eona, e leng buffer pele e kenngoa ka har'a database.

Teko ea Ts'ebetso. PostgreSQL: 50K NVPs

Eaba ke eketsa mojaro ho litekanyetso tse likete tse 50 ka motsotsoana ho hardware e tšoanang. Ha o kenya "Housekeeper", litekanyetso tse likete tse 10 li ngotsoe ka metsotsoana ea 2-3 ka lipalo. E hlileng e bonts'itsoeng skrineng se latelang:

HighLoad++, Andrey Gushchin (Zabbix): ts'ebetso e phahameng le karohano ea matsoalloa

"Mohlokomeli oa ntlo" o se a ntse a qala ho kena-kenana le mosebetsi, empa ka kakaretso mojaro oa li-sinker trappers tsa histori o ntse o le 60% (kerafo ea boraro, ka holimo ho le letona). HistoryCache e se e qala ho tlatsa ka mafolofolo nakong ea mosebetsi oa "Housekeeper" (ka tlaase ho le letšehali). E ne e ka ba halofo ea gigabyte, e tlatsitsoe ke 20%.

HighLoad++, Andrey Gushchin (Zabbix): ts'ebetso e phahameng le karohano ea matsoalloa

Teko ea Ts'ebetso. PostgreSQL: 80K NVPs

Eaba ke e eketsa ho boleng ba likete tse 80 motsotsoana:

HighLoad++, Andrey Gushchin (Zabbix): ts'ebetso e phahameng le karohano ea matsoalloa

E ne e ka bang likete tse 400 tsa lintlha tsa data, li-triggers tse likete tse 280. Ho kenya, joalo ka ha u bona, ka ho kenya li-sinkers tsa histori (ho ne ho e-na le tse 30 tsa tsona) e ne e se e ntse e phahame haholo. Eaba ke eketsa litekanyo tse sa tšoaneng: li-sinkers tsa histori, cache ... Ho hardware ena, ho romelloa ha li-sinkers tsa histori ho ile ha qala ho eketseha ho ea holimo, hoo e batlang e le "ho ea setulong" - ho ea ka seo, HistoryCache e kene mojaro o phahameng haholo:

HighLoad++, Andrey Gushchin (Zabbix): ts'ebetso e phahameng le karohano ea matsoalloa

Ka nako ena kaofela ke ne ke ntse ke shebile likarolo tsohle tsa tsamaiso (kamoo processor e sebelisoang kateng, RAM) mme ke fumana hore ts'ebeliso ea disk e ne e le holimo - ke fihletse boholo ba disk ena ho hardware ena, mochine ona oa sebele. "Postgres" e qalile ho lahla data ka matla joalo, 'me disk e ne e se e sa khone ho ngola, ho bala ...

HighLoad++, Andrey Gushchin (Zabbix): ts'ebetso e phahameng le karohano ea matsoalloa

Ke nkile seva e 'ngoe e neng e se e na le li-processor tse 48 le li-gigabyte tse 128 tsa RAM:

HighLoad++, Andrey Gushchin (Zabbix): ts'ebetso e phahameng le karohano ea matsoalloa

Ke boetse ke e "lokisitse" - ke kentse nalane ea nalane (likotoana tse 60) mme ka fihlela ts'ebetso e amohelehang. Ha e le hantle, ha re "selofong", empa mohlomong sena ke moeli oa ts'ebetso, moo ho seng ho hlokahala ho etsa ho hong ka eona.

Teko ea Ts'ebetso. NakoDB: 80K NVPs

Sepheo sa ka se seholo e ne e le ho sebelisa TimescaleDB. Kerafo e 'ngoe le e' ngoe e bontša ho qoelisoa:

HighLoad++, Andrey Gushchin (Zabbix): ts'ebetso e phahameng le karohano ea matsoalloa

Liphoso tsena ke phalliso ea data feela. Ka mor'a moo, histori ea sinker loading profile ho seva sa Zabbix, joalokaha u bona, e fetohile haholo. E u lumella ho kenya data ka makhetlo a ka bang 3 ka potlako le ho sebelisa HistoryCache e fokolang - ka hona, o tla ba le data e fanoeng ka nako. Hape, litekanyetso tse likete tse 80 motsotsoana ke tekanyo e phahameng haholo (ehlile, eseng bakeng sa Yandex). Ka kakaretso, sena ke setupo se seholo haholo, se nang le seva se le seng.

Teko ea Ts'ebetso ea PostgreSQL: 120K NVPs

Ka mor'a moo ke ile ka eketsa boleng ba palo ea likarolo tsa data ho ea halofo ea milione mme ka fumana boleng bo hakanyetsoang ba likete tse 125 motsotsoana:

HighLoad++, Andrey Gushchin (Zabbix): ts'ebetso e phahameng le karohano ea matsoalloa

'Me ke fumane li-graph tsena:

HighLoad++, Andrey Gushchin (Zabbix): ts'ebetso e phahameng le karohano ea matsoalloa

Ha e le hantle, sena ke setupo se sebetsang, se ka sebetsa nako e telele haholo. Empa kaha ke ne ke e-na le disk ea 1,5 terabyte feela, ke ile ka e sebelisa ka mor'a matsatsi a seng makae. Ntho ea bohlokoa ka ho fetisisa ke hore likarolo tse ncha li entsoe ka TimescaleDB ka nako e le 'ngoe,' me sena se ne se sa hlokomelehe ka ho feletseng bakeng sa ts'ebetso, e ke keng ea boleloa ka MySQL.

Hangata li-partitions li bōptjoa bosiu, hobane sena se thibela ho kenngoa le ho sebetsa ka litafole ho hang, 'me se ka lebisa ho senyeha ha litšebeletso. Tabeng ena, ha ho joalo! Mosebetsi o ka sehloohong e ne e le ho leka bokhoni ba TimescaleDB. Palo e latelang e ile ea fumanoa: litekanyetso tse likete tse 120 ka motsotsoana.

Hape ho na le mehlala ho "sechaba":

HighLoad++, Andrey Gushchin (Zabbix): ts'ebetso e phahameng le karohano ea matsoalloa

Motho eo o ile a boela a nolofalletsa TimescaleDB mme mojaro oa tšebeliso ea io.weight o ile oa oela holim'a processor; le tšebeliso ea likarolo tsa mekhoa ea ka hare e boetse e fokotsehile ka lebaka la ho kenngoa ha TimescaleDB. 'Me tsena ke li-pancake disks tse tloaelehileng, ke hore, mochine o tloaelehileng oa li-disks tse tloaelehileng (eseng SSD)!

Bakeng sa litlhophiso tse ling tse nyane tse lekantsoeng ke ts'ebetso ea disk, TimescaleDB e bonahala e le tharollo e ntle haholo. E tla u lumella ho tsoela pele ho sebetsa hantle pele u fallela ho hardware e potlakileng bakeng sa database.

Ke u memela bohle liketsahalong tsa rona: Seboka - Moscow, Summit - Riga. Sebelisa liteishene tsa rona - Telegraph, forum, IRC. Haeba u na le lipotso leha e le life - tloho sethaleng sa rona, re ka bua ka ntho e 'ngoe le e' ngoe.

Lipotso tsa Bamameli

Potso e tsoang ho bamameli (eo ka mor'a moo e bitsoang A): - Haeba TimescaleDB e le bonolo ho e qala, 'me e fana ka ts'ebetso e joalo ea ts'ebetso, joale mohlomong e lokela ho sebelisoa e le mokhoa o motle oa ho theha Zabbix le Postgres? Hona na ho na le maraba le mathata a tharollo ena, kapa, haeba ke etsa qeto ea ho iketsetsa Zabbix, na nka nka Postgres ka mokhoa o sireletsehileng, kenya Timescale moo hang-hang, ke e sebelise 'me ke se ke ka nahana ka mathata leha e le afe?

HighLoad++, Andrey Gushchin (Zabbix): ts'ebetso e phahameng le karohano ea matsoalloa

AG: - E, nka re ke khothaletso e ntle ea ho sebelisa Postgres hammoho le katoloso ea TimescaleDB. Joalokaha ke boletse, ho na le litlhahlobo tse ngata tse ntle, le hoja "tšobotsi" ena e le liteko. Empa ha e le hantle, liteko li bontša hore ke tharollo e ntle (ka TimescaleDB), 'me ke nahana hore e tla fetoha! Re ntse re lekola hore na katoloso ena e fetoha joang mme re tla lokisa se hlokahalang.

Re bile re itšetlehile ka e 'ngoe ea "likarolo" tsa bona tse tsebahalang nakong ea nts'etsopele: e u lumella ho sebetsa le likotoana ka tsela e fapaneng. Empa joale ba ile ba e khaola tokollong e latelang, ’me re ile ra tlameha ho khaotsa ho itšetleha ka khoutu eo. Ke khothaletsa ho sebelisa tharollo ena ho li-setups tse ngata. Haeba u sebelisa MySQL ... Bakeng sa li-setups tse mahareng, tharollo leha e le efe e sebetsa hantle.

A: - Lichateng tsa morao-rao tse tsoang sechabeng, ho ne ho e-na le chate e nang le "Housekeeper":

HighLoad++, Andrey Gushchin (Zabbix): ts'ebetso e phahameng le karohano ea matsoalloa

A tsoela pele ho sebetsa. Mohlokomeli oa Ntlo o etsa eng ka TimescaleDB?

AG: - Ha ke khone ho bua hantle hona joale - ke tla sheba khoutu ebe ke u bolella haholoanyane. E sebelisa lipotso tsa TimescaleDB hore e se ke ea hlakola likaroloana, empa e li kopanya ka tsela e itseng. Ha ke so itokisetsa ho araba potso ena ea tekheniki. Re tla hlakisa ho stand kajeno kapa hosane.

A: - Ke na le potso e ts'oanang - mabapi le ts'ebetso ea ts'ebetso ea ho hlakola ho Timescale.
A (karabo ho tsoa ho bamameli): - Ha u hlakola data tafoleng, haeba u e etsa ka ho hlakola, joale u hloka ho feta tafoleng - hlakola, hloekisa, tšoaea ntho e 'ngoe le e' ngoe bakeng sa vacuum e tlang. Ho "Timescale", kaha u na le likotoana, u ka li tlohela. Ka mantsoe a mang, u bolella feela faele e leng data e kholo: "Tlosa!"

"Timescale" e utloisisa feela hore chunk e joalo ha e sa le teng. 'Me kaha e kenyelelitsoe ho moralo oa lipotso, e hokela maemo a hau ho khetho kapa lits'ebetsong tse ling' me hang-hang e utloisisa hore chunk ena ha e sa le teng - "Ha ke sa tla hlola ke ea moo!" (ha ho na data). Ho felile ke lehlohonolo! Ke hore, ho hlahlojoa ha tafole ho nkeloa sebaka ke ho hlakola faele ea binary, kahoo e potlakile.

A: - Re se re amme ka taba ea bao e seng SQL. Ho ea kamoo ke utloisisang, Zabbix ha e hlile ha e hloke ho fetola data, 'me sena sohle ke ntho e kang log. Na hoa khoneha ho sebelisa li-DB tse khethehileng tse ke keng tsa fetola lintlha tsa tsona, empa ka nako e ts'oanang li boloke, li bokelle, 'me li khutle ka potlako - Clickhouse, ka mohlala, ntho e kang ea Kafka?.. Kafka e boetse ke log! Na hoa khoneha ho li kopanya ka tsela e itseng?

AG: - U ka khona ho phutha. Re na le "tšobotsi" e itseng ho tloha phetolelong ea 3.4: o ka ngola lifaele tsohle tsa histori, liketsahalo, ntho e 'ngoe le e' ngoe ho lifaele; ebe u li romella ho DB efe kapa efe u sebelisa sebatli se itseng. Ebile, batho ba bangata ba sebetsa hape mme ba ngolla DB ka kotloloho. Ka fofa, li-sinkers tsa histori li ngola tsena tsohle ho lifaele, li potoloha lifaele tsena, joalo-joalo, 'me u ka li fetisetsa ho Clickhouse. Ha ke khone ho bua letho ka merero, empa mohlomong tšehetso e eketsehileng bakeng sa tharollo ea NoSQL (e kang Clickhouse) e tla tsoela pele.

A: - Ka kakaretso, hoa etsahala hore ho ka khoneha ho felisa Postgres ka ho feletseng?

AG: - Ha e le hantle, karolo e thata ka ho fetisisa ho Zabbix ke litafole tsa histori, tse bakang mathata a mangata, le liketsahalo. Tabeng ena, haeba u sa boloke liketsahalo ka nako e telele 'me u boloka histori ka mekhoa e meng ea polokelo e potlakileng, joale ka kakaretso, ke nahana hore ho ke ke ha e-ba le mathata.

A: - Na u ka hakanya hore na ntho e 'ngoe le e' ngoe e tla sebetsa kapele hakae haeba u fetohela ho Clickhouse, mohlala?

AG: - Ha kea e hlahloba. Ke nahana hore bonyane linomoro tse tšoanang li ka finyelloa habonolo, kaha Clickhouse e na le sebopeho sa eona, empa ha ke khone ho bua ka 'nete. Ho molemo ho e leka. Ntho e 'ngoe le e' ngoe e itšetlehile ka tlhophiso: hore na u na le mabotho a makae joalo-joalo. Ho kenya ke ntho e le 'ngoe, empa hape o hloka ho bokella data ena - Grafana kapa ntho e' ngoe hape.

A: - Joale re bua ka ntoa e lekanang, eseng ka molemo o moholo oa li-BD tsee tse potlakileng?

AG: - Ke nahana hore ha re kopanya, ho tla ba le liteko tse nepahetseng haholoanyane.

A: - RRD e ntle ea khale e ile kae? Ke eng e entseng hore u fetohele ho database tsa SQL? Qalong, metrics eohle e ne e bokelloa ka RRD.

AG: Ho "Zabbix" RRD, mohlomong, e ne e le mofuta oa khale haholo. Ho 'nile ha e-ba le li-database tsa SQL - mokhoa oa khale. Mokhoa oa khale ke MySQL, PostgreSQL (li bile teng ka nako e telele haholo). Re na le sebopeho se tloaelehileng sa SQL le RRD database, hoo e ka bang ha re so ka re se sebelisa.

HighLoad++, Andrey Gushchin (Zabbix): ts'ebetso e phahameng le karohano ea matsoalloa

Bapala video

Lipapatso tse ling 🙂

Kea leboha ka ho lula le rona. Na u rata lingoliloeng tsa rona? U batla ho bona litaba tse ling tse khahlisang? Re tšehetse ka ho etsa odara kapa ho khothaletsa metsoalle, cloud VPS bakeng sa batho ba ntlafatsang ho tloha ho $ 4.99, analogue e ikhethang ea li-server tsa boemo ba ho kena, e iqapetsoeng ke rona bakeng sa hau: 'Nete eohle ka VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps ho tloha $19 kapa mokhoa oa ho arolelana seva? (e fumaneha ka RAID1 le RAID10, ho fihla ho li-cores tse 24 le ho fihla ho 40GB DDR4).

Dell R730xd makhetlo a 2 a theko e tlase sebakeng sa data sa Equinix Tier IV se Amsterdam? Ke mona feela 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV ho tloha $199 naheng ea Netherlands! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - ho tloha $99! Bala ka Mokhoa oa ho haha ​​​​infrastructure Corp. sehlopha ka tšebeliso ea li-server tsa Dell R730xd E5-2650 v4 tse jang li-euro tse 9000 bakeng sa penny?

Source: www.habr.com

Reka sebaka se tšepahalang sa libaka tse nang le ts'ireletso ea DDoS, li-server tsa VPS VDS 🔥 Reka sebaka se tšepahalang sa ho amohela webosaete ka tšireletso ea DDoS, li-server tsa VPS VDS | ProHoster