{"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\/hr\/blog\/administrirovanie\/vysokaya-proizvoditelnost-i-nativnoe-partitsionirovanie-zabbix-s-podderzhkoj-timescaledb","title":{"rendered":"Visoka izvedba i nativno particioniranje: Zabbix s podr\u0161kom za TimescaleDB","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Zabbix je sustav za pra\u0107enje. Kao i svaki drugi sustav, suo\u010dava se s tri osnovna problema svih sustava za pra\u0107enje: prikupljanje i obrada podataka, pohrana povijesti i njezino \u010di\u0161\u0107enje.<\/p>\n<p>Faze prikupljanja, obrade i zapisivanja podataka oduzimaju vrijeme. Malo, ali za velike sustave to mo\u017ee rezultirati velikim ka\u0161njenjima. Problem pohrane je pitanje pristupa podacima. Oni se koriste za izvje\u0161tavanje, provjere i okida\u010de. Ka\u0161njenja u pristupu podacima tako\u0111er utje\u010du na performanse. Kada se baze podataka pro\u0161iruju, zastarjeli podaci moraju se brisati. Brisanje je te\u0161ka operacija koja tako\u0111er tro\u0161i dio resursa.<\/p>\n<p><img decoding=\"async\" alt=\"Visoka izvedba i nativno particioniranje: Zabbix s podr\u0161kom za TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/9b7aa23705cd32b4d8d858ad78b181fd.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nProblemi s ka\u0161njenjem u prikupljanju i pohrani u Zabbixu rje\u0161avaju se ke\u0161iranjem: nekoliko vrsta ke\u0161a, ke\u0161iranje u bazi podataka. Za rje\u0161avanje tre\u0107eg problema, ke\u0161iranje nije prikladno, stoga je u Zabbixu primijenjen TimescaleDB. O tome \u0107e govoriti <strong>Andrej Gu\u0161\u010din<\/strong> \u2014 in\u017eenjer tehni\u010dke podr\u0161ke <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/zabbix\/\">Zabbix SIA<\/a><\/noindex>. U podr\u0161ci Zabbixu Andrej je vi\u0161e od 6 godina i izravno se suo\u010dava s performansama.<\/p>\n<p>Kako funkcionira TimescaleDB, kakve performanse mo\u017ee pru\u017eiti u usporedbi s obi\u010dnim PostgreSQL-om? Koju ulogu igra Zabbix za baze podataka TimescaleDB? Kako pokrenuti od nule i kako migrirati s PostgreSQL-a i koja konfiguracija pru\u017ea najbolje performanse? O svemu ovome u nastavku.<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=\"Pogledajte 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>Izazovi performansi<\/h2>\n<p>\nSvaki sustav za pra\u0107enje suo\u010dava se s odre\u0111enim izazovima performansi. Pri\u010dat \u0107u o tri od njih: prikupljanje i obrada podataka, pohrana, \u010di\u0161\u0107enje povijesti.<\/p>\n<p><strong>Brzo prikupljanje i obrada podataka. <\/strong>Dobar sustav za pra\u0107enje trebao bi brzo primati sve podatke i obra\u0111ivati ih prema uvjetima okida\u010da \u2014 prema svojim kriterijima. Nakon obrade sustav tako\u0111er treba brzo pohraniti te podatke u bazu podataka kako bi ih kasnije mogao koristiti.<\/p>\n<p><strong>Pohrana povijesti. <\/strong>Dobar sustav za pra\u0107enje trebao bi pohranjivati povijest u bazi podataka i omogu\u0107iti jednostavan pristup metrikama. Povijest je potrebna kako bi se koristila u izvje\u0161tajima, grafikonima, okida\u010dima, granicama i izra\u010dunatim elementima podataka za obavijest.<\/p>\n<p><strong>\u010ci\u0161\u0107enje povijesti. <\/strong>Ponekad do\u0111e dan kada vam vi\u0161e nisu potrebne metrike. Za\u0161to biste trebali zadr\u017eati podatke prikupljene prije 5 godina, mjesec ili dva: neki \u010dvorovi su obrisani, neki poslu\u017eitelji ili metrike vi\u0161e nisu potrebni jer su zastarjeli i prestali su se prikupljati. Dobar sustav pra\u0107enja trebao bi zadr\u017eavati povijesne podatke i s vremena na vrijeme ih brisati kako bi se baza podataka ne bi prekomjerno pove\u0107avala.<\/p>\n<blockquote><p>\u010ci\u0161\u0107enje zastarjela podataka je akutno pitanje koje zna\u010dajno utje\u010de na performanse baze podataka.<\/p><\/blockquote>\n<p><\/p>\n<h2>Ke\u0161iranje u Zabbixu<\/h2>\n<p>\nU Zabbixu su prvi i drugi pozivi rije\u0161eni uz pomo\u0107 ke\u0161iranja. Za prikupljanje i obradu podataka koristi se radna memorija. Za pohranu - povijesti u okida\u010dima, grafikonima i izra\u010dunatim elementima podataka. Na strani baze podataka postoji odre\u0111eno ke\u0161iranje za glavne upite, na primjer, grafikone.<\/p>\n<p>Ke\u0161iranje na strani Zabbix poslu\u017eitelja je:<\/p>\n<ul>\n<li>ConfigurationCache;<\/li>\n<li>ValueCache;<\/li>\n<li>HistoryCache;<\/li>\n<li>TrendsCache.<\/li>\n<\/ul>\n<p>\nPogledajmo ih detaljnije.<\/p>\n<h3>ConfigurationCache<\/h3>\n<p>\nTo je glavni ke\u0161 u kojem \u010duvamo metrike, poslu\u017eitelje, elemente podataka, okida\u010de - sve \u0161to je potrebno za PreProcessing i prikupljanje podataka.<\/p>\n<p><img decoding=\"async\" alt=\"Visoka izvedba i nativno particioniranje: Zabbix s podr\u0161kom za TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/122708198f6cd136fbd0420876c06e9c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSve to se pohranjuje u ConfigurationCache kako ne bismo stvarali suvi\u0161ne upite u bazi podataka. Nakon pokretanja poslu\u017eitelja a\u017euriramo ovaj ke\u0161, kreiramo i povremeno a\u017euriramo konfiguracije.<\/p>\n<h3>Prikupljanje podataka<\/h3>\n<p>\nShema je prili\u010dno velika, ali osnovno u njoj je <strong>sakuplja\u010di<\/strong>. To su razli\u010diti \u201epollers\u201c - procesi prikupljanja. Oni su odgovorni za razli\u010dite vrste prikupljanja: prikupljaju podatke putem SNMP-a, IPMI-a, i prenose ih na PreProcessing.<\/p>\n<p><img decoding=\"async\" alt=\"Visoka izvedba i nativno particioniranje: Zabbix s podr\u0161kom za TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/deff5d9ff358f1b04b505d18c7770f21.jpg\" style=\"display:block;margin: 0 auto;\" \/><em>Sakuplja\u010di su ozna\u010deni naran\u010dastom linijom.<\/em><\/p>\n<p>U Zabbixu postoje izra\u010dunati agregacijski elementi podataka koji su potrebni za agregiranje provjera. Ako ih imamo, uzimamo podatke za njih izravno iz ValueCache.<\/p>\n<h3>PreProcessing HistoryCache<\/h3>\n<p>\nSvi sakuplja\u010di koriste ConfigurationCache da bi dobili zadatke. Zatim ih prenose na PreProcessing.<\/p>\n<p><img decoding=\"async\" alt=\"Visoka izvedba i nativno particioniranje: Zabbix s podr\u0161kom za TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/116e25100ebdf9ed209a9b04fa6fa156.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPreProcessing koristi ConfigurationCache da bi dobio korake PreProcessing-a. Obraduje te podatke na razli\u010dite na\u010dine.<\/p>\n<p>Nakon obrade podataka uz pomo\u0107 PreProcessing-a, pohranjujemo ih u HistoryCache kako bismo ih obradili. Ovdje zavr\u0161ava prikupljanje podataka i prelazimo na glavni proces u Zabbixu - <strong>history syncer<\/strong>, budu\u0107i da je to monolitna arhitektura.<\/p>\n<p><em>Napomena: PreProcessing je prili\u010dno zahtjevna operacija. Od verzije 4.2 premje\u0161tena je na proxy. Ako imate vrlo veliki Zabbix s velikim brojem elemenata podataka i visokom frekvencijom prikupljanja, to zna\u010dajno olak\u0161ava rad.<\/em><\/p>\n<h3>ValueCache, povijest &amp; trendovi ke\u0161<\/h3>\n<p><\/p>\n<blockquote><p>History syncer \u2014 je glavni proces koji atomarno obra\u0111uje svaki element podataka, tj. svaku vrijednost.<\/p><\/blockquote>\n<p>\nHistory syncer uzima vrijednosti iz HistoryCache i provjerava u Configuration postoje li okida\u010di za prora\u010dune. Ako postoje \u2014 izra\u010dunava.<\/p>\n<p>History syncer stvara doga\u0111aj, eskalaciju, kako bi stvorio obavijesti, ako je to potrebno prema konfiguraciji, i snima. Ako postoje okida\u010di za daljnju obradu, tada tu vrijednost zapamti u ValueCache, kako ne bi pristupao tablici povijesti. Tako se ValueCache puni podacima koji su potrebni za izra\u010dunavanje okida\u010da, izra\u010dunatih elemenata.<\/p>\n<p>History syncer zapisuje sve podatke u Bazu podataka, a ona \u2014 na disk. Proces obrade na tome se zavr\u0161ava.<\/p>\n<p><img decoding=\"async\" alt=\"Visoka izvedba i nativno particioniranje: Zabbix s podr\u0161kom za TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/4d74195381fda7756b0250982f6896be.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Ke\u0161iranje u Bazi podataka<\/h3>\n<p>\nNa strani Baze podataka postoje razli\u010diti ke\u0161evi, kada \u017eelite gledati grafikone ili izvje\u0161taje o doga\u0111ajima:<\/p>\n<ul>\n<li><code>Innodb_buffer_pool<\/code> na strani MySQL;<\/li>\n<li><code>shared_buffers<\/code> na strani PostgreSQL;<\/li>\n<li><code>effective_cache_size<\/code> na strani Oracle;<\/li>\n<li><code>shared_pool<\/code> na strani DB2.<\/li>\n<\/ul>\n<p>\nPostoje jo\u0161 mnogi drugi ke\u0161evi, ali ovo su osnovni za sve Baze podataka. Oni omogu\u0107uju da se u radnoj memoriji dr\u017ee podaci koji su \u010desto potrebni za upite. Imaju svoje tehnologije za to.<\/p>\n<h3>Performanse Baze podataka su kriti\u010dno va\u017ene<\/h3>\n<p>\nZabbix poslu\u017eitelj neprekidno prikuplja podatke i zapisuje ih. Kada se ponovno pokrene, tako\u0111er \u010dita iz povijesti kako bi napunio ValueCache. Skripte i izvje\u0161taje koriste <strong>Zabbix API<\/strong>, koji je temeljen na web su\u010delju. Zabbix API se obra\u0107a bazi podataka i dobiva potrebne podatke za grafikone, izvje\u0161taje, popise doga\u0111aja i posljednjih problema.<\/p>\n<p><img decoding=\"async\" alt=\"Visoka izvedba i nativno particioniranje: Zabbix s podr\u0161kom za TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/dd0efdc4e57c1197d448ce453012091e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nZa vizualizaciju \u2014 <strong>Grafana<\/strong>. Me\u0111u na\u0161im korisnicima ovo je popularno rje\u0161enje. Ona mo\u017ee izravno slati zahtjeve putem Zabbix API-ja i u Bazu podataka, i stvara odre\u0111enu konkurentnost za dobivanje podataka. Stoga je potrebna detaljnija i bolja konfiguracija Baze podataka kako bi se osigurala brza isporuka rezultata i testiranja.<\/p>\n<h2>Housekeeper<\/h2>\n<p>\nTre\u0107i poziv performansi u Zabbix-u \u2014 je \u010di\u0161\u0107enje povijesti pomo\u0107u Housekeeper-a. On po\u0161tuje sve postavke \u2014 u elementima podataka je ozna\u010deno koliko dana pohranjivati dinamiku promjena (trendova).<\/p>\n<p>TrendsCache ra\u010dunamo u letu. Kada podaci stignu, agregiramo ih za jedan sat i zapisujemo u tablice za dinamiku promjena trendova.<\/p>\n<p>Housekeeper se pokre\u0107e i uklanja informacije iz baze podataka obi\u010dnim \u00abselect\u00bb upitima. To nije uvijek u\u010dinkovito, \u0161to se mo\u017ee vidjeti na grafikonima performansi unutarnjih procesa.<\/p>\n<p><img decoding=\"async\" alt=\"Visoka izvedba i nativno particioniranje: Zabbix s podr\u0161kom za TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/a3af1badd14b1092bc26e0b53845ae04.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCrveni grafikon pokazuje da je History syncer neprekidno zauzet. Narand\u017easti grafikon iznad - to je Housekeeper koji se neprekidno pokre\u0107e. \u010ceka od baze podataka da ukloni sve redove koje je odredio.<\/p>\n<p>Kada bi trebalo isklju\u010diti Housekeeper? Na primjer, ako postoje \u00abItem ID\u00bb i potrebno je ukloniti posljednjih 5 tisu\u0107a redova tokom odre\u0111enog vremena. Naravno, to se doga\u0111a preko indeksa. No obi\u010dno je dataset vrlo velik, i baza podataka ionako \u010dita s diska i prenosi u cache. To je uvijek vrlo skupa operacija za bazu podataka i, ovisno o veli\u010dini baze, mo\u017ee dovesti do problema s performansama.<\/p>\n<p><img decoding=\"async\" alt=\"Visoka izvedba i nativno particioniranje: Zabbix s podr\u0161kom za TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/0778318b539fbe33318e8a7310f8a89b.jpg\" style=\"display:block;margin: 0 auto;\" \/> <\/p>\n<p>Housekeeper se mo\u017ee jednostavno isklju\u010diti. U web su\u010delju postoji postavka u \u00abAdministration general\u00bb za Housekeeper. Isklju\u010dujemo unutarnje housekeeping za unutarnju povijest trendova i on vi\u0161e ne upravlja time.<\/p>\n<p>Housekeeper je isklju\u010den, grafikoni su se stabilizirali - koji bi mogli biti problemi u ovom slu\u010daju i \u0161to mo\u017ee pomo\u0107i u rje\u0161avanju tre\u0107eg poziva performansi?<\/p>\n<h2>Partitioning - sekcioniranje ili partricioniranje<\/h2>\n<p>\nObi\u010dno se partricioniranje postavlja na razli\u010dite na\u010dine na svakoj relacijskoj bazi podataka koju sam spomenuo. Svaka ima svoju tehnologiju, ali su sli\u010dne, u osnovi. Stvaranje nove particije \u010desto dovodi do odre\u0111enih problema.<\/p>\n<p>Obi\u010dno se particije postavljaju ovisno o \u00absetup\u00bb - koli\u010dini podataka koja se stvara za jedan dan. Op\u0107enito, partricioniranje se postavlja na jedan dan, to je minimum. Za trendove nove particije - za 1 mjesec.<\/p>\n<p>Vrijednosti se mogu mijenjati u slu\u010daju vrlo velikog \u00absetup\u00bb. Ako je mali \u00absetup\u00bb - to je do 5.000 nvps (novih vrijednosti u sekundi), srednji - od 5.000 do 25.000, dok je veliki - iznad 25.000 nvps. To su velike i vrlo velike instalacije koje zahtijevaju pa\u017eljivo pode\u0161avanje same baze podataka.<\/p>\n<p>Na vrlo velikim instalacijama segment od jednog dana mo\u017eda nije optimalan. Vidio sam na MySQL particije od 40 GB i vi\u0161e za jedan dan. To je vrlo veliki volumen podataka koji mo\u017ee dovesti do problema, i treba ga smanjiti.<\/p>\n<h3>\u0160to donosi partricioniranje?<\/h3>\n<p>\n<strong>Sekcioniranje tablica<\/strong>. \u010cesto su to odvojene datoteke na disku. Plan upita optimizirano bira jednu particiju. Obi\u010dno se particioniranje koristi prema rasponu \u2014 za Zabbix to tako\u0111er vrijedi. Tamo koristimo \"timestamp\" \u2014 vrijeme od po\u010detka epoh\u0435. Kod nas su to obi\u010dni brojevi. Postavljate po\u010detak i kraj dana \u2014 to je particija.<\/p>\n<p><strong>Brzo brisanje<\/strong> \u2014 <code>DELETE<\/code>. Odabire se jedna datoteka\/subtablica, a ne izbor redaka za brisanje.<\/p>\n<p><strong>Zna\u010dajno ubrzava izbor podataka<\/strong> <code>SELECT<\/code> \u2014 koristi jednu ili vi\u0161e particija, a ne cijelu tablicu. Ako tra\u017eite podatke starije od dva dana, oni se br\u017ee odabiru iz Baze podataka jer je potrebno u\u010ditati u cache i izdati samo jednu datoteku, a ne veliku tablicu.<\/p>\n<p>\u010cesto mnoge BD tako\u0111er ubrzava <code>UBACI<\/code> \u2014 umetanja u child-tablicu.<\/p>\n<h2>TimescaleDB<\/h2>\n<p>\nZa v 4.2 obratili smo pozornost na TimescaleDB. To je pro\u0161irenje za PostgreSQL s nativnim su\u010deljem. Pro\u0161irenje u\u010dinkovito radi s podacima vremenskih serija, a da pritom ne gubi prednosti relacijskih BD. TimescaleDB tako\u0111er automatski particionira.<\/p>\n<p>U TimescaleDB postoji pojam <strong>hiperatabla<\/strong> (hypertable), koju kreirate. U njoj se nalaze <strong>chunkovi<\/strong> \u2014 particije. Chunkovi su automatski upravljani segmenti hiperatabla, koji ne utje\u010du na druge segmente. Za svaki chunk postoji svoj vremenski raspon.<\/p>\n<p><img decoding=\"async\" alt=\"Visoka izvedba i nativno particioniranje: Zabbix s podr\u0161kom za 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 stvarno radi u\u010dinkovito. Proizvo\u0111a\u010di pro\u0161irenja tvrde da koriste ispravniji algoritam obrade upita, posebice, <code>inserts<\/code>. Kada veli\u010dine dataset-u umetanja rastu, algoritam odr\u017eava stalnu u\u010dinkovitost.<\/p>\n<p><img decoding=\"async\" alt=\"Visoka izvedba i nativno particioniranje: Zabbix s podr\u0161kom za TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/52f042018180ffd2cb6a2cf4a3af603e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNakon 200 milijuna redaka PostgreSQL obi\u010dno po\u010dinje znatno usporavati i gubi performanse do 0. TimescaleDB omogu\u0107uje u\u010dinkovito umetanje \"inserts\" bez obzira na koli\u010dinu podataka.<\/p>\n<h3>Instalacija<\/h3>\n<p>\nInstalacija TimescaleDB je prili\u010dno jednostavna za bilo koje pakete. U <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.timescale.com\/v1.3\/getting-started\">dokumentaciju<\/a><\/noindex> sve je detaljno opisano \u2014 ovisi o slu\u017ebenim paketima PostgreSQL. TimescaleDB se tako\u0111er mo\u017ee izgraditi i kompajlirati ru\u010dno.<\/p>\n<p>Za Zabbix BD jednostavno aktiviramo pro\u0161irenje:<\/p>\n<pre><code class=\"sql\">echo \"CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;\" | sudo -u postgres psql zabbix<\/code><\/pre>\n<p>\nAktivirate <code>pro\u0161irenje<\/code> i kreirate ga za BD Zabbix. Posljednji korak \u2014 kreiranje hiperatabla.<\/p>\n<h3>Migracija tablica povijesti na TimescaleDB<\/h3>\n<p>\nZa to postoji posebna funkcija <code>create_hypertable<\/code>:<\/p>\n<pre><code class=\"sql\">ODABERITE create_hypertable(\u2018history\u2019, \u2018clock\u2019, chunk_time_interval =&gt; 86400, migrate_data =&gt; true);\nODABERITE create_hypertable(\u2018history_unit\u2019, \u2018clock\u2019, chunk_time_interval =&gt; 86400, migrate_data =&gt; true);\nODABERITE create_hypertable(\u2018history_log\u2019, \u2018clock\u2019, chunk_time_interval =&gt; 86400, migrate_data =&gt; true);\nODABERITE create_hypertable(\u2018history_text\u2019, \u2018clock\u2019, chunk_time_interval =&gt; 86400, migrate_data =&gt; true);\nODABERITE create_hypertable(\u2018history_str\u2019, \u2018clock\u2019, chunk_time_interval =&gt; 86400, migrate_data =&gt; true);\nODABERITE create_hypertable(\u2018trends\u2019, \u2018clock\u2019, chunk_time_interval =&gt; 86400, migrate_data =&gt; true);\nODABERITE create_hypertable(\u2018trends_unit\u2019, \u2018clock\u2019, chunk_time_interval =&gt; 86400, migrate_data =&gt; true);\nAZURIRAJ config SET db_extension='timescaledb', hk_history_global=1, hk_trends_global=1<\/code><\/pre>\n<p>\nFunkcija ima tri parametra. Prvi \u2014<strong> tablica u bazi podataka<\/strong>, za koju je potrebno stvoriti hipertablicu. Drugi \u2014 <strong>polje<\/strong>, po kojem se mora stvoriti <code>chunk_time_interval<\/code> \u2014 interval chunkova particija koje treba koristiti. U mom slu\u010daju interval iznosi jedan dan \u2014 86\u00a0400.<\/p>\n<p>Tre\u0107i parametar \u2014 <code><strong>migrirati_podatke<\/strong><\/code>. Ako se postavi <code>true<\/code>, svi trenutni podaci se premje\u0161taju u unaprijed stvorene chunkove. Ja sam koristio <code>migrirati_podatke<\/code>. Imao sam oko 1 TB, \u0161to je trajalo vi\u0161e od sat vremena. \u010cak sam u nekim slu\u010dajevima prilikom testiranja brisao nepotrebne povijesne podatke simboli\u010dnih tipova da ih ne bih premje\u0161tao.<\/p>\n<p>Zadnji korak \u2014\u00a0<code><strong>AZURIRAJ<\/strong><\/code>: u <code>db_extension<\/code> postavljamo <code>timescaledb<\/code>, kako bi baza podataka razumjela da postoji ovo pro\u0161irenje. Zabbix ga aktivira i ispravno koristi sintaksu i upite za bazu podataka \u2014 one funkcionalnosti koje su potrebne za TimescaleDB.<\/p>\n<h2>Konfiguracija hardvera<\/h2>\n<p>\nKoristio sam dva poslu\u017eitelja. Prvi \u2014 <strong>VMware ma\u0161ina<\/strong>. Ona je dovoljno mala: 20 procesora Intel\u00ae Xeon\u00ae CPU E5-2630 v 4 @ 2.20GHz, 16 GB radne memorije i SSD disk od 200 GB.<\/p>\n<p>Na njoj sam instalirao PostgreSQL 10.8 s OS Debian 10.8-1.pgdg90+1 i datote\u010dnim sustavom xfs. Sve je minimalno pode\u0161eno da koristi ba\u0161 ovu bazu podataka, osim onoga \u0161to \u0107e koristiti sam Zabbix.<\/p>\n<p>Na ovoj ma\u0161ini je bio Zabbix-poslu\u017eitelj, PostgreSQL i <strong>agents for load testing<\/strong>. Imao sam 50 aktivnih agenata koji su koristili <code>LoadableModule<\/code>, kako bi vrlo brzo generirali razli\u010dite rezultate: brojeve, nizove. Punio sam bazu velikom koli\u010dinom podataka.<\/p>\n<p>Izvorna konfiguracija je sadr\u017eavala <strong>5\u00a0000 elemenata<\/strong> podataka za svaki host. Skoro svaki element je imao okida\u010d kako bi to izgledalo sli\u010dno stvarnim instalacijama. U nekim slu\u010dajevima je bilo vi\u0161e od jednog okida\u010da. Na jedan \u010dvor mre\u017ee dolazilo je <strong>3\u00a0000-7\u00a0000 okida\u010da<\/strong>.<\/p>\n<p>Interval a\u017euriranja elemenata podataka \u2014 <strong>4-7 sekundi<\/strong>Optere\u0107enje sam regulirao tako da nisam koristio samo 50 agenata, ve\u0107 sam ih dodavao i vi\u0161e. Tako\u0111er, pomo\u0107u dinami\u010dkih podataka regulirao sam optere\u0107enje i smanjio interval a\u017euriranja na 4 sekunde.<\/p>\n<h3>PostgreSQL. 35\u00a0000 nvps<\/h3>\n<p>\nPrvo pokretanje na ovom hardveru imao sam s \u010distim PostgreSQL \u2014 35 tisu\u0107a vrijednosti u sekundi. Kao \u0161to se mo\u017ee vidjeti, umetanje podataka traje djeli\u0107 sekunde \u2014 sve je dobro i brzo. Jedina stvar je \u0161to se SSD disk od 200 GB brzo popunio.<\/p>\n<p><img decoding=\"async\" alt=\"Visoka izvedba i nativno particioniranje: Zabbix s podr\u0161kom za TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/e84b2eb0f6fbbd902c5feab367c750ee.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOvo je standardna Zabbix dashboard performansi \u2014 servera.<\/p>\n<p><img decoding=\"async\" alt=\"Visoka izvedba i nativno particioniranje: Zabbix s podr\u0161kom za TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/c3afe021acf8e272813b8d8c2f82e762.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPrva plava grafikon \u2014 broj vrijednosti u sekundi. Drugi grafikon s desne strane \u2014 optere\u0107enje procesa sakupljanja. Tre\u0107i \u2014 optere\u0107enje unutarnjih procesa sakupljanja: history syncers i Housekeeper, koji je ovdje radio dovoljno dugo.<\/p>\n<p>\u010cetvrti grafikon prikazuje kori\u0161tenje HistoryCache. To je svojevrsni buffer prije umetanja u bazu podataka. Zeleni peti grafikon prikazuje kori\u0161tenje ValueCache, odnosno koliko hitova ValueCache za okida\u010de \u2014 to su tisu\u0107e vrijednosti u sekundi.<\/p>\n<h3>PostgreSQL. 50\u00a0000 nvps<\/h3>\n<p>\nNakon toga, pove\u0107ao sam optere\u0107enje do 50 tisu\u0107a vrijednosti u sekundi na ovom istom hardveru.<\/p>\n<p><img decoding=\"async\" alt=\"Visoka izvedba i nativno particioniranje: Zabbix s podr\u0161kom za TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/8f10944486d5502b57d36059382d551b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPrilikom u\u010ditavanja s Housekeeper, umetanje 10 tisu\u0107a vrijednosti zapisano je u 2-3 sekunde.<\/p>\n<p><img decoding=\"async\" alt=\"Visoka izvedba i nativno particioniranje: Zabbix s podr\u0161kom za TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/5228c1735f0ee2da7f827093f3c7b1f9.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<em>Housekeeper ve\u0107 po\u010dinje ometati rad.<\/em><\/p>\n<p>Na tre\u0107em grafikonu se mo\u017ee vidjeti da je, u cjelini, optere\u0107enje trapera i history syncersa jo\u0161 uvijek na razini od 60%. Na \u010detvrtom grafikonu, HistoryCache tijekom rada Housekeepera po\u010dinje se ve\u0107 aktivno puniti. Napunio se za 20% \u2014 \u0161to je otprilike 0,5 GB.<\/p>\n<h3>PostgreSQL. 80\u00a0000 nvps<\/h3>\n<p>\nNakon toga, pove\u0107ao sam optere\u0107enje do 80 tisu\u0107a vrijednosti u sekundi. To je otprilike 400 tisu\u0107a elemenata podataka i 280 tisu\u0107a okida\u010da.<\/p>\n<p><img decoding=\"async\" alt=\"Visoka izvedba i nativno particioniranje: Zabbix s podr\u0161kom za TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/f6c6b0d6793f96523f7406e68f98c608.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<em>Umetanje uz optere\u0107enje trideset history syncersa ve\u0107 je dovoljno visoko.<\/em><\/p>\n<p>Tako\u0111er sam pove\u0107avao razli\u010dite parametre: history syncers, cache.<\/p>\n<p><img decoding=\"async\" alt=\"Visoka izvedba i nativno particioniranje: Zabbix s podr\u0161kom za TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/6ca7edd76aea6fdec00a61a0a6dc34e5.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNa mom hardveru optere\u0107enje history syncersa pove\u0107avalo se do maksimuma. HistoryCache se brzo ispunjavao podacima \u2014 u bufferu su se nakupili podaci za obradu.<\/p>\n<p>Durante cijelo to vreme, pratio sam kako se koriste procesor, radna memorija i drugi sustavni parametri, i otkrio da je iskori\u0161tenost diskova bila maksimalna.<\/p>\n<p><img decoding=\"async\" alt=\"Visoka izvedba i nativno particioniranje: Zabbix s podr\u0161kom za TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/e964a000156b561accd23b4e1644f4a8.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPostigao sam kori\u0161tenje <strong>maksimalnih mogu\u0107nosti diska<\/strong> na ovom hardveru i na ovoj virtualnoj ma\u0161ini. Pri ovoj intenzivnoj upotrebi, PostgreSQL je po\u010deo aktivno odbacivati podatke i disk vi\u0161e nije mogao raditi na zapisivanje i \u010ditanje.<\/p>\n<h3>Drugi server<\/h3>\n<p>\nUzeo sam drugi server koji je ve\u0107 imao 48 procesora i 128 GB radne memorije. Modificirao sam ga \u2014 instalirao 60 history syncer i postigao zadovoljavaju\u0107u brzinu.<\/p>\n<p><img decoding=\"async\" alt=\"Visoka izvedba i nativno particioniranje: Zabbix s podr\u0161kom za TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/591fc759b336d5fb2091460036b136bf.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nU su\u0161tini, ovo je ve\u0107 granica performansi na kojoj je potrebno poduzeti neke korake.<\/p>\n<h3>TimescaleDB. 80 000 nvps<\/h3>\n<p>\nMoj glavni zadatak je bio provjeriti mogu\u0107nosti TimescaleDB pod optere\u0107enjem Zabbixa. 80 tisu\u0107a vrijednosti u sekundi \u2014 to je mnogo, u\u010destalost prikupljanja metrika (osim Yandexa, naravno) i prili\u010dno veliki 'setup'.<\/p>\n<p><img decoding=\"async\" alt=\"Visoka izvedba i nativno particioniranje: Zabbix s podr\u0161kom za TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/aa569847e7bc31baab91661db1ee78a2.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNa svakom grafikonu dolazi do pada \u2014 to je upravo migracija podataka. Nakon padova na Zabbix serveru, profil optere\u0107enja history syncer se vrlo jako promijenio \u2014 pao je tri puta.<\/p>\n<blockquote><p>TimescaleDB omogu\u0107ava umetanje podataka gotovo tri puta br\u017ee i kori\u0161tenje manje HistoryCache.<\/p><\/blockquote>\n<p>\nPrema tome, va\u0161i podaci \u0107e biti isporu\u010deni na vrijeme.<\/p>\n<h3>TimescaleDB. 120 000 nvps<\/h3>\n<p>\nZatim sam pove\u0107ao broj elemenata podataka na 500 tisu\u0107a. Glavni zadatak bio je provjeriti mogu\u0107nosti TimescaleDB \u2014 dobio sam procijenjenu vrijednost od 125 tisu\u0107a vrijednosti u sekundi.<\/p>\n<p><img decoding=\"async\" alt=\"Visoka izvedba i nativno particioniranje: Zabbix s podr\u0161kom za TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/4770ca4030e1c086f2fd9305a12496bb.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTo je radni 'setup' koji mo\u017ee dugo raditi. Me\u0111utim, jer je moj disk imao samo 1,5 TB, napunio sam ga za nekoliko dana.<\/p>\n<p><img decoding=\"async\" alt=\"Visoka izvedba i nativno particioniranje: Zabbix s podr\u0161kom za TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/1ad521b909a22a7db81a9ed802d348e7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNajva\u017enije je da su u isto vrijeme stvarane nove particije TimescaleDB.<\/p>\n<p>Za performanse to je potpuno neprimjetno. Kada se stvaraju particije u MySQL-u, na primjer, sve je druga\u010dije. Obi\u010dno se to doga\u0111a no\u0107u, jer blokira op\u0107e umetanje, rad s tablicama i mo\u017ee uzrokovati degradaciju usluge. U slu\u010daju TimescaleDB to nije slu\u010daj.<\/p>\n<p>Za primjer, pokazat \u0107u jedan grafikon iz mnogih u zajednici. Na slici je uklju\u010den TimescaleDB, \u0161to je dovelo do smanjenja optere\u0107enja po kori\u0161tenju io.weight na procesoru. Kori\u0161tenje elemenata unutarnjih procesa tako\u0111er se smanjilo. Ipak, ovo je obi\u010dna virtualka na obi\u010dnim diskovima, a ne SSD.<\/p>\n<p><img decoding=\"async\" alt=\"Visoka izvedba i nativno particioniranje: Zabbix s podr\u0161kom za TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/bea0cd0f1448e1d1b3a5f979d51ce61c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Zaklju\u010dci<\/h2>\n<p>\n<strong>TimescaleDB je dobro rje\u0161enje za male 'setup'.<\/strong>, koji se suo\u010davaju s performansama diska. Omogu\u0107it \u0107e dobar rad prije migracije Baze podataka na br\u017ee hardvere.<\/p>\n<p>TimescaleDB je jednostavan za postavljanje, pru\u017ea porast performansi, dobro radi s Zabbixom i <strong>ima prednosti u odnosu na PostgreSQL.<\/strong>.<\/p>\n<p>Ako koristite PostgreSQL i ne planirate ga mijenjati, preporu\u010dujem <strong>koristiti PostgreSQL s ekstenzijom TimescaleDB u kombinaciji sa Zabbixom.<\/strong>Ovo rje\u0161enje u\u010dinkovito radi za srednje 'setup'.<\/p>\n<blockquote>\n<p>Kada ka\u017eemo 'visoke performanse' \u2014 podrazumijevamo <noindex><a rel=\"nofollow\" href=\"https:\/\/www.highload.ru\/moscow\/2019\">HighLoad++<\/a><\/noindex>. \u010cekajte da se upoznate s tehnologijama i praksama koje omogu\u0107uju uslugama da opslu\u017euju milijune korisnika, ne\u0107e dugo trajati. Popis <noindex><a rel=\"nofollow\" href=\"https:\/\/www.highload.ru\/moscow\/2019\/abstracts\">izvje\u0161taja<\/a><\/noindex> za 7. i 8. studenog ve\u0107 smo sastavili, a to <noindex><a rel=\"nofollow\" href=\"https:\/\/www.highload.ru\/moscow\/2019\/meetups\">meetup<\/a><\/noindex> jo\u0161 mo\u017eemo predlo\u017eiti.<\/p>\n<p>Pratite na\u0161u <noindex><a rel=\"nofollow\" href=\"http:\/\/eepurl.com\/VYVaf\">newsletter<\/a><\/noindex> i <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/HighLoadChannel\">telegram<\/a><\/noindex>, u kojima otkrivamo tajne nadolaze\u0107e konferencije i saznajte kako izvu\u0107i maksimum korist.<\/p>\n<\/blockquote>\n<p>Izvor: <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.4 - 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\/hr\/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.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"hr_HR\" \/>\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\/hr\/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\udd47Visoka u\u010dinkovitost i prirodno particioniranje: Zabbix s podr\u0161kom za TimescaleDB | ProHoster","description":"Zabbix je sustav nadzora.","canonical_url":"https:\/\/prohoster.info\/hr\/blog\/administrirovanie\/vysokaya-proizvoditelnost-i-nativnoe-partitsionirovanie-zabbix-s-podderzhkoj-timescaledb","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"hr_HR","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\/hr\/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\/hr\/wp-json\/wp\/v2\/posts\/38927","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/comments?post=38927"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/posts\/38927\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/media\/29204"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/media?parent=38927"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/categories?post=38927"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hr\/wp-json\/wp\/v2\/tags?post=38927"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}