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

Re tla sheba kamoo Zabbix e sebetsang kateng le database ea TimescaleDB e le backend. Re tla u bontš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. Tsena le tlhahiso. Seboka se latelang sa HighLoad++ se tla tšoaroa ka April 6 le 7, 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 'nile ka sebetsa ka tšehetso ea tekheniki ka lilemo tse fetang 6' me ke bile le phihlelo e tobileng ka ts'ebetso. 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.

Liphephetso tse holimo tsa tlhahiso: ho tloha pokellong ea data ho isa ho tlhoekiso ea data

Taba ea pele, ho na le mathata a itseng a tšebetso ao tsamaiso e 'ngoe le e 'ngoe ea ho beha leihlo e tobanang le 'ona. Phephetso ea pele ea tlhahiso ke ho bokella le ho sebetsana le data kapele.

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 ka potlako, ka nako e nepahetseng, e e sebetse ho latela mantsoe a qalang, ke hore, e sebetsane le maemo a itseng (sena se fapane le lits'ebetso tse fapaneng) ebe se e boloka sebakeng sa polokelo ea litaba ho sebelisa data ena ho bokamoso.

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

Phephetso ea bobeli ea ts'ebetso ke polokelo ea nalane. Boloka sebakeng sa polokelo khafetsa 'me u be le phihlello e potlakileng le e bonolo ea lipalo tsena tse bokelletsoeng ka nako e itseng. Ntho ea bohlokoa ka ho fetisisa ke hore data ena e bonolo ho e fumana, e sebelise litlalehong, li-graph, li-triggers, ka litekanyetso tse ling, bakeng sa litlhokomeliso, joalo-joalo.

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

Phephetso ea boraro ea ts'ebetso ke ho hlakola nalane, ke hore, ha o fihla moo o sa hlokeng ho boloka metrics e felletseng e bokelletsoeng 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 haholo. Ka kakaretso, ho hlakola histori hangata ke teko e tebileng bakeng sa polokelo - hangata e na le tšusumetso e matla haholo mosebetsing.

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

Pokello le ts'ebetso ea data - Re sebelisa RAM ho boloka data ena kaofela. Lintlha tsena joale li tla tšohloa ka ho qaqileng haholoanyane.

Hape ka lehlakoreng la database ho na le caching bakeng sa likhetho tse kholo - bakeng sa lirafshoa le 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 ka sehloohong eo re bolokang metrics, mabotho, lisebelisoa tsa data, li-triggers; ntho e 'ngoe le e' ngoe eo ue hlokang ho sebetsana le preprocessing, bokella lintlha, tseo mabotho a lokelang ho li bokella, ka makhetlo a makae. Tsena tsohle li bolokiloe ho ConfigurationCache e le hore u se ke ua ea polokelong ea litaba le ho etsa lipotso 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 setšoantšo se seholo haholo:

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

Ba ka sehloohong morerong ona ke babokelli bana:

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 data ka icmp, ipmi, le 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), ke hore, ho baloa, likarolo tsa data tse kopantsoeng, re li nka ka ho toba ho ValueCache. Ke tla u bolella kamoo e tlatsitsoeng 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 le ho sebetsana le data ena ka mekhoa e fapaneng. Ho qala ho mofuta oa 4.2, re e fetisitse ho proxy. Sena se bonolo haholo, hobane preprocessing ka boeona ke ts'ebetso e thata 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 ka kotloloho le ts'ebetso ea athomo ea karolo ka 'ngoe ea data, ke hore, boleng bo bong le bo bong:

  • boleng bo tla (bo bo nka ho HistoryCache);
  • e hlahloba ho Configuration syncer: hore na ho na le lintho tse susumetsang ho bala - li bala;
    haeba ho na le - ho theha liketsahalo, ho baka ho phahama e le hore ho thehoe tlhokomeliso, haeba ho hlokahala ho ea ka tlhophiso;
  • direkoto tse susumetsang bakeng sa tshebetso e latelang, aggregation; haeba u kopanya hora e fetileng joalo-joalo, boleng bona bo hopoloa ke ValueCache e le hore u se ke ua ea tafoleng ea histori; Kahoo, 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 ea ts'ebetso e fellang teng.

Database. Caching

Lehlakoreng la database, ha o batla ho sheba li-graph kapa litlaleho tse ling mabapi le liketsahalo, ho na le li-cache tse fapaneng. Empa tlalehong ena nke ke ka bua ka tsona.

Bakeng sa MySQL ho na le Innodb_buffer_pool, le sehlopha sa li-cache 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 boletse hore ho na le li-cache tse u 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 e qala hape, e bala ho tloha nalaneng ho tlatsa ValueCache joalo-joalo. Mona o ka ba le litokomane le litlaleho tse sebelisang Zabbix API, e hahiloeng holim'a sebopeho sa marang-rang. Zabbix API e kenya database mme e fumana lintlha tse hlokahalang ho fumana li-graph, litlaleho, kapa mofuta o itseng oa lethathamo la liketsahalo, mathata a morao tjena.

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

Hape tharollo e tsebahalang haholo ea pono ke Grafana, eo basebelisi ba rona ba e sebelisang. E khona ho kena ka kotloloho ka Zabbix API le ka database. E boetse e theha tlholisano e itseng bakeng sa ho fumana data: tokiso e ntle, e betere ea polokelo ea polokelo ea hlokahala ho ikamahanya 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

Mohala oa boraro o sebelisoang ho Zabbix ke ho hlakola nalane ka ho sebelisa Housekeeper. Mohlokomeli oa ntlo o latela litlhophiso tsohle, ke hore, lintlha tsa rona tsa data li bontša nako e kae ea ho boloka (ka matsatsi), nako e kae ea ho boloka mekhoa, le matla a liphetoho.

Ha kea bua ka TrendCache, eo re e balang ka fofa: data e fihla, re e kopanya ka hora e le 'ngoe (haholo tsena ke linomoro tsa hora ea ho qetela), chelete ke karolelano / bonyane 'me re e tlaleha hang ka hora. tafole ea matla a liphetoho ("Trends") . "Mohlokomeli oa ntlo" o qala le ho hlakola data ho tswa ho database ho sebelisa likhetho tse tloaelehileng, tse sa sebetseng kamehla.

Joang ho utloisisa hore ha e na thuso? U ka bona setšoantšo se latelang ho li-graph tsa ts'ebetso ea lits'ebetso tsa 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 tsoelang pele. Ena ke "Mohlokomeli oa Ntlo" ea qalang le ho emela hore database e hlakole mela eohle eo e e boletseng.

Ha re nkeng Item ID: o 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 kenya ka har'a cache, 'me ena ke ts'ebetso e theko e boima haholo bakeng sa database. 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. Litlhophiso ho Tsamaiso ea Kakaretso (litlhophiso tsa "Housekeeper") re thibela tlhokomelo ea kahare bakeng sa nalane ea kahare le mekhoa. Ka hona, Housekeeper ha e sa laola sena:

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

U ka etsa'ng ka mor'a moo? U e timme, li-graph tsa hau li se li le boemong bo botle ... Ke mathata afe hape a ka hlahang tabeng ee? Ke eng e ka thusang?

Ho arola (karolo)

Ka tloaelo 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 ha ho tluoa ho PostgreSQL 10 le MySQL. Ehlile, ho na le liphapang tse ngata tsa ka hare mabapi le hore na li kengoa ts'ebetsong joang le hore na li ama ts'ebetso joang. Empa ka kakaretso, ho thehoa ha karohano e ncha hangata ho boetse ho lebisa mathateng a itseng.

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

Ho ipapisitsoe le setaele sa hau (hore na u theha data e kae ka letsatsi le le leng), hangata ba beha bonyane - lena ke letsatsi le 1 / batch, le bakeng sa "mekhoa", liphetoho tse fetohang - khoeli e le 'ngoe / batch e ncha. Sena se ka fetoha haeba o na le setup se seholo haholo.

Ha re bue hang-hang ka boholo ba setupong: ho fihlela ho litekanyetso tse ncha tse likete tse 5 motsotsoana (seo ho thoeng ke nvps) - sena se tla nkoa e le "setup" se senyenyane. Karolelano - ho tloha ho litekanyetso tse likete tse 5 ho isa ho tse 25 motsotsoana. Sohle se kaholimo se se se ntse se le lits'ebetso tse kholo le tse kholo haholo tse hlokang ho hlophisoa ka hloko ha database.

Lits'ebetsong tse kholo haholo, letsatsi le 1 le kanna la se sebetse hantle. Ke bone li-partitions ho 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 u hloka partitioning?

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 likopo tsa span. E khetha karolo e le 'ngoe ka mokhoa o nepahetseng haholoanyane haeba e le karolo ea karohano e tloaelehileng.

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

Bakeng sa Zabbix, haholo-holo, e sebelisoa ka mefuta, ka mefuta, ke hore, re sebelisa timestamp (nomoro e tloaelehileng, nako ho tloha qalong ea nako). U hlakisa qalo ea letsatsi / pheletso ea letsatsi, 'me ena ke karohano. Ka hona, haeba u kopa data e nang le matsatsi a mabeli, ntho e 'ngoe le e' ngoe e khutlisetsoa ho database ka potlako, hobane u hloka feela ho kenya faele e le 'ngoe ka har'a cache ebe u e khutlisetsa (ho e-na le 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 ts'ebetsong tharollo ea NoSQL. E kentse bokhoni ba ho ngola ho Elasticsearch. U ka ngola mefuta e itseng: u 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 e kang TimescaleDB. Ke eng? Ena ke katoloso ea PostgreSQL, ke hore, e na le sebopeho sa sebaka sa PostgreSQL. Hape, katoloso ena e u lumella ho sebetsa ka mokhoa o atlehileng haholoanyane ka data ea li-timeseries le ho arola othomathike. Hore na e shebahala joang:

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

Sena 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. E hlile e sebetsa.

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

TimescaleDB le PostgreSQL

Joalokaha baetsi ba TimescaleDB ba netefatsa, ba sebelisa algorithm e nepahetseng haholoanyane bakeng sa ho sebetsana le lipotso, haholo-holo tse kentsoeng, tse ba lumellang ho ba le 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 ea Postgres, e tloaelehileng e qala ho theoha haholo 'me e lahleheloa ke ts'ebetso ea sebele ho ea ho zero, ha Timescale e u lumella ho kenya lisebelisoa 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 ka har'a litokomane, e hlalositsoe - u ka e kenya ho tloha liphutheloana bakeng sa leha e le efe ... E itšetlehile ka liphutheloana tsa Postgres tsa molao. E ka hlophisoa ka letsoho. Ho ile ha etsahala hore ke tlameha ho bokella bakeng sa database.

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

Ho Zabbix re kenya feela Extention. Ke nahana hore ba sebelisitseng Extention ho Postgres ... U mpa u kenya Extention, u e bōpe bakeng sa database ea Zabbix eo u e sebelisang.

Mme mohato wa ho qetela...

TimescaleDB. Ho falla ha litafole tsa histori

U hloka ho theha hypertable. Ho na le mosebetsi o khethehileng bakeng sa sena - Etsa hypertable. Ho eona, parameter ea pele ke tafole e hlokahalang sebakeng sa polokelo ea litaba (eo u lokelang ho e etsa hypertable).

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

Sebaka seo u ka bopang ka sona, 'me chunk_time_interval (ena ke nako ea likarolo (li-partitions tse lokelang ho sebelisoa). 86 ke letsatsi le le leng.

Migrate_data parameter: Haeba u kenya 'nete, sena se tla 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 database ea hau e kholo hakae. Ke bile le ho feta terabyte - ho nkile hora ho theha. Maemong a mang, nakong ea liteko, ke ile ka hlakola lintlha tsa histori bakeng sa mongolo (history_text) le khoele (history_str) e le hore ke se ke ka li fetisetsa - li ne li hlile li sa thahaselle ho 'na.

'Me re etsa ntjhafatso ea ho qetela ho db_extention ea rona: re kenya timescaledb e le hore database, haholo-holo, Zabbix ea rona e utloisise hore ho na le db_extention. O e kenya tšebetsong 'me o sebelisa syntax e nepahetseng le lipotso ho database, a sebelisa "likarolo" tseo tse hlokahalang bakeng sa TimescaleDB.

Sebopeho sa seva

Ke sebelisitse li-server tse peli. Seva ea pele ke mochini o batlang o le 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 e ne e le xfs. Ke entse litlhophiso tse nyane ho sebelisa database ena, ho tlosa seo Zabbix ka boeona e tla se sebelisa. Mochineng o le mong ho ne ho e-na le seva sa Zabbix, PostgreSQL le liakhente tsa mojaro.

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

Ke sebelisitse li-agents tse 50 tse sebelisang LoadableModule ho hlahisa liphetho tse fapaneng kapele. Ke bona ba hlahisitseng likhoele, lipalo, joalo-joalo. Ke ile ka tlatsa database ka boitsebiso bo bongata. Qalong, tlhophiso e ne e na le lintlha tsa data tse likete tse 5 moamoheli ka mong, 'me hoo e ka bang karolo e' ngoe le e 'ngoe ea data e ne e e-na le sesosa - e le hore sena e be setupo sa nnete. Ka linako tse ling u bile u hloka li-trigger tse fetang bonngoe hore u li sebelise.

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: li-NVP tse likete tse 36

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 kenya data ho nka likaroloana tsa motsotsoana - ntho e 'ngoe le e' ngoe e ntle ebile e potlakile, li-drive 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 joalo nakong e tlang. Ena ke dashboard e tloaelehileng ea ts'ebetso ea seva sa Zabbix.

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

graph ea pele ke palo ea boleng ka motsotsoana (buluu, holimo ka ho le letšehali), litekanyetso tse likete tse 35 tabeng ena. Sena (setsi se ka holimo) ke ho kenya lits'ebetso tsa kaho, '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) esale li sebetsa ka 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-trigger (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 kenya ka har'a database.

Teko ea ts'ebetso. PostgreSQL: li-NVP tse likete tse 50

Ka mor'a moo, ke ile ka eketsa mojaro ho ea ho litekanyetso tse likete tse 50 motsotsoana ho hardware e tšoanang. Ha e laetsoe ke Mohlokomeli oa Ntlo, litekanyetso tse likete tse 10 li ile tsa tlalehoa ka metsotsoana e 2-3 ka lipalo. Seo, ha e le hantle, se bontšoang 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-trappers tsa histori-sinker o ntse o le boemong ba 60% (graph ea boraro, holimo ka ho le letona). HistoryCache e se e qala ho tlatsa ka mafolofolo ha Mohlokomeli oa Ntlo a ntse a sebetsa (ka tlaase ho le letšehali). E ne e ka ba halofo ea gigabyte, 20% e tletse.

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

Teko ea ts'ebetso. PostgreSQL: li-NVP tse likete tse 80

Eaba ke e eketsa ho litekanyetso tse likete tse 80 motsotsoana:

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

E ne e le lintlha tse ka bang likete tse 400 tsa data, li-triggers tse likete tse 280. Ho kenya, kamoo u ka bonang kateng, ho latela mojaro oa li-sinkers tsa histori (ho ne ho e-na le tse 30 tsa tsona) li ne li se li le holimo haholo. Eaba ke eketsa litekanyo tse fapaneng: li-sinkers tsa histori, cache ... Ho hardware ena, mojaro oa li-sinkers tsa histori o ile oa qala ho eketseha ho ea holimo, hoo e batlang e le "ka holim'a sethala" - ka lebaka leo, 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 shebile liparamente tsohle tsa sistimi (kamoo processor e sebelisoang ka teng, RAM) mme ka fumana hore ts'ebeliso ea disk e ne e le ngata haholo - ke fihletse boholo ba disk ena ho Hardware ena, mochining ona oa sebele. "Postgres" e ile ea qala ho lahla data ka matla joalo, 'me disk ha e sa na nako ea 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 tlhahiso, moo ho seng ho hlokahala ho etsa ho hong ka eona.

Teko ea ts'ebetso. NakoDB: 80 likete tsa NVPs

Mosebetsi oa ka o ka sehloohong 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 ho falla ha data hantle. Ka mor'a moo, ho seva sa Zabbix, boemo ba ho kenya li-sinkers historing, joalokaha u bona, bo 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 sekhahla se phahameng haholo (ehlile, eseng bakeng sa Yandex). Ka kakaretso sena ke setup se seholo, se nang le seva se le seng.

Teko ea ts'ebetso ea PostgreSQL: li-NVP tse likete tse 120

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 baloang 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 matsatsi a seng makae. Ntho ea bohlokoa ka ho fetisisa ke hore ka nako e ts'oanang likarolo tse ncha li bōpiloe ho TimescaleDB, 'me sena se ne se sa hlokomeloe ka ho feletseng bakeng sa ts'ebetso, e ke keng ea boleloa ka MySQL.

Ka tloaelo, li-partitions li bōptjoa bosiu, hobane hangata sena se thibela ho kenngoa le ho sebetsa ka litafole 'me se ka lebisa ho senyeha ha tšebeletso. Tabeng ena ha ho joalo! Mosebetsi o ka sehloohong e ne e le ho leka bokhoni ba TimescaleDB. Sephetho e bile palo e latelang: litekanyetso tse likete tse 120 motsotsoana.

Hape ho na le mehlala sechabeng:

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

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

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

Ke le memela bohle liketsahalong tsa rona: Seboka sa Moscow, Seboka sa Riga. Sebelisa liteishene tsa rona - Telegraph, forum, IRC. Haeba u na le lipotso, tloo tafoleng ea rona, re ka bua ka ntho e 'ngoe le e' ngoe.

Lipotso tsa Bamameli

Potso e tsoang ho bamameli (kamora mona - A): - Haeba TimescaleDB e le bonolo ho e lokisa, 'me e fana ka ts'ebetso e joalo ea ts'ebetso, joale mohlomong sena se lokela ho sebelisoa e le mokhoa o motle oa ho lokisa Zabbix le Postgres? Hona na ho na le maraba le mathata a tharollo ena, kapa ka mor'a moo, haeba ke entse qeto ea ho iketsetsa Zabbix, nka nka Postgres habonolo, 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 ena ke tlhahiso e ntle: sebelisa Postgres hang-hang ka katoloso ea TimescaleDB. Joalokaha ke se ke boletse, litlhahlobo tse ngata tse ntle, ho sa tsotellehe taba ea hore "tšobotsi" ena ke liteko. Empa ha e le hantle liteko li bontša hore ena ke tharollo e ntle (ka TimescaleDB) mme ke nahana hore e tla fetoha! Re ntse re beha leihlo hore na katoloso ena e tsoela pele joang mme re tla etsa liphetoho ha ho hlokahala.

Esita le nakong ea tsoelo-pele, re ne re itšetlehile ka e 'ngoe ea "likarolo" tsa bona tse tsebahalang: ho ne ho ka khoneha 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 ena. Ke khothaletsa ho sebelisa tharollo ena ho li-setups tse ngata. Haeba u sebelisa MySQL ... Bakeng sa li-setups tse tloaelehileng, tharollo leha e le efe e sebetsa hantle.

A: - Lirapeng tsa ho qetela tse tsoang sechabeng, ho ne ho e-na le kerafo e nang le "Mohlokomeli oa Ntlo":

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: - Hona joale ha ke khone ho bua hantle - ke tla sheba khoutu ebe ke u bolella ka ho qaqileng haholoanyane. E sebelisa lipotso tsa TimescaleDB ho se tlose likotoana, empa ho li kopanya ka tsela e itseng. Ha ke so itokisetsa ho araba potso ena ea tekheniki. Re tla fumana tse ling 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. Ka Timescale, kaha u na le likotoana, u ka li tlohela. Ka mantsoe a mang, o bolella feela faele e nang le 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 sebelisa lihakisi ho tšoara maemo a hau ha u khetha kapa ts'ebetsong e' ngoe 'me hang-hang e utloisisa hore chunk ena ha e sa le teng - "Ha ke sa tla hlola ke ea moo!" (data ha e fumanehe). Ke phetho! Ke hore, ho hlahlojoa ha tafole ho nkeloa sebaka ke ho tlosoa ha faele ea binary, kahoo e potlakile.

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

AG: - Ho laolla ho ka etsoa. 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 e romela ho database efe kapa efe u sebelisa sebatli se itseng. Ha e le hantle, batho ba bangata ba sebetsa hape le ho ngola ka ho toba ho database. Ka fofa, li-sinkers tsa histori li ngola tsena tsohle ho lifaele, li potoloha lifaele tsena, joalo-joalo, 'me u ka fetisetsa sena ho Clickhouse. Ha ke khone ho bua ka merero, empa mohlomong tšehetso e eketsehileng bakeng sa tharollo ea NoSQL (e kang Clickhouse) e tla tsoela pele.

A: - Ka kakaretso, ho bonahala eka u ka tlosa li-postgres ka ho feletseng?

AG: - Ehlile, karolo e thata ka ho fetesisa ho Zabbix ke litafole tsa nalane, tse bakang mathata le liketsahalo tse ngata. 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, 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 ka mokhoa o bonolo, kaha Clickhouse e na le sebopeho sa eona, empa ha ke tsebe hantle. Ho molemo ho hlahloba. Tsohle li ipapisitse le tlhophiso: hore na u na le mabotho a makae, joalo-joalo. Ho kenya ke ntho e le 'ngoe, empa hape o hloka ho fumana data ena - Grafana kapa ntho e' ngoe hape.

A: - Kahoo re bua ka ntoa e lekanang, eseng ka molemo o moholo oa li-database 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: - Zabbix e ne e na le RRD, mohlomong ka 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). Ha ho mohla re kileng ra sebelisa sebopeho se tloaelehileng bakeng sa li-database tsa SQL le RRD.

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

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

Eketsa ka tlhaloso