HighLoad ++, Andrey Gushchin (Zabbix): iṣẹ ṣiṣe giga ati ipinya abinibi

A yoo wo bi Zabbix ṣe n ṣiṣẹ pẹlu aaye data TimecaleDB bi ẹhin. A yoo fihan ọ bi o ṣe le bẹrẹ lati ibere ati bii o ṣe le jade lati PostgreSQL. A yoo tun pese awọn idanwo iṣẹ ṣiṣe afiwe ti awọn atunto meji.

HighLoad ++, Andrey Gushchin (Zabbix): iṣẹ ṣiṣe giga ati ipinya abinibi

HighLoad ++ Siberia 2019. Tomsk Hall. 24. Okudu, 16:00. Awọn wọnyi ati igbejade. Apejọ HighLoad ++ atẹle yoo waye ni Oṣu Kẹrin Ọjọ 6 ati 7, 2020 ni St. Awọn alaye ati awọn tiketi asopọ.

Andrey Gushchin (lẹhin - AG): - Emi jẹ ẹlẹrọ atilẹyin imọ-ẹrọ ZABBIX (lẹhinna tọka si “Zabbix”), olukọni. Mo ti n ṣiṣẹ ni atilẹyin imọ-ẹrọ fun diẹ sii ju ọdun 6 ati pe Mo ti ni iriri taara pẹlu iṣẹ ṣiṣe. Loni Emi yoo sọrọ nipa iṣẹ ṣiṣe ti TimescaleDB le pese nigba ti a bawe pẹlu PostgreSQL deede 10. Pẹlupẹlu, diẹ ninu apakan iforowero nipa bi o ṣe n ṣiṣẹ ni gbogbogbo.

Awọn italaya iṣelọpọ ti o ga julọ: lati gbigba data si mimọ data

Lati bẹrẹ pẹlu, awọn italaya iṣẹ ṣiṣe kan wa ti gbogbo eto ibojuwo koju. Ipenija iṣelọpọ akọkọ ni gbigba ati ṣiṣe data ni iyara.

HighLoad ++, Andrey Gushchin (Zabbix): iṣẹ ṣiṣe giga ati ipinya abinibi

Eto ibojuwo to dara yẹ ki o yarayara, gba gbogbo data ni akoko, ṣe ilana ni ibamu si awọn ikosile ti o nfa, iyẹn ni, ṣe ilana ni ibamu si diẹ ninu awọn ibeere (eyi yatọ si awọn eto oriṣiriṣi) ki o fipamọ sinu ibi ipamọ data lati le lo data yii ninu ojo iwaju.

HighLoad ++, Andrey Gushchin (Zabbix): iṣẹ ṣiṣe giga ati ipinya abinibi

Ipenija iṣẹ ṣiṣe keji jẹ ibi ipamọ itan. Fipamọ sinu aaye data nigbagbogbo ati ni iraye si iyara ati irọrun si awọn metiriki wọnyi ti a gba ni akoko kan. Ohun pataki julọ ni pe data yii rọrun lati gba, lo ninu awọn ijabọ, awọn aworan, awọn okunfa, ni diẹ ninu awọn iye ala, fun awọn itaniji, ati bẹbẹ lọ.

HighLoad ++, Andrey Gushchin (Zabbix): iṣẹ ṣiṣe giga ati ipinya abinibi

Ipenija iṣẹ ṣiṣe kẹta ni imukuro itan, iyẹn ni, nigbati o ba de aaye nibiti o ko nilo lati ṣafipamọ eyikeyi awọn metiriki alaye ti o ti gba ni ọdun 5 (paapaa awọn oṣu tabi oṣu meji). Diẹ ninu awọn apa netiwọki ti paarẹ, tabi diẹ ninu awọn agbalejo, awọn metiriki naa ko nilo mọ nitori pe wọn ti pẹ ati pe wọn ko gbajọ mọ. Gbogbo eyi nilo lati sọ di mimọ ki aaye data rẹ ko dagba ju. Ni gbogbogbo, itan-akọọlẹ imukuro jẹ igbagbogbo idanwo pataki fun ibi ipamọ - o nigbagbogbo ni ipa ti o lagbara pupọ lori iṣẹ ṣiṣe.

Bawo ni lati yanju awọn iṣoro caching?

Emi yoo sọrọ ni pato nipa Zabbix. Ni Zabbix, awọn ipe akọkọ ati keji jẹ ipinnu nipa lilo caching.

HighLoad ++, Andrey Gushchin (Zabbix): iṣẹ ṣiṣe giga ati ipinya abinibi

Gbigba data ati sisẹ - A lo Ramu lati tọju gbogbo data yii. Awọn data wọnyi yoo wa ni ijiroro ni awọn alaye diẹ sii.

Paapaa ni ẹgbẹ data data wa diẹ ninu caching fun awọn yiyan akọkọ - fun awọn aworan ati awọn nkan miiran.

Caching ni ẹgbẹ ti olupin Zabbix funrararẹ: a ni ConfigurationCache, ValueCache, HistoryCache, TrendsCache. Kini o jẹ?

HighLoad ++, Andrey Gushchin (Zabbix): iṣẹ ṣiṣe giga ati ipinya abinibi

ConfigurationCache jẹ kaṣe akọkọ ninu eyiti a tọju awọn metiriki, awọn ọmọ-ogun, awọn nkan data, awọn okunfa; ohun gbogbo ti o nilo lati ṣe ilana iṣaju, gba data, lati inu eyiti awọn ọmọ-ogun lati gba, pẹlu iru igbohunsafẹfẹ. Gbogbo eyi wa ni ipamọ ni ConfigurationCache ki o má ba lọ si ibi ipamọ data ki o ṣẹda awọn ibeere ti ko wulo. Lẹhin ti olupin naa bẹrẹ, a ṣe imudojuiwọn kaṣe yii (ṣẹda rẹ) ati ṣe imudojuiwọn lorekore (da lori awọn eto iṣeto).

HighLoad ++, Andrey Gushchin (Zabbix): iṣẹ ṣiṣe giga ati ipinya abinibi

Caching ni Zabbix. Gbigba data

Nibi aworan atọka naa tobi pupọ:

HighLoad ++, Andrey Gushchin (Zabbix): iṣẹ ṣiṣe giga ati ipinya abinibi

Awọn akọkọ ninu ero naa ni awọn agbowọ wọnyi:

HighLoad ++, Andrey Gushchin (Zabbix): iṣẹ ṣiṣe giga ati ipinya abinibi

Iwọnyi ni awọn ilana apejọ funrara wọn, ọpọlọpọ awọn “pollers” ti o ni iduro fun awọn oriṣiriṣi awọn apejọ. Wọn gba data nipasẹ icmp, ipmi, ati ọpọlọpọ awọn ilana ati gbe gbogbo rẹ lọ si iṣaju.

PreProcessing HistoryCache

Paapaa, ti a ba ti ṣe iṣiro awọn eroja data (awọn ti o faramọ pẹlu Zabbix mọ), iyẹn ni, iṣiro, awọn eroja data akojọpọ, a mu wọn taara lati ValueCache. Emi yoo sọ fun ọ bi o ti kun nigbamii. Gbogbo awọn agbowọ wọnyi lo ConfigurationCache lati gba awọn iṣẹ wọn ati lẹhinna gbe wọn lọ si iṣaju.

HighLoad ++, Andrey Gushchin (Zabbix): iṣẹ ṣiṣe giga ati ipinya abinibi

Iṣatunṣe tun nlo ConfigurationCache lati gba awọn igbesẹ iṣaaju ati ṣiṣe data yii ni awọn ọna oriṣiriṣi. Bibẹrẹ lati ẹya 4.2, a ti gbe lọ si aṣoju kan. Eyi jẹ irọrun pupọ, nitori ṣiṣe iṣaaju funrararẹ jẹ iṣẹ ṣiṣe ti o nira pupọ. Ati pe ti o ba ni Zabbix ti o tobi pupọ, pẹlu nọmba nla ti awọn eroja data ati igbohunsafẹfẹ gbigba giga, lẹhinna eyi jẹ ki iṣẹ naa rọrun pupọ.

Gẹgẹ bẹ, lẹhin ti a ti ṣe ilana data yii ni ọna kan nipa lilo iṣaju, a fipamọ sinu HistoryCache lati le ṣe ilana rẹ siwaju. Eyi pari gbigba data. A tẹsiwaju si ilana akọkọ.

Iṣẹ amuṣiṣẹpọ itan

HighLoad ++, Andrey Gushchin (Zabbix): iṣẹ ṣiṣe giga ati ipinya abinibi

Ilana akọkọ ni Zabbix (niwon o jẹ faaji monolithic) jẹ amuṣiṣẹpọ itan. Eyi ni ilana akọkọ ti o ṣe pataki pẹlu sisẹ atomiki ti eroja data kọọkan, iyẹn ni, iye kọọkan:

  • iye wa (o gba lati HistoryCache);
  • sọwedowo ni amuṣiṣẹpọ iṣeto ni: boya awọn okunfa eyikeyi wa fun iṣiro - ṣe iṣiro wọn;
    ti o ba wa - ṣẹda awọn iṣẹlẹ, ṣẹda escalation lati ṣẹda gbigbọn, ti o ba jẹ dandan ni ibamu si iṣeto;
  • igbasilẹ awọn okunfa fun ṣiṣe atẹle, apapọ; ti o ba ṣajọpọ lori wakati to kẹhin ati bẹbẹ lọ, iye yii jẹ iranti nipasẹ ValueCache ki o má ba lọ si tabili itan; Bayi, ValueCache ti kun pẹlu data pataki ti o jẹ dandan lati ṣe iṣiro awọn okunfa, awọn eroja ti a ṣe iṣiro, ati bẹbẹ lọ;
  • lẹhinna Amuṣiṣẹpọ Itan kọ gbogbo data si ibi ipamọ data;
  • database kọ wọn si disk - eyi ni ibi ti ilana ṣiṣe pari.

Aaye data. Caching

Ni ẹgbẹ data data, nigba ti o ba fẹ wo awọn aworan tabi diẹ ninu awọn ijabọ lori awọn iṣẹlẹ, ọpọlọpọ awọn kaṣe wa. Ṣugbọn ninu ijabọ yii Emi kii yoo sọrọ nipa wọn.

Fun MySQL Innodb_buffer_pool wa, ati opo ti awọn kaṣe oriṣiriṣi ti o tun le tunto.
Ṣugbọn awọn wọnyi ni akọkọ:

  • pín_buffers;
  • munadoko_cache_size;
  • pín_pool.

HighLoad ++, Andrey Gushchin (Zabbix): iṣẹ ṣiṣe giga ati ipinya abinibi

Fun gbogbo awọn apoti isura infomesonu, Mo sọ pe awọn kaṣe kan wa ti o gba ọ laaye lati fipamọ sinu Ramu data ti o nilo nigbagbogbo fun awọn ibeere. Wọn ni awọn imọ-ẹrọ tiwọn fun eyi.

About Database Performance

Nitorinaa, agbegbe ifigagbaga kan wa, iyẹn ni, olupin Zabbix n gba data ati ṣe igbasilẹ rẹ. Nigbati o ba tun bẹrẹ, o tun ka lati itan-akọọlẹ lati kun ValueCache ati bẹbẹ lọ. Nibi o le ni awọn iwe afọwọkọ ati awọn ijabọ ti o lo Zabbix API, eyiti a kọ sori wiwo wẹẹbu kan. Zabbix API wọ ibi ipamọ data ati gba data pataki lati gba awọn aworan, awọn ijabọ, tabi iru atokọ ti awọn iṣẹlẹ, awọn iṣoro aipẹ.

HighLoad ++, Andrey Gushchin (Zabbix): iṣẹ ṣiṣe giga ati ipinya abinibi

Paapaa ojutu iworan olokiki pupọ ni Grafana, eyiti awọn olumulo wa lo. Ni anfani lati wọle taara mejeeji nipasẹ Zabbix API ati nipasẹ data data. O tun ṣẹda idije kan fun gbigba data: finer kan, yiyi ti o dara julọ ti data data ni a nilo lati ni ibamu pẹlu ifijiṣẹ iyara ti awọn abajade ati idanwo.

HighLoad ++, Andrey Gushchin (Zabbix): iṣẹ ṣiṣe giga ati ipinya abinibi

Pipa itan kuro. Zabbix ni Olutọju Ile

Ipe kẹta ti o lo ni Zabbix jẹ itanjẹ piparẹ nipa lilo Olutọju Ile. Olutọju ile tẹle gbogbo awọn eto, iyẹn ni, awọn eroja data wa tọka bi o ṣe pẹ to lati fipamọ (ni awọn ọjọ), bawo ni o ṣe pẹ to lati tọju awọn aṣa, ati awọn agbara ti awọn iyipada.

Emi ko sọrọ nipa TrendCache, eyiti a ṣe iṣiro lori fifo: data de, a ṣajọpọ fun wakati kan (julọ awọn nọmba wọnyi fun wakati to kẹhin), iye naa jẹ aropin / o kere julọ ati pe a gba silẹ lẹẹkan ni wakati kan ninu tabili ti awọn dainamiki ti awọn ayipada ("Trends"). “Olutọju ile” bẹrẹ ati paarẹ data lati ibi ipamọ data nipa lilo awọn yiyan deede, eyiti ko munadoko nigbagbogbo.

Bawo ni lati loye pe ko wulo? O le wo aworan atẹle lori awọn aworan iṣẹ ti awọn ilana inu:

HighLoad ++, Andrey Gushchin (Zabbix): iṣẹ ṣiṣe giga ati ipinya abinibi

Amuṣiṣẹpọ itan-akọọlẹ rẹ n ṣiṣẹ nigbagbogbo (aworan pupa). Ati awọn "pupa" awonya ti o lọ lori oke. Eyi jẹ “olutọju ile” ti o bẹrẹ ati duro de ibi ipamọ data lati pa gbogbo awọn ori ila ti o ti ṣalaye rẹ.

Jẹ ki a mu ID Nkan kan: o nilo lati pa 5 ẹgbẹrun ti o kẹhin; dajudaju, nipasẹ awọn atọka. Ṣugbọn nigbagbogbo dataset naa tobi pupọ - ibi ipamọ data tun ka lati disiki o si fi sii sinu kaṣe, ati pe eyi jẹ iṣẹ ṣiṣe gbowolori pupọ fun data data. Ti o da lori iwọn rẹ, eyi le ja si awọn iṣoro iṣẹ kan.

O le mu Olutọju Ile kuro ni ọna ti o rọrun - a ni wiwo wẹẹbu ti o faramọ. Awọn eto ni gbogbogbo Isakoso (awọn eto fun “olutọju ile”) a mu itọju inu inu fun itan inu ati awọn aṣa. Nitorinaa, Olutọju Ile ko ṣe iṣakoso eyi mọ:

HighLoad ++, Andrey Gushchin (Zabbix): iṣẹ ṣiṣe giga ati ipinya abinibi

Kini o le ṣe nigbamii? O wa ni pipa, awọn aworan rẹ ti gbe jade… Kini awọn iṣoro siwaju sii le dide ninu ọran yii? Kini o le ṣe iranlọwọ?

Pipin (apakan)

Ni igbagbogbo eyi ni tunto ni ọna ti o yatọ lori data data ibatan kọọkan ti Mo ti ṣe atokọ. MySQL ni imọ-ẹrọ tirẹ. Ṣugbọn lapapọ wọn jọra pupọ nigbati o ba de PostgreSQL 10 ati MySQL. Nitoribẹẹ, ọpọlọpọ awọn iyatọ inu wa ni bii gbogbo rẹ ṣe ṣe imuse ati bii gbogbo rẹ ṣe ni ipa lori iṣẹ ṣiṣe. Ṣugbọn ni gbogbogbo, ẹda ti ipin tuntun nigbagbogbo tun nyorisi awọn iṣoro kan.

HighLoad ++, Andrey Gushchin (Zabbix): iṣẹ ṣiṣe giga ati ipinya abinibi

Da lori iṣeto rẹ (iye data ti o ṣẹda ni ọjọ kan), wọn nigbagbogbo ṣeto o kere ju - eyi jẹ ọjọ 1 / ipele, ati fun “awọn aṣa”, awọn iyipada ti awọn ayipada - oṣu 1 / ipele tuntun. Eyi le yipada ti o ba ni iṣeto ti o tobi pupọ.

Jẹ ki a sọ lẹsẹkẹsẹ nipa iwọn ti iṣeto: to 5 ẹgbẹrun awọn iye tuntun fun iṣẹju-aaya (eyiti a pe ni nvps) - eyi ni ao gba si “iṣagbekale” kekere. Apapọ - lati 5 si 25 ẹgbẹrun iye fun keji. Gbogbo ohun ti o wa loke ti tobi tẹlẹ ati awọn fifi sori ẹrọ ti o tobi pupọ ti o nilo iṣeto ṣọra pupọ ti data data.

Lori awọn fifi sori ẹrọ ti o tobi pupọ, ọjọ 1 le ma dara julọ. Emi tikalararẹ ti rii awọn ipin lori MySQL ti 40 gigabytes fun ọjọ kan (ati pe o le jẹ diẹ sii). Eyi jẹ iye data ti o tobi pupọ, eyiti o le ja si awọn iṣoro diẹ. O nilo lati dinku.

Kini idi ti o nilo ipin?

Ohun ti ipin pese, Mo ro pe gbogbo eniyan mo, ni tabili ipin. Nigbagbogbo iwọnyi jẹ awọn faili lọtọ lori disiki ati awọn ibeere igba. O yan ipin kan ni aipe diẹ sii ti o ba jẹ apakan ti ipin deede.

HighLoad ++, Andrey Gushchin (Zabbix): iṣẹ ṣiṣe giga ati ipinya abinibi

Fun Zabbix, ni pato, o ti lo nipasẹ ibiti, nipasẹ ibiti, ti o jẹ, a lo timestamp (nọmba deede, akoko lati ibẹrẹ ti epoch). O pato awọn ibere ti awọn ọjọ / opin ti awọn ọjọ, ati yi ni ipin. Nitorinaa, ti o ba n beere fun data ti o jẹ ọjọ meji, ohun gbogbo ni a gba pada lati ibi ipamọ data ni iyara, nitori o nilo lati gbe faili kan nikan sinu kaṣe ki o da pada (dipo tabili nla kan).

HighLoad ++, Andrey Gushchin (Zabbix): iṣẹ ṣiṣe giga ati ipinya abinibi

Ọpọlọpọ awọn infomesonu tun titẹ soke ifibọ (fi sii sinu ọkan tabili omo). Mo n sọrọ lainidii fun bayi, ṣugbọn eyi tun ṣee ṣe. Ipinpin nigbagbogbo ṣe iranlọwọ.

Elasticsearch fun NoSQL

Laipe, ni 3.4, a ṣe imuse ojutu NoSQL kan. Ṣe afikun agbara lati kọ ni Elasticsearch. O le kọ awọn iru kan: o yan - boya kọ awọn nọmba tabi diẹ ninu awọn ami; a ni ọrọ okun, o le kọ awọn akọọlẹ si Elasticsearch...Ni ibamu, wiwo wẹẹbu yoo tun wọle si Elasticsearch. Eyi ṣiṣẹ nla ni awọn igba miiran, ṣugbọn ni akoko o le ṣee lo.

HighLoad ++, Andrey Gushchin (Zabbix): iṣẹ ṣiṣe giga ati ipinya abinibi

TimescaleDB. Hypertables

Fun 4.4.2 a san ifojusi si ohun kan bi TimescaleDB. Kini o jẹ? Eyi jẹ itẹsiwaju fun PostgreSQL, iyẹn ni, o ni wiwo PostgreSQL abinibi kan. Pẹlupẹlu, ifaagun yii ngbanilaaye lati ṣiṣẹ daradara diẹ sii pẹlu data jara ati ni ipin laifọwọyi. Ohun ti o dabi:

HighLoad ++, Andrey Gushchin (Zabbix): iṣẹ ṣiṣe giga ati ipinya abinibi

Eyi jẹ hypertable - iru imọran wa ni Timecale. Eleyi jẹ a hypertable ti o ṣẹda, ati awọn ti o ni awọn chunks. Chunks jẹ awọn ipin, iwọnyi jẹ awọn tabili ọmọde, ti Emi ko ba ṣe aṣiṣe. O munadoko gaan.

HighLoad ++, Andrey Gushchin (Zabbix): iṣẹ ṣiṣe giga ati ipinya abinibi

TimecaleDB ati PostgreSQL

Gẹgẹbi awọn aṣelọpọ TimescaleDB ṣe idaniloju, wọn lo algorithm ti o pe diẹ sii fun awọn ibeere ṣiṣe, ni pataki awọn ifibọ, eyiti o fun wọn laaye lati ni isunmọ iṣẹ ṣiṣe igbagbogbo pẹlu iwọn jijẹ ti ifibọ data. Iyẹn ni, lẹhin awọn ori ila 200 miliọnu ti Postgres, ọkan ti o ṣe deede bẹrẹ lati sag pupọ ati padanu iṣẹ gangan si odo, lakoko ti Timecale ngbanilaaye lati fi awọn ifibọ sii daradara bi o ti ṣee pẹlu eyikeyi iye data.

HighLoad ++, Andrey Gushchin (Zabbix): iṣẹ ṣiṣe giga ati ipinya abinibi

Bawo ni lati fi TimecaleDB sori ẹrọ? O rọrun!

O wa ninu iwe, o ti ṣe apejuwe rẹ - o le fi sii lati awọn idii fun eyikeyi ... O da lori awọn idii Postgres osise. Le ṣe akopọ pẹlu ọwọ. O ṣẹlẹ pe Mo ni lati ṣajọ fun data data.

HighLoad ++, Andrey Gushchin (Zabbix): iṣẹ ṣiṣe giga ati ipinya abinibi

Lori Zabbix a kan mu Ifaagun ṣiṣẹ. Mo ro pe awọn ti o lo Ifaagun ni Postgres... O kan mu Ifaagun ṣiṣẹ, ṣẹda rẹ fun data data Zabbix ti o nlo.

Ati igbesẹ ti o kẹhin ...

TimescaleDB. Iṣilọ ti awọn tabili itan

O nilo lati ṣẹda hypertable kan. Iṣẹ pataki kan wa fun eyi - Ṣẹda hypertable. Ninu rẹ, paramita akọkọ ni tabili ti o nilo ninu ibi ipamọ data yii (fun eyiti o nilo lati ṣẹda hypertable).

HighLoad ++, Andrey Gushchin (Zabbix): iṣẹ ṣiṣe giga ati ipinya abinibi

Aaye nipasẹ eyiti lati ṣẹda, ati chunk_time_interval (eyi ni aarin awọn chunks (awọn ipin ti o nilo lati lo) 86 jẹ ọjọ kan.

Migrate_data paramita: Ti o ba fi sii si otitọ, lẹhinna eyi yoo gbe gbogbo data lọwọlọwọ lọ si awọn ṣoki ti a ṣẹda tẹlẹ.

Mo ti lo migrate_data funrarami - o gba iye akoko ti o tọ, da lori bawo ni data data rẹ ṣe tobi to. Mo ni lori terabyte - o gba to wakati kan lati ṣẹda. Ni awọn igba miiran, lakoko idanwo, Mo paarẹ data itan fun ọrọ (history_text) ati okun (history_str) ki o má ba gbe wọn - wọn ko nifẹ si mi gaan.

Ati pe a ṣe imudojuiwọn to kẹhin ninu db_extention wa: a fi timescaledb sori ẹrọ ki data data ati, ni pataki, Zabbix wa loye pe db_extention wa. O muu ṣiṣẹ ati lo sintasi ti o pe ati awọn ibeere si ibi ipamọ data, ni lilo “awọn ẹya” wọnyẹn ti o ṣe pataki fun TimescaleDB.

Iṣeto ni olupin

Mo ti lo meji olupin. Olupin akọkọ jẹ ẹrọ foju iwọn kekere, awọn ero isise 20, gigabytes 16 ti Ramu. Mo tunto Postgres 10.8 lori rẹ:

HighLoad ++, Andrey Gushchin (Zabbix): iṣẹ ṣiṣe giga ati ipinya abinibi

Eto ẹrọ naa jẹ Debian, eto faili jẹ xfs. Mo ṣe awọn eto to kere julọ lati lo aaye data pataki yii, iyokuro kini Zabbix funrararẹ yoo lo. Lori ẹrọ kanna ni olupin Zabbix kan wa, PostgreSQL ati awọn aṣoju fifuye.

HighLoad ++, Andrey Gushchin (Zabbix): iṣẹ ṣiṣe giga ati ipinya abinibi

Mo ti lo awọn aṣoju 50 ti nṣiṣe lọwọ ti o lo LoadableModule lati ṣe awọn abajade oriṣiriṣi ni kiakia. Wọn jẹ awọn ti o ṣẹda awọn okun, awọn nọmba, ati bẹbẹ lọ. Mo ti kun awọn database pẹlu kan pupo ti data. Ni ibẹrẹ, iṣeto ni awọn eroja data 5 ẹgbẹrun fun agbalejo, ati isunmọ ipin data kọọkan ti o ni okunfa kan - ni ibere fun eyi lati jẹ iṣeto gidi. Nigba miiran o paapaa nilo okunfa diẹ sii ju ọkan lọ lati lo.

HighLoad ++, Andrey Gushchin (Zabbix): iṣẹ ṣiṣe giga ati ipinya abinibi

Mo ṣe ilana aarin imudojuiwọn ati fifuye funrararẹ nipasẹ kii ṣe lilo awọn aṣoju 50 nikan (fikun diẹ sii), ṣugbọn tun lo awọn eroja data ti o ni agbara ati idinku aarin aarin imudojuiwọn si awọn aaya 4.

Idanwo iṣẹ. PostgreSQL: 36 ẹgbẹrun NVPs

Ifilọlẹ akọkọ, iṣeto akọkọ ti Mo ni wa lori PostreSQL 10 mimọ lori ohun elo yii (awọn iye ẹgbẹrun 35 fun iṣẹju keji). Ni gbogbogbo, bi o ti le rii loju iboju, fifi data sii gba awọn ida ti iṣẹju-aaya - ohun gbogbo dara ati iyara, awọn awakọ SSD (200 gigabytes). Ohun kan ni pe 20 GB kun ni iyara pupọ.

HighLoad ++, Andrey Gushchin (Zabbix): iṣẹ ṣiṣe giga ati ipinya abinibi

Nibẹ ni yio je oyimbo kan pupo ti iru awonya ni ojo iwaju. Eyi jẹ Dasibodu iṣẹ ṣiṣe olupin Zabbix boṣewa kan.

HighLoad ++, Andrey Gushchin (Zabbix): iṣẹ ṣiṣe giga ati ipinya abinibi

Aya akọkọ jẹ nọmba awọn iye fun iṣẹju keji (bulu, oke apa osi), awọn iye 35 ẹgbẹrun ninu ọran yii. Eyi (aarin oke) ni ikojọpọ awọn ilana iṣelọpọ, ati eyi (oke apa ọtun) ni ikojọpọ awọn ilana inu: awọn amuṣiṣẹpọ itan ati olutọju ile, eyiti o wa nibi (aarin isalẹ) ti nṣiṣẹ fun igba diẹ.

Iyaworan yii (aarin isalẹ) fihan lilo ValueCache - melo ni iye Cache deba fun awọn okunfa (ọpọlọpọ awọn iye ẹgbẹrun ni iṣẹju-aaya). Aworan pataki miiran jẹ ẹkẹrin (isalẹ apa osi), eyiti o fihan lilo HistoryCache, eyiti Mo ti sọrọ nipa, eyiti o jẹ ifipamọ ṣaaju fifi sii sinu ibi ipamọ data.

Idanwo iṣẹ. PostgreSQL: 50 ẹgbẹrun NVPs

Nigbamii, Mo pọ si fifuye si awọn iye 50 ẹgbẹrun fun iṣẹju kan lori ohun elo kanna. Nigbati o ba kojọpọ nipasẹ Olutọju Ile, awọn iye 10 ẹgbẹrun ni a gbasilẹ ni awọn aaya 2-3 pẹlu iṣiro. Kini, ni otitọ, ti han ni sikirinifoto atẹle:

HighLoad ++, Andrey Gushchin (Zabbix): iṣẹ ṣiṣe giga ati ipinya abinibi

"Olutọju ile" ti bẹrẹ lati dabaru pẹlu iṣẹ, ṣugbọn ni gbogbogbo, fifuye lori awọn ẹlẹgẹ itan-sinker tun wa ni ipele ti 60% (awọn aworan kẹta, oke apa ọtun). HistoryCache ti bẹrẹ lati kun ni itara lakoko ti Olutọju Ile nṣiṣẹ (isalẹ apa osi). O jẹ nipa idaji gigabyte, 20% kun.

HighLoad ++, Andrey Gushchin (Zabbix): iṣẹ ṣiṣe giga ati ipinya abinibi

Idanwo iṣẹ. PostgreSQL: 80 ẹgbẹrun NVPs

Lẹhinna Mo pọ si awọn iye 80 ẹgbẹrun fun iṣẹju kan:

HighLoad ++, Andrey Gushchin (Zabbix): iṣẹ ṣiṣe giga ati ipinya abinibi

O fẹrẹ to 400 ẹgbẹrun awọn eroja data, 280 ẹgbẹrun awọn okunfa. Awọn ifibọ, bi o ti le ri, ni awọn ofin ti awọn fifuye ti itan sinkers (nibẹ ni o wa 30 ninu wọn) ti tẹlẹ oyimbo ga. Lẹhinna Mo pọ si ọpọlọpọ awọn aye: awọn olupilẹṣẹ itan, kaṣe… Lori ohun elo yii, ẹru lori awọn ẹlẹsẹ itan bẹrẹ si pọ si iwọn, o fẹrẹ “lori selifu” - ni ibamu, HistoryCache lọ sinu ẹru giga pupọ:

HighLoad ++, Andrey Gushchin (Zabbix): iṣẹ ṣiṣe giga ati ipinya abinibi

Ni gbogbo akoko yii Mo ṣe abojuto gbogbo awọn aye eto (bawo ni a ṣe lo ero isise naa, Ramu) ati rii pe lilo disk jẹ o pọju - Mo ṣaṣeyọri agbara ti o pọju ti disk yii lori ohun elo yii, lori ẹrọ foju yii. "Postgres" bẹrẹ lati da data silẹ ni itara ni iru kikankikan, ati pe disiki ko ni akoko lati kọ, ka…

HighLoad ++, Andrey Gushchin (Zabbix): iṣẹ ṣiṣe giga ati ipinya abinibi

Mo mu olupin miiran ti o ti ni awọn ilana 48 tẹlẹ ati 128 gigabytes ti Ramu:

HighLoad ++, Andrey Gushchin (Zabbix): iṣẹ ṣiṣe giga ati ipinya abinibi

Mo tun “ṣe atunṣe” rẹ - amuṣiṣẹpọ itan-akọọlẹ (awọn ege 60) ati ṣaṣeyọri iṣẹ itẹwọgba. Ni otitọ, a ko wa "lori selifu," ṣugbọn eyi le jẹ opin ti iṣelọpọ, nibiti o ti jẹ dandan tẹlẹ lati ṣe nkan nipa rẹ.

Idanwo iṣẹ. TimescaleDB: 80 ẹgbẹrun NVPs

Iṣẹ akọkọ mi ni lati lo TimescaleDB. Aworan kọọkan fihan fibọ kan:

HighLoad ++, Andrey Gushchin (Zabbix): iṣẹ ṣiṣe giga ati ipinya abinibi

Awọn ikuna wọnyi jẹ iṣilọ data ni pipe. Lẹhin iyẹn, ninu olupin Zabbix, profaili ikojọpọ ti awọn sinkers itan, bi o ti le rii, yipada pupọ. O faye gba o lati fi data sii ni igba mẹta ni iyara ati lo kere si HistoryCache - ni ibamu, iwọ yoo ni data ti a firanṣẹ ni akoko. Lẹẹkansi, 3 ẹgbẹrun awọn iye fun iṣẹju-aaya jẹ oṣuwọn ti o ga julọ (dajudaju, kii ṣe fun Yandex). Lapapọ eyi jẹ iṣeto ti o tobi pupọ, pẹlu olupin kan.

Idanwo iṣẹ ṣiṣe PostgreSQL: 120 ẹgbẹrun NVPs

Nigbamii, Mo pọ si iye nọmba awọn eroja data si idaji miliọnu kan ati gba iye iṣiro ti 125 ẹgbẹrun fun iṣẹju kan:

HighLoad ++, Andrey Gushchin (Zabbix): iṣẹ ṣiṣe giga ati ipinya abinibi

Ati pe Mo ni awọn aworan wọnyi:

HighLoad ++, Andrey Gushchin (Zabbix): iṣẹ ṣiṣe giga ati ipinya abinibi

Ni opo, eyi jẹ iṣeto iṣẹ, o le ṣiṣẹ fun igba pipẹ. Sugbon niwon Mo ti nikan ní a 1,5 terabyte disk, Mo ti lo soke ni kan tọkọtaya ti ọjọ. Ohun pataki julọ ni pe ni akoko kanna awọn ipin tuntun ni a ṣẹda lori TimescaleDB, ati pe eyi ko ṣe akiyesi patapata fun iṣẹ ṣiṣe, eyiti a ko le sọ nipa MySQL.

Ni deede, awọn ipin ni a ṣẹda ni alẹ, nitori eyi ni gbogbogbo ṣe idiwọ ifibọ ati ṣiṣẹ pẹlu awọn tabili ati pe o le ja si ibajẹ iṣẹ naa. Ni idi eyi eyi kii ṣe ọran naa! Iṣẹ akọkọ ni lati ṣe idanwo awọn agbara ti TimescaleDB. Abajade jẹ nọmba wọnyi: 120 ẹgbẹrun iye fun iṣẹju kan.

Awọn apẹẹrẹ tun wa ni agbegbe:

HighLoad ++, Andrey Gushchin (Zabbix): iṣẹ ṣiṣe giga ati ipinya abinibi

Eniyan naa tun tan TimescaleDB ati fifuye lori lilo io.weight silẹ lori ero isise; ati lilo awọn eroja ilana inu ti tun dinku nitori ifisi ti TimescaleDB. Pẹlupẹlu, iwọnyi jẹ awọn disiki pancake lasan, iyẹn ni, ẹrọ foju foju kan lori awọn disiki lasan (kii ṣe awọn SSDs)!

Fun diẹ ninu awọn iṣeto kekere ti o ni opin nipasẹ iṣẹ disiki, TimescaleDB, ni ero mi, jẹ ojutu ti o dara pupọ. Yoo gba ọ laaye lati tẹsiwaju ṣiṣẹ ṣaaju gbigbe si ohun elo yiyara fun data data.

Mo pe gbogbo nyin si awọn iṣẹlẹ wa: Apejọ ni Moscow, Summit ni Riga. Lo awọn ikanni wa - Telegram, forum, IRC. Ti o ba ni ibeere eyikeyi, wa si tabili wa, a le sọrọ nipa ohun gbogbo.

Awọn ibeere Awọn olugbo

Ibeere lati ọdọ awọn olugbo (lẹhin - A): - Ti TimescaleDB jẹ rọrun pupọ lati tunto, ati pe o fun iru igbelaruge iṣẹ, lẹhinna boya eyi yẹ ki o lo bi adaṣe ti o dara julọ fun atunto Zabbix pẹlu Postgres? Ati pe o wa awọn ipalara ati awọn aila-nfani ti ojutu yii, tabi lẹhin gbogbo, ti Mo ba pinnu lati ṣe Zabbix fun ara mi, Mo le ni rọọrun mu Postgres, fi Timecale sori ẹrọ lẹsẹkẹsẹ, lo ati pe ko ronu nipa awọn iṣoro eyikeyi?

HighLoad ++, Andrey Gushchin (Zabbix): iṣẹ ṣiṣe giga ati ipinya abinibi

AG: – Bẹẹni, Emi yoo sọ pe eyi jẹ iṣeduro to dara: lo Postgres lẹsẹkẹsẹ pẹlu itẹsiwaju TimescaleDB. Gẹgẹbi Mo ti sọ tẹlẹ, ọpọlọpọ awọn atunyẹwo to dara, botilẹjẹpe “ẹya-ara” yii jẹ idanwo. Ṣugbọn ni otitọ awọn idanwo fihan pe eyi jẹ ojutu nla kan (pẹlu TimescaleDB) ati pe Mo ro pe yoo dagbasoke! A n ṣe abojuto bii itẹsiwaju yii ṣe ndagba ati pe yoo ṣe awọn ayipada bi o ṣe nilo.

Paapaa lakoko idagbasoke, a gbẹkẹle ọkan ninu awọn “awọn ẹya ara ẹrọ” ti a mọ daradara: o ṣee ṣe lati ṣiṣẹ pẹlu awọn chunks diẹ ti o yatọ. Ṣugbọn lẹhinna wọn ge kuro ni itusilẹ atẹle, ati pe a ni lati da gbigbekele koodu yii duro. Emi yoo ṣeduro lilo ojutu yii lori ọpọlọpọ awọn iṣeto. Ti o ba lo MySQL ... Fun awọn iṣeto apapọ, eyikeyi ojutu ṣiṣẹ daradara.

A: - Lori awọn aworan ti o kẹhin lati agbegbe, aworan kan wa pẹlu “Olutọju Ile”:

HighLoad ++, Andrey Gushchin (Zabbix): iṣẹ ṣiṣe giga ati ipinya abinibi

O tesiwaju lati ṣiṣẹ. Kini Olutọju Ile ṣe pẹlu TimescaleDB?

AG: - Bayi Emi ko le sọ daju - Emi yoo wo koodu naa ati sọ fun ọ ni awọn alaye diẹ sii. O nlo awọn ibeere TimescaleDB kii ṣe lati paarẹ awọn chunks, ṣugbọn lati ṣajọpọ wọn bakan. Emi ko ṣetan lati dahun ibeere imọ-ẹrọ yii sibẹsibẹ. A yoo wa diẹ sii ni iduro loni tabi ọla.

A: - Mo ni iru ibeere kan - nipa iṣẹ ṣiṣe ti piparẹ ni Timecale.
A (idahun lati ọdọ awọn olugbo): - Nigbati o ba paarẹ data lati tabili kan, ti o ba ṣe nipasẹ piparẹ, lẹhinna o nilo lati lọ nipasẹ tabili - paarẹ, nu, samisi ohun gbogbo fun igbale ọjọ iwaju. Ni Timecale, niwon o ni awọn chunks, o le ju silẹ. Ni aijọju sọrọ, o kan sọ fun faili ti o wa ninu data nla: “Paarẹ!”

Timecale nìkan loye pe iru chunk kan ko si mọ. Ati pe niwọn igba ti o ti ṣepọ sinu oluṣeto ibeere, o nlo awọn kio lati mu awọn ipo rẹ ni yiyan tabi awọn iṣẹ ṣiṣe miiran ati lẹsẹkẹsẹ loye pe chunk yii ko si mọ - “Emi kii yoo lọ sibẹ mọ!” (data ko si). Gbogbo ẹ niyẹn! Iyẹn ni, ọlọjẹ tabili kan rọpo nipasẹ piparẹ faili alakomeji, nitorinaa o yara.

A: – A ti fọwọkan lori koko ti kii-SQL. Niwọn bi mo ti loye, Zabbix ko nilo gaan lati yi data naa pada, ati pe gbogbo eyi jẹ nkan bi log. Ṣe o ṣee ṣe lati lo awọn apoti isura infomesonu pataki ti ko le yi data wọn pada, ṣugbọn ni akoko kanna fipamọ, ṣajọpọ, ati pinpin ni iyara pupọ - Clickhouse, fun apẹẹrẹ, ohunkan Kafka-bi?... Kafka tun jẹ log! Ṣe o ṣee ṣe lati bakan ṣepọ wọn?

AG: - Unloading le ṣee ṣe. A ni “ẹya-ara” kan lati ẹya 3.4: o le kọ gbogbo awọn faili itan, awọn iṣẹlẹ, ohun gbogbo miiran si awọn faili; ati lẹhinna firanṣẹ si eyikeyi data data miiran nipa lilo oluṣakoso diẹ. Ni otitọ, ọpọlọpọ eniyan tun ṣiṣẹ ati kọ taara si ibi ipamọ data. Lori awọn fly, itan sinkers kọ gbogbo eyi sinu awọn faili, n yi awọn faili, ati be be lo, ati awọn ti o le gbe yi si Clickhouse. Emi ko le sọ nipa awọn ero, ṣugbọn boya atilẹyin siwaju sii fun awọn solusan NoSQL (bii Clickhouse) yoo tẹsiwaju.

A: – Ni gbogbogbo, o wa ni jade ti o le patapata xo postgres?

AG: - Nitoribẹẹ, apakan ti o nira julọ ni Zabbix ni awọn tabili itan, eyiti o ṣẹda awọn iṣoro pupọ julọ ati awọn iṣẹlẹ. Ni idi eyi, ti o ko ba tọju awọn iṣẹlẹ fun igba pipẹ ati ki o tọju itan pẹlu awọn aṣa ni diẹ ninu awọn ipamọ yara miiran, lẹhinna ni apapọ, Mo ro pe, kii yoo ni awọn iṣoro.

A: - Ṣe o le ṣe iṣiro iye iyara ti ohun gbogbo yoo ṣiṣẹ ti o ba yipada si Clickhouse, fun apẹẹrẹ?

AG: - Emi ko ṣe idanwo rẹ. Mo ro pe o kere ju awọn nọmba kanna le ṣee ṣe ni irọrun, fun pe Clickhouse ni wiwo tirẹ, ṣugbọn Emi ko le sọ daju. O dara lati ṣe idanwo. Gbogbo rẹ da lori iṣeto ni: ọpọlọpọ awọn ogun ti o ni, ati bẹbẹ lọ. Fi sii jẹ ohun kan, ṣugbọn o tun nilo lati gba data yii pada - Grafana tabi nkan miiran.

A: - Nitorinaa a n sọrọ nipa ija dogba, kii ṣe nipa anfani nla ti awọn apoti isura infomesonu iyara wọnyi?

AG: - Mo ro pe nigba ti a ba ṣepọ, awọn idanwo deede yoo wa.

A: - Nibo ni RRD atijọ ti o dara lọ? Kini o jẹ ki o yipada si awọn apoti isura data SQL? Ni ibẹrẹ, gbogbo awọn metiriki ni a gba lori RRD.

AG: - Zabbix ni RRD, boya ni ẹya atijọ pupọ. Awọn apoti isura infomesonu SQL nigbagbogbo ti wa - ọna ti aṣa. Ọna Ayebaye jẹ MySQL, PostgreSQL (wọn ti wa fun igba pipẹ pupọ). A fẹrẹ ko lo wiwo ti o wọpọ fun awọn apoti isura data SQL ati RRD.

HighLoad ++, Andrey Gushchin (Zabbix): iṣẹ ṣiṣe giga ati ipinya abinibi

Diẹ ninu awọn ipolowo 🙂

O ṣeun fun gbigbe pẹlu wa. Ṣe o fẹran awọn nkan wa? Ṣe o fẹ lati rii akoonu ti o nifẹ si diẹ sii? Ṣe atilẹyin fun wa nipa gbigbe aṣẹ tabi iṣeduro si awọn ọrẹ, awọsanma VPS fun awọn olupilẹṣẹ lati $ 4.99, afọwọṣe alailẹgbẹ ti awọn olupin ipele-iwọle, eyiti a ṣẹda nipasẹ wa fun ọ: Gbogbo otitọ nipa VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps lati $19 tabi bi o ṣe le pin olupin kan? (wa pẹlu RAID1 ati RAID10, to awọn ohun kohun 24 ati to 40GB DDR4).

Dell R730xd 2x din owo ni Equinix Tier IV ile-iṣẹ data ni Amsterdam? Nikan nibi 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV lati $199 ni Netherlands! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - lati $99! Ka nipa Bii o ṣe le kọ Infrastructure Corp. kilasi pẹlu awọn lilo ti Dell R730xd E5-2650 v4 apèsè pa 9000 yuroopu fun Penny?

orisun: www.habr.com

Fi ọrọìwòye kun