{"id":38927,"date":"2019-10-31T22:26:48","date_gmt":"2019-10-31T19:26:48","guid":{"rendered":"https:\/\/prohoster.info\/blog\/vysokaya-proizvoditelnost-i-nativnoe-partitsionirovanie-zabbix-s-podderzhkoj-timescaledb\/"},"modified":"2019-10-31T22:26:48","modified_gmt":"2019-10-31T19:26:48","slug":"vysokaya-proizvoditelnost-i-nativnoe-partitsionirovanie-zabbix-s-podderzhkoj-timescaledb","status":"publish","type":"post","link":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/vysokaya-proizvoditelnost-i-nativnoe-partitsionirovanie-zabbix-s-podderzhkoj-timescaledb","title":{"rendered":"Vysok\u00fd v\u00fdkon a nativn\u00ed partitioning: Zabbix s podporou TimescaleDB","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Zabbix je monitorovac\u00ed syst\u00e9m. Jako ka\u017ed\u00fd jin\u00fd syst\u00e9m \u010del\u00ed t\u0159em hlavn\u00edm probl\u00e9m\u016fm v\u0161ech monitorovac\u00edch syst\u00e9m\u016f: shroma\u017e\u010fov\u00e1n\u00ed a zpracov\u00e1n\u00ed dat, uchov\u00e1v\u00e1n\u00ed historie a jej\u00ed \u00fadr\u017eba.<\/p>\n<p>F\u00e1ze z\u00edsk\u00e1v\u00e1n\u00ed, zpracov\u00e1n\u00ed a ukl\u00e1d\u00e1n\u00ed dat zabere \u010das. Trochu, ale pro velk\u00fd syst\u00e9m to m\u016f\u017ee znamenat velk\u00e9 zpo\u017ed\u011bn\u00ed. Probl\u00e9m uchov\u00e1v\u00e1n\u00ed p\u0159edstavuje ot\u00e1zku p\u0159\u00edstupu k dat\u016fm. Ta se pou\u017e\u00edvaj\u00ed pro reporty, kontroly a spou\u0161t\u011b\u010de. Zpo\u017ed\u011bn\u00ed p\u0159i p\u0159\u00edstupu k dat\u016fm tak\u00e9 ovliv\u0148uje v\u00fdkon. Kdy\u017e se datab\u00e1ze zv\u011bt\u0161uj\u00ed, zastaral\u00e1 data je pot\u0159eba odstranit. Odstran\u011bn\u00ed je n\u00e1ro\u010dn\u00e1 operace, kter\u00e1 tak\u00e9 spot\u0159ebov\u00e1v\u00e1 \u010d\u00e1st zdroj\u016f.<\/p>\n<p><img decoding=\"async\" alt=\"Vysok\u00fd v\u00fdkon a nativn\u00ed partitioning: Zabbix s podporou TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/9b7aa23705cd32b4d8d858ad78b181fd.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nProbl\u00e9my se zpo\u017ed\u011bn\u00edm p\u0159i shroma\u017e\u010fov\u00e1n\u00ed a uchov\u00e1v\u00e1n\u00ed v Zabbixu se \u0159e\u0161\u00ed ke\u0161ov\u00e1n\u00edm: n\u011bkolik typ\u016f ke\u0161\u00ed, ke\u0161ov\u00e1n\u00ed v datab\u00e1zi. Pro \u0159e\u0161en\u00ed t\u0159et\u00edho probl\u00e9mu v\u0161ak ke\u0161ov\u00e1n\u00ed nevyhovuje, a proto v Zabbixu pou\u017e\u00edvaj\u00ed TimescaleDB. O tom pov\u00ed <strong>Andrej Gu\u0161\u010din<\/strong> \u2014 in\u017een\u00fdr technick\u00e9 podpory <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/zabbix\/\">Zabbix SIA<\/a><\/noindex>. V technick\u00e9 podpo\u0159e Zabbixu pracuje Andrej v\u00edce ne\u017e 6 let a p\u0159\u00edmo se setk\u00e1v\u00e1 s v\u00fdkonem.<\/p>\n<p>Jak TimescaleDB funguje, jak\u00fd v\u00fdkon m\u016f\u017ee poskytnout ve srovn\u00e1n\u00ed s b\u011b\u017en\u00fdm PostgreSQL? Jakou roli hraje Zabbix pro datab\u00e1ze TimescaleDB? Jak spustit od nuly a jak migrovat z PostgreSQL a jak\u00e1 konfigurace m\u00e1 nejlep\u0161\u00ed v\u00fdkon? O v\u0161em tomto podrobn\u011b n\u00ed\u017ee.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\n<center><div class=\"youtube-placeholder\" data-id=\"umRk94j5M8o\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/umRk94j5M8o\/hqdefault.jpg\" alt=\"P\u0159ehr\u00e1t video\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><\/p>\n<h2>V\u00fdzvy v\u00fdkonu<\/h2>\n<p>\nKa\u017ed\u00fd monitorovac\u00ed syst\u00e9m \u010del\u00ed ur\u010dit\u00fdm v\u00fdzv\u00e1m v\u00fdkonu. \u0158eknu v\u00e1m o t\u0159ech z nich: shroma\u017e\u010fov\u00e1n\u00ed a zpracov\u00e1n\u00ed dat, uchov\u00e1v\u00e1n\u00ed a \u00fadr\u017eba historie.<\/p>\n<p><strong>Rychl\u00e9 shroma\u017e\u010fov\u00e1n\u00ed a zpracov\u00e1n\u00ed dat. <\/strong>Dobr\u00fd monitorovac\u00ed syst\u00e9m by m\u011bl rychle z\u00edsk\u00e1vat v\u0161echny \u00fadaje a zpracov\u00e1vat je podle triggerov\u00fdch v\u00fdraz\u016f \u2014 podle sv\u00fdch krit\u00e9ri\u00ed. Po zpracov\u00e1n\u00ed by m\u011bl syst\u00e9m tak\u00e9 rychle ulo\u017eit tato data do datab\u00e1ze, aby je pozd\u011bji mohl vyu\u017e\u00edt.<\/p>\n<p><strong>Uchov\u00e1v\u00e1n\u00ed historie. <\/strong>Dobr\u00fd monitorovac\u00ed syst\u00e9m by m\u011bl uchov\u00e1vat historii v datab\u00e1zi a poskytovat snadn\u00fd p\u0159\u00edstup k metrik\u00e1m. Historie je pot\u0159ebn\u00e1 pro vyu\u017eit\u00ed v reportech, grafech, triggerov\u00fdch prvc\u00edch, prahov\u00fdch hodnot\u00e1ch a vypo\u010d\u00edt\u00e1van\u00fdch datov\u00fdch prvc\u00edch pro upozorn\u011bn\u00ed.<\/p>\n<p><strong>\u00dadr\u017eba historie. <\/strong>N\u011bkdy nastane den, kdy nemus\u00edte uchov\u00e1vat metriky. Pro\u010d pot\u0159ebujete data, kter\u00e1 byla shrom\u00e1\u017ed\u011bna p\u0159ed 5 lety, m\u011bs\u00edc nebo dva: n\u011bkter\u00e9 uzly byly odstran\u011bny, n\u011bkter\u00e9 hostitele nebo metriky u\u017e nejsou pot\u0159eba, proto\u017ee jsou zastaral\u00e9 a p\u0159estaly se shroma\u017e\u010fovat. Dobr\u00fd monitorovac\u00ed syst\u00e9m by m\u011bl uchov\u00e1vat historick\u00e1 data a \u010das od \u010dasu je odstra\u0148ovat, aby se datab\u00e1ze nevyrostla.<\/p>\n<blockquote><p>Odstran\u011bn\u00ed zastaral\u00fdch dat je nal\u00e9hav\u00e1 ot\u00e1zka, kter\u00e1 m\u00e1 velk\u00fd dopad na v\u00fdkon datab\u00e1ze.<\/p><\/blockquote>\n<p><\/p>\n<h2>Ke\u0161ov\u00e1n\u00ed v Zabbixu<\/h2>\n<p>\nVe Zabbixu byly prvn\u00ed a druh\u00e9 vol\u00e1n\u00ed vy\u0159e\u0161eny pomoc\u00ed ke\u0161ov\u00e1n\u00ed. Pro shroma\u017e\u010fov\u00e1n\u00ed a zpracov\u00e1n\u00ed dat se pou\u017e\u00edv\u00e1 opera\u010dn\u00ed pam\u011b\u0165. Pro uchov\u00e1v\u00e1n\u00ed \u2014 historie v spou\u0161t\u011b\u010d\u00edch, grafech a po\u010d\u00edtan\u00fdch datech. Na stran\u011b datab\u00e1ze existuje ur\u010dit\u00e9 ke\u0161ov\u00e1n\u00ed pro hlavn\u00ed v\u00fdb\u011bry, nap\u0159\u00edklad grafech.<\/p>\n<p>Ke\u0161ov\u00e1n\u00ed na stran\u011b samotn\u00e9ho Zabbix serveru je:<\/p>\n<ul>\n<li>ConfigurationCache;<\/li>\n<li>ValueCache;<\/li>\n<li>HistoryCache;<\/li>\n<li>TrendsCache.<\/li>\n<\/ul>\n<p>\nPod\u00edvejme se na n\u011b podrobn\u011bji.<\/p>\n<h3>ConfigurationCache<\/h3>\n<p>\nTo je hlavn\u00ed ke\u0161, ve kter\u00e9 uchov\u00e1v\u00e1me metriky, hostitele, datov\u00e9 prvky, spou\u0161t\u011b\u010de \u2014 v\u0161e, co je pot\u0159eba pro PreProcessing a pro shroma\u017e\u010fov\u00e1n\u00ed dat.<\/p>\n<p><img decoding=\"async\" alt=\"Vysok\u00fd v\u00fdkon a nativn\u00ed partitioning: Zabbix s podporou TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/122708198f6cd136fbd0420876c06e9c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nV\u0161echny tyto informace jsou uchov\u00e1v\u00e1ny v ConfigurationCache, aby nebyly vytv\u00e1\u0159eny zbyte\u010dn\u00e9 dotazy do datab\u00e1ze. Po spu\u0161t\u011bn\u00ed serveru tento ke\u0161 aktualizujeme, vytv\u00e1\u0159\u00edme a pravideln\u011b aktualizujeme konfigurace.<\/p>\n<h3>Sb\u011br dat<\/h3>\n<p>\nSch\u00e9ma je dost rozs\u00e1hl\u00e9, ale hlavn\u00ed je, \u017ee <strong>shroma\u017e\u010fova\u010de<\/strong>. Jsou to r\u016fzn\u00e9 \u201epollery\u201c \u2014 procesy shroma\u017e\u010fov\u00e1n\u00ed. Ty odpov\u00eddaj\u00ed za r\u016fzn\u00e9 typy shroma\u017e\u010fov\u00e1n\u00ed: shroma\u017e\u010fuj\u00ed data p\u0159es SNMP, IPMI a p\u0159ed\u00e1vaj\u00ed je na PreProcessing.<\/p>\n<p><img decoding=\"async\" alt=\"Vysok\u00fd v\u00fdkon a nativn\u00ed partitioning: Zabbix s podporou TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/deff5d9ff358f1b04b505d18c7770f21.jpg\" style=\"display:block;margin: 0 auto;\" \/><em>Shroma\u017e\u010fova\u010de jsou or\u00e1mov\u00e1ny oran\u017eovou linkou.<\/em><\/p>\n<p>Ve Zabbixu existuj\u00ed po\u010d\u00edtan\u00e9 agregovan\u00e9 datov\u00e9 prvky, kter\u00e9 jsou pot\u0159ebn\u00e9 k agregaci kontrol. Pokud je m\u00e1me, bereme data pro n\u011b p\u0159\u00edmo z ValueCache.<\/p>\n<h3>PreProcessing HistoryCache<\/h3>\n<p>\nV\u0161echny shroma\u017e\u010fova\u010de pou\u017e\u00edvaj\u00ed ConfigurationCache, aby z\u00edskaly \u00fakoly. D\u00e1le je p\u0159ed\u00e1vaj\u00ed na PreProcessing.<\/p>\n<p><img decoding=\"async\" alt=\"Vysok\u00fd v\u00fdkon a nativn\u00ed partitioning: Zabbix s podporou TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/116e25100ebdf9ed209a9b04fa6fa156.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPreProcessing pou\u017e\u00edv\u00e1 ConfigurationCache, aby z\u00edskal kroky PreProcessing. Zpracov\u00e1v\u00e1 tato data r\u016fzn\u00fdmi zp\u016fsoby.<\/p>\n<p>Po zpracov\u00e1n\u00ed dat pomoc\u00ed PreProcessing je ukl\u00e1d\u00e1me do HistoryCache, abychom je mohli zpracovat. Na tomto konci shroma\u017e\u010fov\u00e1n\u00ed dat p\u0159ech\u00e1z\u00edme k hlavn\u00edmu procesu v Zabbixu \u2014 <strong>history syncer<\/strong>, jeliko\u017e se jedn\u00e1 o monolitn\u00ed architekturu.<\/p>\n<p><em>Pozn\u00e1mka: PreProcessing je dost n\u00e1ro\u010dn\u00e1 operace. Od verze 4.2 byl p\u0159esunut na proxy. Pokud m\u00e1te velmi velk\u00fd Zabbix s velk\u00fdm mno\u017estv\u00edm datov\u00fdch prvk\u016f a frekvenc\u00ed shroma\u017e\u010fov\u00e1n\u00ed, v\u00fdrazn\u011b to usnad\u0148uje pr\u00e1ci.<\/em><\/p>\n<h3>ValueCache, history &amp; trends cache<\/h3>\n<p><\/p>\n<blockquote><p>Synchroniz\u00e1tor historie je hlavn\u00ed proces, kter\u00fd atom\u00e1rn\u011b zpracov\u00e1v\u00e1 ka\u017ed\u00fd datov\u00fd prvek, tedy ka\u017edou hodnotu.<\/p><\/blockquote>\n<p>\nSynchroniz\u00e1tor historie z\u00edsk\u00e1v\u00e1 hodnoty z HistoryCache a kontroluje v konfiguraci p\u0159\u00edtomnost spou\u0161t\u011b\u010d\u016f pro v\u00fdpo\u010dty. Pokud n\u011bjak\u00e9 existuj\u00ed, prov\u00e1d\u00ed v\u00fdpo\u010dty.<\/p>\n<p>Synchroniz\u00e1tor historie vytv\u00e1\u0159\u00ed ud\u00e1lost, eskalaci, aby v p\u0159\u00edpad\u011b pot\u0159eby podle konfigurace generoval upozorn\u011bn\u00ed, a zaznamen\u00e1v\u00e1 je. Pokud existuj\u00ed spou\u0161t\u011b\u010de pro n\u00e1sledn\u00e9 zpracov\u00e1n\u00ed, pamatuje si tuto hodnotu v ValueCache, aby nemusel p\u0159istupovat k tabulce historie. T\u00edm se ValueCache pln\u00ed daty, kter\u00e1 jsou pot\u0159ebn\u00e1 pro v\u00fdpo\u010dty spou\u0161t\u011b\u010d\u016f a vypo\u010d\u00edt\u00e1van\u00fdch prvk\u016f.<\/p>\n<p>Synchroniz\u00e1tor historie zapisuje v\u0161echna data do datab\u00e1ze, a ta pak na disk. Proces zpracov\u00e1n\u00ed t\u00edmto kon\u010d\u00ed.<\/p>\n<p><img decoding=\"async\" alt=\"Vysok\u00fd v\u00fdkon a nativn\u00ed partitioning: Zabbix s podporou TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/4d74195381fda7756b0250982f6896be.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Ke\u0161ov\u00e1n\u00ed v datab\u00e1zi<\/h3>\n<p>\nNa stran\u011b datab\u00e1ze existuj\u00ed r\u016fzn\u00e9 ke\u0161e, kdy\u017e chcete sledovat grafy nebo zpr\u00e1vy o ud\u00e1lostech:<\/p>\n<ul>\n<li><code>Innodb_buffer_pool<\/code> na stran\u011b MySQL;<\/li>\n<li><code>shared_buffers<\/code> na stran\u011b PostgreSQL;<\/li>\n<li><code>effective_cache_size<\/code> na stran\u011b Oracle;<\/li>\n<li><code>shared_pool<\/code> na stran\u011b DB2.<\/li>\n<\/ul>\n<p>\nExistuje tak\u00e9 mnoho dal\u0161\u00edch ke\u0161\u00ed, ale toto jsou hlavn\u00ed pro v\u0161echny datab\u00e1ze. Umo\u017e\u0148uj\u00ed uchov\u00e1vat v opera\u010dn\u00ed pam\u011bti data, kter\u00e1 jsou \u010dasto pot\u0159ebn\u00e1 pro dotazy. Maj\u00ed sv\u00e9 technologie pro toto.<\/p>\n<h3>V\u00fdkon datab\u00e1ze je kriticky d\u016fle\u017eit\u00fd.<\/h3>\n<p>\nZabbix server neust\u00e1le shroma\u017e\u010fuje data a zapisuje je. P\u0159i restartu tak\u00e9 \u010dte z historie, aby naplnil ValueCache. Skripty a zpr\u00e1vy pou\u017e\u00edv\u00e1 <strong>Zabbix API<\/strong>, kter\u00e9 je postaveno na z\u00e1klad\u011b webov\u00e9ho rozhran\u00ed. Zabbix API se obrac\u00ed na datab\u00e1zi a z\u00edsk\u00e1v\u00e1 pot\u0159ebn\u00e1 data pro grafy, zpr\u00e1vy, seznamy ud\u00e1lost\u00ed a posledn\u00ed probl\u00e9my.<\/p>\n<p><img decoding=\"async\" alt=\"Vysok\u00fd v\u00fdkon a nativn\u00ed partitioning: Zabbix s podporou TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/dd0efdc4e57c1197d448ce453012091e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPro vizualizaci \u2014 <strong>Grafana<\/strong>. Mezi na\u0161imi u\u017eivateli je to popul\u00e1rn\u00ed \u0159e\u0161en\u00ed. Um\u00ed p\u0159\u00edmo pos\u00edlat dotazy p\u0159es Zabbix API jak do datab\u00e1ze, tak generuje ur\u010ditou konkurenci pro z\u00edsk\u00e1v\u00e1n\u00ed dat. Proto je pot\u0159eba jemn\u011bj\u0161\u00ed a lep\u0161\u00ed nastaven\u00ed datab\u00e1ze, aby vyhovovalo rychl\u00e9mu vyd\u00e1v\u00e1n\u00ed v\u00fdsledk\u016f a testov\u00e1n\u00ed.<\/p>\n<h2>Housekeeper<\/h2>\n<p>\nT\u0159et\u00ed v\u00fdzvou pro v\u00fdkon v Zabbixu je \u00faklid historie pomoc\u00ed housekeeperu. Dodr\u017euje v\u0161echna nastaven\u00ed \u2014 v datov\u00fdch prvc\u00edch je uvedeno, jak dlouho uchov\u00e1vat dynamiku zm\u011bn (trend\u016f) v dnech.<\/p>\n<p>TrendsCache vypo\u010d\u00edt\u00e1v\u00e1me za b\u011bhu. P\u0159i p\u0159\u00edjmu dat je agregujeme za jednu hodinu a zapisujeme do tabulek pro dynamiku zm\u011bn trend\u016f.<\/p>\n<p>Housekeeper se spou\u0161t\u00ed a odstra\u0148uje informace z datab\u00e1ze b\u011b\u017en\u00fdmi 'selecty'. To nen\u00ed v\u017edy efektivn\u00ed, co\u017e lze poznat z graf\u016f v\u00fdkonu vnit\u0159n\u00edch proces\u016f.<\/p>\n<p><img decoding=\"async\" alt=\"Vysok\u00fd v\u00fdkon a nativn\u00ed partitioning: Zabbix s podporou TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/a3af1badd14b1092bc26e0b53845ae04.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u010cerven\u00e1 k\u0159ivka ukazuje, \u017ee synchroniz\u00e1tor historie je st\u00e1le zam\u011bstn\u00e1n. Oran\u017eov\u00e1 k\u0159ivka naho\u0159e p\u0159edstavuje Housekeeper, kter\u00fd se neust\u00e1le spou\u0161t\u00ed. \u010cek\u00e1 na datab\u00e1zi, kdy odstran\u00ed v\u0161echny \u0159\u00e1dky, kter\u00e9 ur\u010dil.<\/p>\n<p>Kdy byste m\u011bli vypnout Housekeeper? Nap\u0159\u00edklad m\u00e1te 'Item ID' a pot\u0159ebujete odstranit posledn\u00edch 5 tis\u00edc \u0159\u00e1dk\u016f za ur\u010dit\u00e9 obdob\u00ed. Samoz\u0159ejm\u011b, \u017ee se to d\u011bje podle index\u016f. Ale obvykle je dataset velmi velk\u00fd a datab\u00e1ze stejn\u011b \u010dte z disku a na\u010d\u00edt\u00e1 do cache. To je v\u017edy velmi n\u00e1kladn\u00e1 operace pro datab\u00e1zi a v z\u00e1vislosti na velikosti datab\u00e1ze m\u016f\u017ee v\u00e9st k probl\u00e9m\u016fm s v\u00fdkonem.<\/p>\n<p><img decoding=\"async\" alt=\"Vysok\u00fd v\u00fdkon a nativn\u00ed partitioning: Zabbix s podporou TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/0778318b539fbe33318e8a7310f8a89b.jpg\" style=\"display:block;margin: 0 auto;\" \/> <\/p>\n<p>Housekeeper lze jednodu\u0161e vypnout. V webov\u00e9m rozhran\u00ed je nastaven\u00ed v 'Administration general' pro Housekeeper. Vypneme intern\u00ed housekeeping pro intern\u00ed historii trend\u016f a on u\u017e t\u00edmto v\u00edce ne\u0159\u00edd\u00ed.<\/p>\n<p>Kdy\u017e jsme vypnuli Housekeeper a grafy se vyrovnaly \u2014 jak\u00e9 mohou b\u00fdt v tomto p\u0159\u00edpad\u011b probl\u00e9my a co m\u016f\u017ee pomoci v \u0159e\u0161en\u00ed t\u0159et\u00edho v\u00fdzvy v\u00fdkonu?<\/p>\n<h2>Partitioning \u2014 sekcionov\u00e1n\u00ed nebo partioning<\/h2>\n<p>\nObvykle se sekcionov\u00e1n\u00ed nastavuje r\u016fzn\u00fdmi zp\u016fsoby na ka\u017ed\u00e9 rela\u010dn\u00ed datab\u00e1zi, kterou jsem uvedl. Ka\u017ed\u00e1 m\u00e1 svou technologii, ale jsou celkov\u011b podobn\u00e9. Vytvo\u0159en\u00ed nov\u00e9 partition \u010dasto vede k ur\u010dit\u00fdm probl\u00e9m\u016fm.<\/p>\n<p>Obvykle se partitiony nastavuj\u00ed v z\u00e1vislosti na 'setup' \u2014 po\u010dtu dat, kter\u00e9 jsou vytv\u00e1\u0159eny za jeden den. Obvykle se partitioning nastavuje na jeden den, co\u017e je minimum. Pro trendy nov\u00e9 partition \u2014 na 1 m\u011bs\u00edc.<\/p>\n<p>Hodnoty se mohou m\u011bnit v p\u0159\u00edpad\u011b velmi velk\u00e9ho 'setup'. Pokud je mal\u00fd 'setup' \u2014 do 5 000 nvps (nov\u00fdch hodnot za sekundu), st\u0159edn\u00ed \u2014 od 5 000 do 25 000, pak velk\u00fd \u2014 nad 25 000 nvps. To jsou velk\u00e9 a velmi velk\u00e9 instalace, kter\u00e9 vy\u017eaduj\u00ed pe\u010dliv\u00e9 nastaven\u00ed p\u0159esn\u011b datab\u00e1ze.<\/p>\n<p>Na velmi velk\u00fdch instalac\u00edch \u00fasek za jeden den nemus\u00ed b\u00fdt optim\u00e1ln\u00ed. Vid\u011bl jsem na MySQL partitiony po 40 GB a v\u00edce za den. To je velmi velk\u00fd objem dat, kter\u00fd m\u016f\u017ee v\u00e9st k probl\u00e9m\u016fm, a je t\u0159eba ho zmen\u0161it.<\/p>\n<h3>Co p\u0159in\u00e1\u0161\u00ed partitioning?<\/h3>\n<p>\n<strong>Sekcionov\u00e1n\u00ed tabulek<\/strong>. \u010casto jsou to samostatn\u00e9 soubory na disku. Pl\u00e1n dotaz\u016f optim\u00e1ln\u011bji vyb\u00edr\u00e1 jednu partition. Obvykle se partitioning pou\u017e\u00edv\u00e1 podle rozsahu \u2014 pro Zabbix to plat\u00ed tak\u00e9. Pou\u017e\u00edv\u00e1me tam 'timestamp' \u2014 \u010das od za\u010d\u00e1tku \u00e9ry. U n\u00e1s to jsou oby\u010dejn\u00e1 \u010d\u00edsla. Ur\u010d\u00edte za\u010d\u00e1tek a konec dne \u2014 to je partition.<\/p>\n<p><strong>Rychl\u00e9 odstran\u011bn\u00ed<\/strong> \u2014 <code>DELETE<\/code>Vyb\u00edr\u00e1 se jeden soubor\/subtabulka, nikoli v\u00fdb\u011br \u0159\u00e1dk\u016f k odstran\u011bn\u00ed.<\/p>\n<p><strong>V\u00fdrazn\u011b zrychluje v\u00fdb\u011br dat.<\/strong> <code>nebude prov\u00e1d\u011bn p\u0159i nepravdivosti prvn\u00ed podm\u00ednky. Opravy pomoc\u00ed<\/code> \u2014 pou\u017e\u00edv\u00e1 jednu nebo v\u00edce parti\u00ed, nikoli celou tabulku. Pokud \u017e\u00e1d\u00e1te o data dvoudenn\u00ed starosti, jsou vyb\u00edr\u00e1na z DB rychleji, proto\u017ee je t\u0159eba do cache na\u010d\u00edst a vydat pouze jeden soubor, nikoli velkou tabulku.<\/p>\n<p>\u010casto tak\u00e9 urychluje mnoho DB. <code>INSERT<\/code> \u2014 vkl\u00e1d\u00e1n\u00ed do child-tabulek.<\/p>\n<h2>TimescaleDB<\/h2>\n<p>\nVe verzi 4.2 jsme se zam\u011b\u0159ili na TimescaleDB. To je roz\u0161\u00ed\u0159en\u00ed pro PostgreSQL s nativn\u00edm rozhran\u00edm. Roz\u0161\u00ed\u0159en\u00ed efektivn\u011b pracuje s \u010dasov\u00fdmi \u0159adami, p\u0159i\u010dem\u017e neztr\u00e1c\u00ed v\u00fdhody rela\u010dn\u00edch DB. TimescaleDB tak\u00e9 automaticky particionuje.<\/p>\n<p>V TimescaleDB existuje pojem <strong>hypertabulka<\/strong> (hypertable), kterou vytv\u00e1\u0159\u00edte. Obsahuje <strong>chunky<\/strong> \u2014 partie. Chunky jsou automaticky \u0159\u00edzen\u00e9 fragmenty hypertabulky, kter\u00e9 neovliv\u0148uj\u00ed ostatn\u00ed fragmenty. Ka\u017ed\u00fd chunk m\u00e1 sv\u016fj vlastn\u00ed \u010dasov\u00fd rozsah.<\/p>\n<p><img decoding=\"async\" alt=\"Vysok\u00fd v\u00fdkon a nativn\u00ed partitioning: Zabbix s podporou TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/91a24560ff12aa17f98689e3445f50e1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>TimescaleDB vs PostgreSQL<\/h3>\n<p>\nTimescaleDB pracuje skute\u010dn\u011b efektivn\u011b. V\u00fdrobci roz\u0161\u00ed\u0159en\u00ed tvrd\u00ed, \u017ee pou\u017e\u00edvaj\u00ed spr\u00e1vn\u011bj\u0161\u00ed algoritmus pro zpracov\u00e1n\u00ed dotaz\u016f, zejm\u00e9na &lt;code&gt;inserts&lt;\/code&gt;. Kdy\u017e velikosti dataset-vkl\u00e1d\u00e1n\u00ed rostou, algoritmus udr\u017euje konstantn\u00ed v\u00fdkon.<\/p>\n<p><img decoding=\"async\" alt=\"Vysok\u00fd v\u00fdkon a nativn\u00ed partitioning: Zabbix s podporou TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/52f042018180ffd2cb6a2cf4a3af603e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPo 200 milionech \u0159\u00e1dk\u016f obvykle PostgreSQL za\u010d\u00edn\u00e1 v\u00fdrazn\u011b zpomalovat a ztr\u00e1c\u00ed v\u00fdkon a\u017e na 0. TimescaleDB umo\u017e\u0148uje efektivn\u011b vkl\u00e1dat \"inserts\" p\u0159i jak\u00e9mkoli objemu dat.<\/p>\n<h3>Instalace<\/h3>\n<p>\nNainstalovat TimescaleDB je dost snadn\u00e9 pro jak\u00e9koli bal\u00ed\u010dky. V <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.timescale.com\/v1.3\/getting-started\">dokumentaci<\/a><\/noindex> je v\u0161e podrobn\u011b pops\u00e1no \u2014 z\u00e1vis\u00ed na ofici\u00e1ln\u00edch bal\u00ed\u010dc\u00edch PostgreSQL. TimescaleDB lze tak\u00e9 sestavit a zkompilovat ru\u010dn\u011b.<\/p>\n<p>Pro DB Zabbix jednodu\u0161e aktivujeme roz\u0161\u00ed\u0159en\u00ed:<\/p>\n<pre><code class=\"sql\">echo \"CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;\" | sudo -u postgres psql zabbix<\/code><\/pre>\n<p>\nAktivujete <code>roz\u0161\u00ed\u0159en\u00ed<\/code> a vytvo\u0159\u00edte ho pro DB Zabbix. Posledn\u00edm krokem je vytvo\u0159en\u00ed hypertabulky.<\/p>\n<h3>Migrace tabulek historie na TimescaleDB<\/h3>\n<p>\nK tomu existuje speci\u00e1ln\u00ed funkce <code>create_hypertable<\/code>:<\/p>\n<pre><code class=\"sql\">VYBERTE create_hypertable(\u2018history\u2019, \u2018clock\u2019, chunk_time_interval =&gt; 86400, migrate_data =&gt; true);\nVYBERTE create_hypertable(\u2018history_unit\u2019, \u2018clock\u2019, chunk_time_interval =&gt; 86400, migrate_data =&gt; true);\nVYBERTE create_hypertable(\u2018history_log\u2019, \u2018clock\u2019, chunk_time_interval =&gt; 86400, migrate_data =&gt; true);\nVYBERTE create_hypertable(\u2018history_text\u2019, \u2018clock\u2019, chunk_time_interval =&gt; 86400, migrate_data =&gt; true);\nVYBERTE create_hypertable(\u2018history_str\u2019, \u2018clock\u2019, chunk_time_interval =&gt; 86400, migrate_data =&gt; true);\nVYBERTE create_hypertable(\u2018trends\u2019, \u2018clock\u2019, chunk_time_interval =&gt; 86400, migrate_data =&gt; true);\nVYBERTE create_hypertable(\u2018trends_unit\u2019, \u2018clock\u2019, chunk_time_interval =&gt; 86400, migrate_data =&gt; true);\nAKTUALIZUJTE config SET db_extension=\u2019timescaledb\u2019, hk_history_global=1, hk_trends_global=1<\/code><\/pre>\n<p>\nFunkce m\u00e1 t\u0159i parametry. Prvn\u00ed \u2014<strong> tabulka v datab\u00e1zi<\/strong>, pro kterou je t\u0159eba vytvo\u0159it hypertabuli. Druh\u00fd \u2014 <strong>pole<\/strong>, podle kter\u00e9ho je t\u0159eba vytvo\u0159it <code>chunk_time_interval<\/code> \u2014 interval chunk\u016f pro partition, kter\u00e9 maj\u00ed b\u00fdt pou\u017eity. V m\u00e9m p\u0159\u00edpad\u011b je interval jeden den \u2014 86 400.<\/p>\n<p>T\u0159et\u00ed parametr \u2014 <code><strong>migrovat_data<\/strong><\/code>. Pokud se nastav\u00ed <code>true<\/code>, pak se v\u0161echna aktu\u00e1ln\u00ed data p\u0159esunou do p\u0159edem vytvo\u0159en\u00fdch chunk\u016f. Osobn\u011b jsem pou\u017eil <code>migrovat_data<\/code>. M\u011bl jsem asi 1 TB, co\u017e trvalo v\u00edce ne\u017e hodinu. I v n\u011bkter\u00fdch p\u0159\u00edpadech jsem b\u011bhem testov\u00e1n\u00ed odstra\u0148oval nepot\u0159ebn\u00e1 historick\u00e1 data symbolick\u00fdch typ\u016f, abych je nemusel p\u0159esouvat.<\/p>\n<p>Posledn\u00ed krok \u2014\u00a0<code><strong>AKTUALIZACE<\/strong><\/code>: v <code>db_extension<\/code> nastavit <code>timescaledb<\/code>, aby datab\u00e1ze ch\u00e1pala, \u017ee m\u00e1 toto roz\u0161\u00ed\u0159en\u00ed. Zabbix ho aktivuje a spr\u00e1vn\u011b vyu\u017e\u00edv\u00e1 syntax a dotazy ji\u017e k datab\u00e1zi \u2014 ty funkce, kter\u00e9 jsou nutn\u00e9 pro TimescaleDB.<\/p>\n<h2>Konfigurace hardwaru<\/h2>\n<p>\nPou\u017eil jsem dva servery. Prvn\u00ed \u2014 <strong>VMware stroj<\/strong>. Je docela mal\u00fd: 20 procesor\u016f Intel\u00ae Xeon\u00ae CPU E5-2630 v 4 @ 2.20GHz, 16 GB RAM a SSD disk o velikosti 200 GB.<\/p>\n<p>Na n\u011bm jsem nainstaloval PostgreSQL 10.8 s OS Debian 10.8-1.pgdg90+1 a souborov\u00fdm syst\u00e9mem xfs. V\u0161e bylo minim\u00e1ln\u011b nastaveno, aby se pou\u017e\u00edvala pr\u00e1v\u011b tato datab\u00e1ze, krom\u011b toho, co bude pou\u017e\u00edvat s\u00e1m Zabbix.<\/p>\n<p>Na t\u00e9to stejn\u00e9 ma\u0161in\u011b b\u011b\u017eel Zabbix server, PostgreSQL a <strong>loadovac\u00ed agenty<\/strong>. M\u011bl jsem 50 aktivn\u00edch agent\u016f, kte\u0159\u00ed pou\u017e\u00edvali <code>LoadableModule<\/code>, aby velmi rychle generovali r\u016fzn\u00e9 v\u00fdsledky: \u010d\u00edsla, \u0159et\u011bzce. Naplnil jsem datab\u00e1zi velk\u00fdm mno\u017estv\u00edm dat.<\/p>\n<p>P\u016fvodn\u00ed konfigurace obsahovala <strong>5 000 polo\u017eek<\/strong> dat na ka\u017ed\u00fd host. T\u00e9m\u011b\u0159 ka\u017ed\u00e1 polo\u017eka m\u011bla spou\u0161t\u011b\u010d, aby to bylo podobn\u00e9 re\u00e1ln\u00fdm instalac\u00edm. V n\u011bkter\u00fdch p\u0159\u00edpadech bylo v\u00edce ne\u017e jeden spou\u0161t\u011b\u010d. Na jeden uzel s\u00edt\u011b p\u0159ipadalo <strong>3 000-7 000 spou\u0161t\u011b\u010d\u016f<\/strong>.<\/p>\n<p>Interval aktualizace polo\u017eek dat \u2014 <strong>4-7 sekund<\/strong>Zat\u00ed\u017een\u00ed jsem reguloval nejen pomoc\u00ed 50 agent\u016f, ale tak\u00e9 p\u0159id\u00e1v\u00e1n\u00edm dal\u0161\u00edch. Pomoc\u00ed datov\u00fdch prvk\u016f jsem dynamicky reguloval zat\u00ed\u017een\u00ed a sni\u017eoval interval aktualizace na 4 s.<\/p>\n<h3>PostgreSQL. 35 000 nvps<\/h3>\n<p>\nPrvn\u00ed spu\u0161t\u011bn\u00ed na tomto za\u0159\u00edzen\u00ed jsem m\u011bl s \u010dist\u00fdm PostgreSQL \u2014 35 tis\u00edc hodnot za sekundu. Jak je vid\u011bt, vlo\u017een\u00ed dat zabere zlomky sekundy \u2014 v\u0161echno jde hladce a rychle. Jedin\u00e9, co, je, \u017ee SSD disk o kapacit\u011b 200 GB se rychle zapl\u0148uje.<\/p>\n<p><img decoding=\"async\" alt=\"Vysok\u00fd v\u00fdkon a nativn\u00ed partitioning: Zabbix s podporou TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/e84b2eb0f6fbbd902c5feab367c750ee.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTo je standardn\u00ed p\u0159ehled v\u00fdkonnosti Zabbix \u2014 server\u016f.<\/p>\n<p><img decoding=\"async\" alt=\"Vysok\u00fd v\u00fdkon a nativn\u00ed partitioning: Zabbix s podporou TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/c3afe021acf8e272813b8d8c2f82e762.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPrvn\u00ed modr\u00fd graf \u2014 po\u010det hodnot za sekundu. Druh\u00fd graf vpravo \u2014 zat\u00ed\u017een\u00ed proces\u016f shroma\u017e\u010fov\u00e1n\u00ed. T\u0159et\u00ed \u2014 zat\u00ed\u017een\u00ed intern\u00edch proces\u016f shroma\u017e\u010fov\u00e1n\u00ed: history syncers a Housekeeper, kter\u00fd zde b\u011b\u017eel dostate\u010dn\u011b dlouho.<\/p>\n<p>\u010ctvrt\u00fd graf ukazuje vyu\u017eit\u00ed HistoryCache. To je jak\u00fdsi buffer p\u0159ed vlo\u017een\u00edm do DB. Zelen\u00fd p\u00e1t\u00fd graf ukazuje vyu\u017eit\u00ed ValueCache, tedy kolik hit\u016f ValueCache pro spou\u0161t\u011b\u010de \u2014 to je n\u011bkolik tis\u00edc hodnot za sekundu.<\/p>\n<h3>PostgreSQL. 50 000 nvps<\/h3>\n<p>\nPak jsem zv\u00fd\u0161il z\u00e1t\u011b\u017e na 50 tis\u00edc hodnot za sekundu na tomto stejn\u00e9m za\u0159\u00edzen\u00ed.<\/p>\n<p><img decoding=\"async\" alt=\"Vysok\u00fd v\u00fdkon a nativn\u00ed partitioning: Zabbix s podporou TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/8f10944486d5502b57d36059382d551b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nP\u0159i zat\u00ed\u017een\u00ed s Housekeeperem bylo vlo\u017een\u00ed 10 tis\u00edc hodnot zapisov\u00e1no za 2-3 s.<\/p>\n<p><img decoding=\"async\" alt=\"Vysok\u00fd v\u00fdkon a nativn\u00ed partitioning: Zabbix s podporou TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/5228c1735f0ee2da7f827093f3c7b1f9.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<em>Housekeeper u\u017e za\u010d\u00edn\u00e1 naru\u0161ovat pr\u00e1ci.<\/em><\/p>\n<p>Na t\u0159et\u00edm grafu je patrn\u00e9, \u017ee celkov\u011b zat\u00ed\u017een\u00ed trapper\u016f a history syncers je st\u00e1le na \u00farovni 60 %. Na \u010dtvrt\u00e9m grafu HistoryCache b\u011bhem pr\u00e1ce Housekeepera ji\u017e za\u010d\u00edn\u00e1 pom\u011brn\u011b aktivn\u011b plnit. Naplnil se na 20 % \u2014 to je asi 0,5 GB.<\/p>\n<h3>PostgreSQL. 80 000 nvps<\/h3>\n<p>\nD\u00e1le jsem zv\u00fd\u0161il z\u00e1t\u011b\u017e na 80 tis\u00edc hodnot za sekundu. To je p\u0159ibli\u017en\u011b 400 tis\u00edc datov\u00fdch prvk\u016f a 280 tis\u00edc spou\u0161t\u011b\u010d\u016f.<\/p>\n<p><img decoding=\"async\" alt=\"Vysok\u00fd v\u00fdkon a nativn\u00ed partitioning: Zabbix s podporou TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/f6c6b0d6793f96523f7406e68f98c608.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<em>Vlo\u017een\u00ed p\u0159i zat\u00ed\u017een\u00ed t\u0159iceti history syncers je u\u017e dost vysok\u00e9.<\/em><\/p>\n<p>Tak\u00e9 jsem zvy\u0161oval r\u016fzn\u00e9 parametry: history syncers, cache.<\/p>\n<p><img decoding=\"async\" alt=\"Vysok\u00fd v\u00fdkon a nativn\u00ed partitioning: Zabbix s podporou TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/6ca7edd76aea6fdec00a61a0a6dc34e5.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNa m\u00e9m za\u0159\u00edzen\u00ed se zat\u00ed\u017een\u00ed history syncers zvy\u0161ovalo na maximum. HistoryCache se rychle naplnil daty \u2014 v bufferu se nahromadila data k zpracov\u00e1n\u00ed.<\/p>\n<p>Celou dobu jsem sledoval, jak je vyu\u017e\u00edv\u00e1n procesor, opera\u010dn\u00ed pam\u011b\u0165 a dal\u0161\u00ed parametry syst\u00e9mu, a zjistil jsem, \u017ee vyu\u017eit\u00ed disk\u016f bylo maxim\u00e1ln\u00ed.<\/p>\n<p><img decoding=\"async\" alt=\"Vysok\u00fd v\u00fdkon a nativn\u00ed partitioning: Zabbix s podporou TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/e964a000156b561accd23b4e1644f4a8.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDos\u00e1hl jsem vyu\u017eit\u00ed <strong>maxim\u00e1ln\u00edch mo\u017enost\u00ed disku<\/strong> na tomto za\u0159\u00edzen\u00ed a na t\u00e9to virtu\u00e1ln\u00ed stroji. P\u0159i takov\u00e9 intenzit\u011b za\u010dal PostgreSQL dost aktivn\u011b uvol\u0148ovat data, a disk u\u017e nesta\u010dil pracovat na z\u00e1pis a \u010dten\u00ed.<\/p>\n<h3>Druh\u00fd server<\/h3>\n<p>\nVzala jsem jin\u00fd server, kter\u00fd m\u011bl u\u017e 48 procesor\u016f a 128 GB RAM. Upravila jsem ho \u2014 nainstalovala jsem 60 history syncer a dos\u00e1hla p\u0159ijateln\u00fdch v\u00fdkon\u016f.<\/p>\n<p><img decoding=\"async\" alt=\"Vysok\u00fd v\u00fdkon a nativn\u00ed partitioning: Zabbix s podporou TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/591fc759b336d5fb2091460036b136bf.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSkute\u010dn\u011b, to ji\u017e je limit v\u00fdkonu, kde je pot\u0159eba n\u011bco podniknout.<\/p>\n<h3>TimescaleDB. 80 000 nvps<\/h3>\n<p>\nM\u00fdm hlavn\u00edm \u00fakolem je ov\u011b\u0159it mo\u017enosti TimescaleDB pod z\u00e1t\u011b\u017e\u00ed Zabbix. 80 tis\u00edc hodnot za sekundu je hodn\u011b, frekvence sb\u011bru metrik (krom\u011b Yandexu, samoz\u0159ejm\u011b) a dost velk\u00fd \"setup\".<\/p>\n<p><img decoding=\"async\" alt=\"Vysok\u00fd v\u00fdkon a nativn\u00ed partitioning: Zabbix s podporou TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/aa569847e7bc31baab91661db1ee78a2.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNa ka\u017ed\u00e9m grafu je propad \u2014 to je pr\u00e1v\u011b migrace dat. Po propadech v Zabbix serveru se profil z\u00e1t\u011b\u017ee history syncer velmi zm\u011bnil \u2014 klesl na t\u0159etinu.<\/p>\n<blockquote><p>TimescaleDB umo\u017e\u0148uje vkl\u00e1dat data prakticky t\u0159ikr\u00e1t rychleji a pou\u017e\u00edvat m\u00e9n\u011b HistoryCache.<\/p><\/blockquote>\n<p>\nOdpov\u00eddaj\u00edc\u00edm zp\u016fsobem v\u00e1m budou v\u010das dod\u00e1v\u00e1ny data.<\/p>\n<h3>TimescaleDB. 120 000 nvps<\/h3>\n<p>\nPot\u00e9 jsem zv\u00fd\u0161il po\u010det datov\u00fdch prvk\u016f na 500 tis\u00edc. Hlavn\u00edm \u00fakolem bylo ov\u011b\u0159it mo\u017enosti TimescaleDB \u2014 z\u00edskal jsem odhadovanou hodnotu 125 tis\u00edc hodnot za sekundu.<\/p>\n<p><img decoding=\"async\" alt=\"Vysok\u00fd v\u00fdkon a nativn\u00ed partitioning: Zabbix s podporou TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/4770ca4030e1c086f2fd9305a12496bb.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTo je funk\u010dn\u00ed \"setup\", kter\u00fd m\u016f\u017ee dlouho fungovat. Ale proto\u017ee m\u016fj disk m\u011bl pouze 1,5 TB, tak jsem ho naplnila za p\u00e1r dn\u00ed.<\/p>\n<p><img decoding=\"async\" alt=\"Vysok\u00fd v\u00fdkon a nativn\u00ed partitioning: Zabbix s podporou TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/1ad521b909a22a7db81a9ed802d348e7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNejd\u016fle\u017eit\u011bj\u0161\u00ed je, \u017ee v tuto dobu byly vytv\u00e1\u0159eny nov\u00e9 partitiony TimescaleDB.<\/p>\n<p>Pro v\u00fdkon je to naprosto nepozorovateln\u00e9. Kdy\u017e se vytv\u00e1\u0159ej\u00ed partitiony v MySQL, nap\u0159\u00edklad, v\u0161echno je jinak. Obvykle se to d\u011bje v noci, proto\u017ee blokuje celkovou vlo\u017een\u00ed, pr\u00e1ci s tabulkami a m\u016f\u017ee vytv\u00e1\u0159et degradaci slu\u017eby. V p\u0159\u00edpad\u011b TimescaleDB tomu tak nen\u00ed.<\/p>\n<p>Jako p\u0159\u00edklad uk\u00e1\u017eu jeden graf z mnoha v komunit\u011b. Na obr\u00e1zku je zapnut TimescaleDB, d\u00edky \u010demu\u017e zat\u00ed\u017een\u00ed podle pou\u017eit\u00ed io.weight na procesoru kleslo. Vyu\u017eit\u00ed vnit\u0159n\u00edch proces\u016f se tak\u00e9 sn\u00ed\u017eilo. P\u0159i\u010dem\u017e to je oby\u010dejn\u00e1 virtu\u00e1lka na oby\u010dejn\u00fdch plechov\u00fdch disc\u00edch, ne na SSD.<\/p>\n<p><img decoding=\"async\" alt=\"Vysok\u00fd v\u00fdkon a nativn\u00ed partitioning: Zabbix s podporou TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/bea0cd0f1448e1d1b3a5f979d51ce61c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Z\u00e1v\u011bry<\/h2>\n<p>\n<strong>TimescaleDB je dobr\u00e9 \u0159e\u0161en\u00ed pro mal\u00e9 \"setup\"<\/strong>, kter\u00e9 nar\u00e1\u017eej\u00ed na v\u00fdkonnost disku. Umo\u017en\u00ed to uchovat funk\u010dnost a\u017e do migrace DB na rychlej\u0161\u00ed hardware.<\/p>\n<p>TimescaleDB je snadno nastaviteln\u00e9, poskytuje n\u00e1r\u016fst v\u00fdkonu, dob\u0159e spolupracuje se Zabbix a <strong>m\u00e1 v\u00fdhody v porovn\u00e1n\u00ed s PostgreSQL.<\/strong>.<\/p>\n<p>Pokud pou\u017e\u00edv\u00e1te PostgreSQL a nepl\u00e1nujete jej m\u011bnit, doporu\u010duji <strong>pou\u017e\u00edvat PostgreSQL s roz\u0161\u00ed\u0159en\u00edm TimescaleDB v kombinaci se Zabbixem<\/strong>. Toto \u0159e\u0161en\u00ed efektivn\u011b funguje a\u017e do st\u0159edn\u00edch \"setup\".<\/p>\n<blockquote>\n<p>Kdy\u017e mluv\u00edme o \"vysok\u00e9 v\u00fdkonu\" \u2014 mysl\u00edme t\u00edm <noindex><a rel=\"nofollow\" href=\"https:\/\/www.highload.ru\/moscow\/2019\">HighLoad++<\/a><\/noindex>\u010cek\u00e1n\u00ed na sezn\u00e1men\u00ed s technologiemi a praktikami, kter\u00e9 umo\u017e\u0148uj\u00ed slu\u017eb\u00e1m obsluhovat miliony u\u017eivatel\u016f, netrv\u00e1 dlouho. Seznam <noindex><a rel=\"nofollow\" href=\"https:\/\/www.highload.ru\/moscow\/2019\/abstracts\">prezentac\u00ed<\/a><\/noindex> na 7. a 8. listopadu jsme ji\u017e sestavili, ale <noindex><a rel=\"nofollow\" href=\"https:\/\/www.highload.ru\/moscow\/2019\/meetups\">meetupy<\/a><\/noindex> je\u0161t\u011b m\u016f\u017eete navrhnout.<\/p>\n<p>P\u0159ihlaste se k na\u0161emu <noindex><a rel=\"nofollow\" href=\"http:\/\/eepurl.com\/VYVaf\">newsletteru<\/a><\/noindex> a <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/HighLoadChannel\">telegram<\/a><\/noindex>, na kter\u00fdch odhalujeme zaj\u00edmavosti nadch\u00e1zej\u00edc\u00ed konference a zjist\u011bte, jak co nejl\u00e9pe vyu\u017e\u00edt p\u0159\u00edle\u017eitosti.<\/p>\n<\/blockquote>\n<p>Zdroj: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/oleg-bunin\/blog\/470902\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>Zabbix \u2014 \u044d\u0442\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430. \u041a\u0430\u043a \u0438 \u043b\u044e\u0431\u0430\u044f \u0434\u0440\u0443\u0433\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430, \u043e\u043d\u0430 \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441 \u0442\u0440\u0435\u043c\u044f \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u043c\u0438 \u0432\u0441\u0435\u0445 \u0441\u0438\u0441\u0442\u0435\u043c \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430: \u0441\u0431\u043e\u0440 \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445, \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0438\u0441\u0442\u043e\u0440\u0438\u0438, \u0435\u0435 \u043e\u0447\u0438\u0441\u0442\u043a\u0430. \u042d\u0442\u0430\u043f\u044b \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f, \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0442 \u0432\u0440\u0435\u043c\u044f. \u041d\u0435\u043c\u043d\u043e\u0433\u043e, \u043d\u043e \u0434\u043b\u044f \u043a\u0440\u0443\u043f\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u2014 \u044d\u0442\u043e \u0432\u043e\u043f\u0440\u043e\u0441 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0434\u0430\u043d\u043d\u044b\u043c. \u041e\u043d\u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":29204,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-38927","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"Zabbix \u2014 \u044d\u0442\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/vysokaya-proizvoditelnost-i-nativnoe-partitsionirovanie-zabbix-s-podderzhkoj-timescaledb\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0412\u044b\u0441\u043e\u043a\u0430\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438 \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0435 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435: Zabbix \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 TimescaleDB | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"Zabbix \u2014 \u044d\u0442\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/vysokaya-proizvoditelnost-i-nativnoe-partitsionirovanie-zabbix-s-podderzhkoj-timescaledb\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:26:48+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:26:48+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Vysok\u00fd v\u00fdkon a nativn\u00ed partitioning: Zabbix s podporou TimescaleDB | ProHoster","description":"Zabbix je syst\u00e9m monitorov\u00e1n\u00ed.","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/vysokaya-proizvoditelnost-i-nativnoe-partitsionirovanie-zabbix-s-podderzhkoj-timescaledb","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0412\u044b\u0441\u043e\u043a\u0430\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0438 \u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0435 \u043f\u0430\u0440\u0442\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435: Zabbix \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 TimescaleDB | ProHoster","og:description":"Zabbix \u2014 \u044d\u0442\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430.","og:url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/vysokaya-proizvoditelnost-i-nativnoe-partitsionirovanie-zabbix-s-podderzhkoj-timescaledb","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:26:48+00:00","article:modified_time":"2019-10-31T19:26:48+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"38927","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-23 23:59:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 21:14:06","updated":"2026-01-23 23:59:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/38927","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=38927"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/38927\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media\/29204"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=38927"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=38927"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=38927"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}