{"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\/ro\/blog\/administrirovanie\/vysokaya-proizvoditelnost-i-nativnoe-partitsionirovanie-zabbix-s-podderzhkoj-timescaledb","title":{"rendered":"Performan\u021b\u0103 \u00eenalt\u0103 \u0219i parti\u021bionare nativ\u0103: Zabbix cu suport pentru TimescaleDB","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Zabbix este un sistem de monitorizare. Ca orice alt sistem, se confrunt\u0103 cu trei probleme principale ale tuturor sistemelor de monitorizare: colectarea \u0219i procesarea datelor, stocarea istoricului \u0219i cur\u0103\u021barea acestuia.<\/p>\n<p>Etapele de ob\u021binere, procesare \u0219i scriere a datelor necesit\u0103 timp. Pu\u021bin, dar pentru un sistem de mari dimensiuni, acest lucru poate duce la \u00eent\u00e2rzieri semnificative. Problema stoc\u0103rii este o chestiune de acces la date. Acestea sunt utilizate pentru rapoarte, verific\u0103ri \u0219i declan\u0219atoare. \u00cent\u00e2rzierile \u00een accesarea datelor afecteaz\u0103 de asemenea performan\u021ba. Pe m\u0103sur\u0103 ce baza de date cre\u0219te, datele \u00eenvechite trebuie \u0219terse. \u0218tergerea este o opera\u021biune costisitoare, care consum\u0103 \u0219i ea o parte din resurse.<\/p>\n<p><img decoding=\"async\" alt=\"Performan\u021b\u0103 \u00eenalt\u0103 \u0219i parti\u021bionare nativ\u0103: Zabbix cu suport pentru TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/9b7aa23705cd32b4d8d858ad78b181fd.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nProblemele \u00eent\u00e2rzierilor \u00een colectare \u0219i stocare \u00een Zabbix sunt rezolvate prin caching: mai multe tipuri de cache, cache \u00een baza de date. Pentru a rezolva a treia problem\u0103, cachingul nu este suficient, a\u0219a c\u0103 \u00een Zabbix a fost implementat TimescaleDB. Despre acest lucru va vorbi <strong>Andrei Gu\u0219\u021bin<\/strong> \u2014 inginer de suport tehnic <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/zabbix\/\">Zabbix SIA<\/a><\/noindex>. Andrei are peste 6 ani \u00een suportul Zabbix \u0219i se confrunt\u0103 direct cu problemele de performan\u021b\u0103.<\/p>\n<p>Cum func\u021bioneaz\u0103 TimescaleDB, ce performan\u021b\u0103 poate oferi \u00een compara\u021bie cu un PostgreSQL obi\u0219nuit? Ce rol joac\u0103 Zabbix pentru baza de date TimescaleDB? Cum se lanseaz\u0103 de la zero \u0219i cum se migreaz\u0103 de la PostgreSQL \u0219i ce configura\u021bie ofer\u0103 cele mai bune performan\u021be? Toate acestea sunt detaliate mai jos.<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=\"Reda\u021bi 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>Provoc\u0103rile performan\u021bei<\/h2>\n<p>\nFiecare sistem de monitorizare se confrunt\u0103 cu anumite provoc\u0103ri legate de performan\u021b\u0103. Voi vorbi despre trei dintre ele: colectarea \u0219i procesarea datelor, stocarea, cur\u0103\u021barea istoricului.<\/p>\n<p><strong>Colectarea \u0219i procesarea rapid\u0103 a datelor. <\/strong>Un sistem de monitorizare bun trebuie s\u0103 ob\u021bin\u0103 rapid toate datele \u0219i s\u0103 le proceseze conform expresiilor de declan\u0219are \u2014 dup\u0103 propriile criterii. Dup\u0103 procesare, sistemul trebuie s\u0103 salveze rapid aceste date \u00een baza de date pentru a fi utilizate ulterior.<\/p>\n<p><strong>Stocarea istoricului. <\/strong>Un sistem de monitorizare bun trebuie s\u0103 stocheze istoricul \u00een baza de date \u0219i s\u0103 ofere acces u\u0219or la metrici. Istoricul este necesar pentru a fi utilizat \u00een rapoarte, grafice, declan\u0219atoare, valori prag \u0219i elemente de date calculate pentru alerte.<\/p>\n<p><strong>Cur\u0103\u021barea istoricului. <\/strong>Uneori vine o zi c\u00e2nd nu mai ai nevoie de metrici. De ce ai nevoie de date acumulate acum 5 ani, o lun\u0103 sau dou\u0103: unele noduri au fost \u0219terse, unele gazde sau metrici nu mai sunt necesare deoarece sunt dep\u0103\u0219ite \u0219i nu mai sunt colectate. Un sistem bun de monitorizare ar trebui s\u0103 stocheze datele istorice \u0219i din c\u00e2nd \u00een c\u00e2nd s\u0103 le \u0219terg\u0103 pentru a preveni cre\u0219terea bazei de date.<\/p>\n<blockquote><p>Cur\u0103\u021barea datelor dep\u0103\u0219ite este o problem\u0103 urgent\u0103, care afecteaz\u0103 semnificativ performan\u021ba bazei de date.<\/p><\/blockquote>\n<p><\/p>\n<h2>Cache-ul \u00een Zabbix<\/h2>\n<p>\n\u00cen Zabbix, prima \u0219i a doua apelare sunt rezolvate prin cache. Pentru colectarea \u0219i procesarea datelor se utilizeaz\u0103 memoria RAM. Pentru stocare \u2014 istoricul din declan\u0219atori, grafice \u0219i elemente de date calculate. Pe partea bazei de date exist\u0103 un anumit caching pentru interog\u0103rile principale, de exemplu, graficele.<\/p>\n<p>Caching pe partea serverului Zabbix este:<\/p>\n<ul>\n<li>ConfigurationCache;<\/li>\n<li>ValueCache;<\/li>\n<li>HistoryCache;<\/li>\n<li>TrendsCache.<\/li>\n<\/ul>\n<p>\nS\u0103 le discut\u0103m \u00een detaliu.<\/p>\n<h3>ConfigurationCache<\/h3>\n<p>\nAcesta este cache-ul principal, \u00een care stoc\u0103m metricile, gazdele, elementele de date, declan\u0219atoarele \u2014 tot ceea ce este necesar pentru PreProcessing \u0219i pentru colectarea datelor.<\/p>\n<p><img decoding=\"async\" alt=\"Performan\u021b\u0103 \u00eenalt\u0103 \u0219i parti\u021bionare nativ\u0103: Zabbix cu suport pentru TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/122708198f6cd136fbd0420876c06e9c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nToate acestea sunt stocate \u00een ConfigurationCache, pentru a evita interog\u0103rile inutile \u00een baza de date. Dup\u0103 pornirea serverului, actualiz\u0103m acest cache, cre\u0103m \u0219i actualiz\u0103m periodic configura\u021biile.<\/p>\n<h3>Colectarea datelor<\/h3>\n<p>\nSchema este destul de mare, dar esen\u021bialul ei este <strong>colectorii<\/strong>. Acestea sunt diferite \"pollers\" \u2014 procese de colectare. Ele r\u0103spund la diferite tipuri de colectare: colecteaz\u0103 date prin SNMP, IPMI \u0219i transmit totul la PreProcessing.<\/p>\n<p><img decoding=\"async\" alt=\"Performan\u021b\u0103 \u00eenalt\u0103 \u0219i parti\u021bionare nativ\u0103: Zabbix cu suport pentru TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/deff5d9ff358f1b04b505d18c7770f21.jpg\" style=\"display:block;margin: 0 auto;\" \/><em>Colectorii sunt eviden\u021bia\u021bi cu o linie portocalie.<\/em><\/p>\n<p>\u00cen Zabbix exist\u0103 elemente de date agregate calculate, care sunt necesare pentru a agrega verific\u0103rile. Dac\u0103 le avem, prelu\u0103m datele pentru ele direct din ValueCache.<\/p>\n<h3>PreProcessing HistoryCache<\/h3>\n<p>\nTo\u021bi colectorii utilizeaz\u0103 ConfigurationCache pentru a primi sarcinile. Apoi, le transmit la PreProcessing.<\/p>\n<p><img decoding=\"async\" alt=\"Performan\u021b\u0103 \u00eenalt\u0103 \u0219i parti\u021bionare nativ\u0103: Zabbix cu suport pentru TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/116e25100ebdf9ed209a9b04fa6fa156.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPreProcessing folose\u0219te ConfigurationCache pentru a ob\u021bine pa\u0219ii PreProcessing. Acesta proceseaz\u0103 aceste date \u00een diverse moduri.<\/p>\n<p>Dup\u0103 procesarea datelor prin PreProcessing, le salv\u0103m \u00een HistoryCache pentru a fi procesate. Aici se \u00eencheie colectarea datelor \u0219i trecem la procesul principal \u00een Zabbix \u2014 <strong>history syncer<\/strong>, deoarece este o arhitectur\u0103 monolitic\u0103.<\/p>\n<p><em>Not\u0103: PreProcessing este o opera\u021biune destul de greoaie. \u00cencep\u00e2nd cu versiunea 4.2, a fost mutat pe proxy. Dac\u0103 ave\u021bi un Zabbix foarte mare, cu un num\u0103r mare de elemente de date \u0219i o frecven\u021b\u0103 mare de colectare, aceasta u\u0219ureaz\u0103 mult munca.<\/em><\/p>\n<h3>ValueCache, istoric &amp; tendin\u021be cache<\/h3>\n<p><\/p>\n<blockquote><p>History syncer \u2014 este procesul principal care proceseaz\u0103 atomic fiecare element de date, adic\u0103 fiecare valoare.<\/p><\/blockquote>\n<p>\nHistory syncer ia valorile din HistoryCache \u0219i verific\u0103 \u00een Configuration dac\u0103 exist\u0103 triggere pentru calcule. Dac\u0103 exist\u0103, le calculeaz\u0103.<\/p>\n<p>History syncer creeaz\u0103 un eveniment, o escaladare, pentru a genera alerte, dac\u0103 este necesar conform configura\u021biei, \u0219i \u00eenregistreaz\u0103. Dac\u0103 exist\u0103 triggere pentru procesare ulterioar\u0103, atunci aceast\u0103 valoare o re\u021bine \u00een ValueCache, pentru a nu apela la tabelul de istoric. Astfel, ValueCache se umple cu datele necesare pentru a calcula triggerele \u0219i elementele calculate.<\/p>\n<p>History syncer \u00eenregistreaz\u0103 toate datele \u00een baza de date, iar aceasta \u2014 pe disc. Procesul de procesare se \u00eencheie aici.<\/p>\n<p><img decoding=\"async\" alt=\"Performan\u021b\u0103 \u00eenalt\u0103 \u0219i parti\u021bionare nativ\u0103: Zabbix cu suport pentru TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/4d74195381fda7756b0250982f6896be.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Cache-ul \u00een baza de date<\/h3>\n<p>\nPe partea de baz\u0103 de date exist\u0103 diferite cache-uri, atunci c\u00e2nd dori\u021bi s\u0103 vizualiza\u021bi grafice sau rapoarte de evenimente:<\/p>\n<ul>\n<li><code>Innodb_buffer_pool<\/code> pe partea de MySQL;<\/li>\n<li><code>shared_buffers<\/code> pe partea de PostgreSQL;<\/li>\n<li><code>effective_cache_size<\/code> pe partea de Oracle;<\/li>\n<li><code>shared_pool<\/code> pe partea de DB2.<\/li>\n<\/ul>\n<p>\nExist\u0103 \u0219i multe alte cache-uri, dar acestea sunt principalele pentru toate bazele de date. Ele permit men\u021binerea \u00een memorie a datelor care sunt frecvent necesare pentru interog\u0103ri. Au propriile tehnologii pentru aceasta.<\/p>\n<h3>Performan\u021ba bazei de date este critic\u0103<\/h3>\n<p>\nServerul Zabbix colecteaz\u0103 constant date \u0219i le \u00eenregistreaz\u0103. La repornire, de asemenea, cite\u0219te din istoric pentru a umple ValueCache. Scripturile \u0219i rapoartele folosesc <strong>Zabbix API<\/strong>, care este construit pe baza interfe\u021bei web. Zabbix API interogheaz\u0103 baza de date \u0219i ob\u021bine datele necesare pentru grafice, rapoarte, liste de evenimente \u0219i ultimele probleme.<\/p>\n<p><img decoding=\"async\" alt=\"Performan\u021b\u0103 \u00eenalt\u0103 \u0219i parti\u021bionare nativ\u0103: Zabbix cu suport pentru TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/dd0efdc4e57c1197d448ce453012091e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPentru vizualizare \u2014 <strong>Grafana<\/strong>. Printre utilizatorii no\u0219tri, aceasta este o solu\u021bie popular\u0103. Ea poate trimite direct cereri prin Zabbix API at\u00e2t c\u0103tre baza de date, c\u00e2t \u0219i creeaz\u0103 o anumit\u0103 concuren\u021b\u0103 pentru ob\u021binerea datelor. De aceea este nevoie de o configurare mai fin\u0103 \u0219i bun\u0103 a bazei de date pentru a se potrivi cu livrarea rapid\u0103 a rezultatelor \u0219i testarea.<\/p>\n<h2>Housekeeper<\/h2>\n<p>\nA treia provocare de performan\u021b\u0103 \u00een Zabbix este cur\u0103\u021barea istoriei prin Housekeeper. Acesta respect\u0103 toate set\u0103rile \u2014 \u00een elementele de date este specificat c\u00e2t timp s\u0103 se p\u0103streze dinamica schimb\u0103rilor (tendin\u021belor) \u00een zile.<\/p>\n<p>TrendsCache \u00eel calcul\u0103m pe loc. C\u00e2nd primim date, le agreg\u0103m pe o or\u0103 \u0219i le \u00eenregistr\u0103m \u00een tabele pentru dinamica schimb\u0103rilor tendin\u021belor.<\/p>\n<p>Housekeeper se lanseaz\u0103 \u0219i \u0219terge informa\u021biile din baza de date cu ajutorul unor \u201eselecturi\u201d obi\u0219nuite. Acest lucru nu este \u00eentotdeauna eficient, ceea ce se poate observa din graficele de performan\u021b\u0103 ale proceselor interne.<\/p>\n<p><img decoding=\"async\" alt=\"Performan\u021b\u0103 \u00eenalt\u0103 \u0219i parti\u021bionare nativ\u0103: Zabbix cu suport pentru TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/a3af1badd14b1092bc26e0b53845ae04.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nGraficul ro\u0219u arat\u0103 c\u0103 History syncer este constant ocupat. Graficul portocalie de sus reprezint\u0103 Housekeeper, care se lanseaz\u0103 constant. Acesta a\u0219teapt\u0103 de la baza de date s\u0103 \u0219tearg\u0103 toate r\u00e2ndurile pe care le-a specificat.<\/p>\n<p>C\u00e2nd ar trebui s\u0103 dezactiva\u021bi Housekeeper? De exemplu, dac\u0103 exist\u0103 un \u201eItem ID\u201d \u0219i trebuie s\u0103 \u0219terge\u021bi ultimele 5.000 de r\u00e2nduri \u00eentr-o anumit\u0103 perioad\u0103. Desigur, acest lucru se realizeaz\u0103 prin indec\u0219i. Dar, de obicei, setul de date este foarte mare \u0219i baza de date cite\u0219te totu\u0219i de pe disc \u0219i \u00eel aduce \u00een cache. Aceasta este \u00eentotdeauna o opera\u021biune foarte costisitoare pentru baza de date \u0219i, \u00een func\u021bie de dimensiunile bazei, poate duce la probleme de performan\u021b\u0103.<\/p>\n<p><img decoding=\"async\" alt=\"Performan\u021b\u0103 \u00eenalt\u0103 \u0219i parti\u021bionare nativ\u0103: Zabbix cu suport pentru TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/0778318b539fbe33318e8a7310f8a89b.jpg\" style=\"display:block;margin: 0 auto;\" \/> <\/p>\n<p>Housekeeper poate fi pur \u0219i simplu dezactivat. \u00cen interfa\u021ba web, exist\u0103 o setare \u00een \u201eAdministration general\u201d pentru Housekeeper. Dezactiv\u0103m Housekeeping-ul intern pentru istoricul tendin\u021belor interne \u0219i acesta nu mai gestioneaz\u0103 acest lucru.<\/p>\n<p>Housekeeper a fost dezactivat, graficele s-au aliniat \u2014 ce probleme ar putea ap\u0103rea \u00een acest caz \u0219i ce ar putea ajuta la solu\u021bionarea celui de-al treilea apel de performan\u021b\u0103?<\/p>\n<h2>Partitioning \u2014 sec\u021bionare sau partajare<\/h2>\n<p>\nDe obicei, partajarea este configurat\u0103 \u00een diferite moduri pe fiecare baz\u0103 de date rela\u021bional\u0103 pe care am enumerat-o. Fiecare are propria tehnologie, dar sunt asem\u0103n\u0103toare, \u00een general. Crearea unei noi parti\u021bii duce adesea la anumite probleme.<\/p>\n<p>De obicei, parti\u021biile se configureaz\u0103 \u00een func\u021bie de \u201esetup\u201d \u2014 cantitatea de date create pe parcursul unei zile. \u00cen general, partitioning-ul este stabilit pe o zi, acesta fiind minimul. Pentru tendin\u021be, o nou\u0103 parti\u021bie se face pentru 1 lun\u0103.<\/p>\n<p>Valorile pot varia \u00een cazul unui \u201esetup\u201d foarte mare. Dac\u0103 un \u201esetup\u201d mic este de p\u00e2n\u0103 la 5.000 nvps (noi valori pe secund\u0103), unul mediu este \u00eentre 5.000 \u0219i 25.000, iar unul mare este peste 25.000 nvps. Acestea sunt instal\u0103ri mari \u0219i foarte mari, care necesit\u0103 o configurare atent\u0103 a bazei de date.<\/p>\n<p>\u00cen instala\u021bii foarte mari, o por\u021biune de o zi poate s\u0103 nu fie optim\u0103. Am v\u0103zut pe MySQL parti\u021bii de 40 GB sau mai mult pe zi. Aceasta este o cantitate foarte mare de date, ceea ce poate duce la probleme, \u0219i trebuie redus\u0103.<\/p>\n<h3>Ce beneficii ofer\u0103 Partitioning?<\/h3>\n<p>\n<strong>Sec\u021bionarea tabelelor<\/strong>. De obicei, acestea sunt fi\u0219iere separate pe disc. Planul de interog\u0103ri selecteaz\u0103 mai optim o parti\u021bie. De obicei, parti\u021bionarea este utilizat\u0103 pe intervale \u2014 acest lucru este, de asemenea, adev\u0103rat pentru Zabbix. Utiliz\u0103m acolo \u201etimestamp\u201d \u2014 timpul de la \u00eenceputul epocii. La noi este vorba de numere obi\u0219nuite. Define\u0219ti \u00eenceputul \u0219i sf\u00e2r\u0219itul zilei \u2014 aceasta este o parti\u021bie.<\/p>\n<p><strong>\u0218tergere rapid\u0103<\/strong> \u2014 <code>DELETE<\/code>. Se selecteaz\u0103 un fi\u0219ier\/subtabel, nu un set de r\u00e2nduri pentru \u0219tergere.<\/p>\n<p><strong>Accelerarea semnificativ\u0103 a acces\u0103rii datelor<\/strong> <code>SELECT<\/code> \u2014 utilizeaz\u0103 o sau mai multe parti\u021bii, nu \u00eentreaga tabel\u0103. Dac\u0103 solici\u021bi date de acum dou\u0103 zile, acestea sunt selectate din baza de date mai repede, pentru c\u0103 este nevoie s\u0103 \u00eencarci \u00een memorie \u0219i s\u0103 furnizezi doar un singur fi\u0219ier, nu o tabel\u0103 mare.<\/p>\n<p>Adesea, multe baze de date accelereaz\u0103 de asemenea <code>INSERT<\/code> \u2014 inser\u021biile \u00een tabelul copil.<\/p>\n<h2>TimescaleDB<\/h2>\n<p>\nPentru versiunea 4.2, am observat TimescaleDB. Aceast\u0103 extensie pentru PostgreSQL are o interfa\u021b\u0103 nativ\u0103. Extensia lucreaz\u0103 eficient cu datele de tip serie temporal\u0103, f\u0103r\u0103 a pierde avantajele bazelor de date rela\u021bionale. TimescaleDB \u00ee\u0219i partitioneaz\u0103 automat datele.<\/p>\n<p>\u00cen TimescaleDB exist\u0103 conceptul de <strong>hipertabel<\/strong> (hypertable), pe care \u00eel creezi. Aici se afl\u0103 <strong>chunk-uri<\/strong> \u2014 parti\u021bii. Chunk-urile sunt fragmente gestionate automat ale hipertabelei, care nu influen\u021beaz\u0103 alte fragmente. Fiecare chunk are propria interval de timp.<\/p>\n<p><img decoding=\"async\" alt=\"Performan\u021b\u0103 \u00eenalt\u0103 \u0219i parti\u021bionare nativ\u0103: Zabbix cu suport pentru 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 func\u021bioneaz\u0103 cu adev\u0103rat eficient. Produc\u0103torii extensiei sus\u021bin c\u0103 folosesc un algoritm de procesare a interog\u0103rilor mai corect, \u00een special pentru &lt;code&gt;inserts&lt;\/code&gt;. Pe m\u0103sur\u0103 ce dimensiunile seturilor de date pentru inserare cresc, algoritmul men\u021bine o performan\u021b\u0103 constant\u0103.<\/p>\n<p><img decoding=\"async\" alt=\"Performan\u021b\u0103 \u00eenalt\u0103 \u0219i parti\u021bionare nativ\u0103: Zabbix cu suport pentru TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/52f042018180ffd2cb6a2cf4a3af603e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDup\u0103 200 de milioane de r\u00e2nduri, PostgreSQL de obicei \u00eencepe s\u0103 decaleze semnificativ \u0219i \u00ee\u0219i pierde performan\u021ba p\u00e2n\u0103 la 0. TimescaleDB permite inser\u021bii eficiente de \u201einserts\u201d indiferent de volumul de date.<\/p>\n<h3>Instalare<\/h3>\n<p>\nInstalarea TimescaleDB este destul de simpl\u0103 pentru orice pachet. \u00cen <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.timescale.com\/v1.3\/getting-started\">documentation<\/a><\/noindex> este descris detaliat \u2014 depinde de pachetele oficiale PostgreSQL. De asemenea, TimescaleDB poate fi compilat \u0219i construit manual.<\/p>\n<p>Pentru baza de date Zabbix, pur \u0219i simplu activ\u0103m extensia:<\/p>\n<pre><code class=\"sql\">echo \"CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;\" | sudo -u postgres psql zabbix<\/code><\/pre>\n<p>\nActivezi <code>extensia<\/code> \u0219i o creezi pentru baza de date Zabbix. Ultimul pas este crearea hipertabelei.<\/p>\n<h3>Migrarea tabelilor de istoric \u00een TimescaleDB<\/h3>\n<p>\nPentru aceasta exist\u0103 o func\u021bie special\u0103 <code>create_hypertable<\/code>:<\/p>\n<pre><code class=\"sql\">SELECT create_hypertable(\u2018history\u2019, \u2018clock\u2019, chunk_time_interval =&gt; 86400, migrate_data =&gt; true);\nSELECT create_hypertable(\u2018history_unit\u2019, \u2018clock\u2019, chunk_time_interval =&gt; 86400, migrate_data =&gt; true);\nSELECT create_hypertable(\u2018history_log\u2019, \u2018clock\u2019, chunk_time_interval =&gt; 86400, migrate_data =&gt; true);\nSELECT create_hypertable(\u2018history_text\u2019, \u2018clock\u2019, chunk_time_interval =&gt; 86400, migrate_data =&gt; true);\nSELECT create_hypertable(\u2018history_str\u2019, \u2018clock\u2019, chunk_time_interval =&gt; 86400, migrate_data =&gt; true);\nSELECT create_hypertable(\u2018trends\u2019, \u2018clock\u2019, chunk_time_interval =&gt; 86400, migrate_data =&gt; true);\nSELECT create_hypertable(\u2018trends_unit\u2019, \u2018clock\u2019, chunk_time_interval =&gt; 86400, migrate_data =&gt; true);\nUPDATE config SET db_extension='timescaledb', hk_history_global=1, hk_trends_global=1<\/code><\/pre>\n<p>\nFunc\u021bia are trei parametri. Primul \u2014<strong> tabelul din baza de date<\/strong>, pentru care trebuie creat\u0103 o hipertabel\u0103. Al doilea \u2014 <strong>c\u00e2mpul<\/strong>, pe baza c\u0103ruia trebuie s\u0103 fie creat <code>chunk_time_interval<\/code> \u2014 intervalul de chunk-uri pentru parti\u021bii, care trebuie utilizat. \u00cen cazul meu, intervalul este de o zi \u2014 86 400.<\/p>\n<p>Al treilea parametru \u2014 <code><strong>migra\u021bi_date<\/strong><\/code>. Dac\u0103 este setat <code>true<\/code>, toate datele curente sunt mutate \u00een chunk-urile create anterior. Eu am folosit <code>migra\u021bi_date<\/code>. Am avut aproximativ 1 TB, ceea ce a durat mai mult de o or\u0103. Chiar \u0219i \u00een unele cazuri, \u00een timpul test\u0103rii, am \u0219ters date istorice inutile de tip simbolic pentru a nu le muta.<\/p>\n<p>Ultimul pas \u2014\u00a0<code><strong>UPDATE<\/strong><\/code>: \u00een <code>db_extension<\/code> set\u0103m <code>timescaledb<\/code>, pentru ca baza de date s\u0103 \u00een\u021beleag\u0103 c\u0103 exist\u0103 aceast\u0103 extensie. Zabbix o activeaz\u0103 \u0219i folose\u0219te corect sintaxa \u0219i interog\u0103rile pentru baza de date \u2014 acele func\u021bii necesare pentru TimescaleDB.<\/p>\n<h2>Configurarea hardware-ului<\/h2>\n<p>\nAm folosit dou\u0103 servere. Primul \u2014 <strong>ma\u0219in\u0103 VMware<\/strong>. Este destul de mic\u0103: 20 procesoare Intel\u00ae Xeon\u00ae CPU E5-2630 v 4 @ 2.20GHz, 16 GB de RAM \u0219i un SSD de 200 GB.<\/p>\n<p>Am instalat pe ea PostgreSQL 10.8 cu OS Debian 10.8-1.pgdg90+1 \u0219i sistem de fi\u0219iere xfs. Am configurat totul minimal pentru a utiliza exact aceast\u0103 baz\u0103 de date, cu excep\u021bia celor pe care le va folosi Zabbix.<\/p>\n<p>Pe aceea\u0219i ma\u0219in\u0103 rula serverul Zabbix, PostgreSQL \u0219i <strong>agen\u021bii de \u00eenc\u0103rcare<\/strong>. Am avut 50 de agen\u021bi activi care foloseau <code>LoadableModule<\/code>, pentru a genera foarte rapid diverse rezultate: numere, \u0219iruri. Am umplut baza de date cu un volum mare de date.<\/p>\n<p>Ini\u021bial, configura\u021bia con\u021binea <strong>5 000 de elemente<\/strong> de date pentru fiecare host. Aproape fiecare element con\u021binea un trigger, pentru a fi asem\u0103n\u0103tor cu instala\u021biile reale. \u00cen unele cazuri, erau mai multe de un trigger. Pentru un nod de re\u021bea, erau <strong>3 000-7 000 de triggers<\/strong>.<\/p>\n<p>Intervalul de actualizare a elementelor de date \u2014 <strong>4-7 secunde<\/strong>. Am reglat sarcina folosind nu doar 50 de agen\u021bi, ci am ad\u0103ugat \u0219i altele. De asemenea, cu ajutorul elementelor de date am reglat dinamic sarcina \u0219i am redus intervalul de actualizare la 4 secunde.<\/p>\n<h3>PostgreSQL. 35 000 nvps<\/h3>\n<p>\nPrima rulare pe acest hardware a fost cu PostgreSQL curat \u2014 35 de mii de valori pe secund\u0103. A\u0219a cum se vede, inser\u021bia de date dureaz\u0103 frac\u021biuni de secund\u0103 \u2014 totul este bine \u0219i rapid. Singurul inconvenient este c\u0103 discul SSD de 200 GB se umple rapid.<\/p>\n<p><img decoding=\"async\" alt=\"Performan\u021b\u0103 \u00eenalt\u0103 \u0219i parti\u021bionare nativ\u0103: Zabbix cu suport pentru TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/e84b2eb0f6fbbd902c5feab367c750ee.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAcesta este dashboard-ul standard de performan\u021b\u0103 Zabbix \u2014 servere.<\/p>\n<p><img decoding=\"async\" alt=\"Performan\u021b\u0103 \u00eenalt\u0103 \u0219i parti\u021bionare nativ\u0103: Zabbix cu suport pentru TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/c3afe021acf8e272813b8d8c2f82e762.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPrimul grafic albastru - num\u0103rul de valori pe secund\u0103. Al doilea grafic din dreapta - \u00eenc\u0103rcarea proceselor de colectare. Al treilea - \u00eenc\u0103rcarea proceselor interne de colectare: history syncers \u0219i Housekeeper, care a fost activ o perioad\u0103 suficient de lung\u0103.<\/p>\n<p>Al patrulea grafic arat\u0103 utilizarea HistoryCache. Aceasta este un fel de buffer \u00eenainte de inser\u021bia \u00een baza de date. Al cincilea grafic verde arat\u0103 utilizarea ValueCache, adic\u0103 c\u00e2te hituri pentru ValueCache pentru declan\u0219atoare - sunt c\u00e2teva mii de valori pe secund\u0103.<\/p>\n<h3>PostgreSQL. 50 000 nvps<\/h3>\n<p>\nApoi am crescut sarcina la 50 de mii de valori pe secund\u0103 pe acela\u0219i hardware.<\/p>\n<p><img decoding=\"async\" alt=\"Performan\u021b\u0103 \u00eenalt\u0103 \u0219i parti\u021bionare nativ\u0103: Zabbix cu suport pentru TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/8f10944486d5502b57d36059382d551b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLa \u00eenc\u0103rcarea cu Housekeeper, inser\u021bia a 10 mii de valori s-a realizat \u00een 2-3 secunde.<\/p>\n<p><img decoding=\"async\" alt=\"Performan\u021b\u0103 \u00eenalt\u0103 \u0219i parti\u021bionare nativ\u0103: Zabbix cu suport pentru TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/5228c1735f0ee2da7f827093f3c7b1f9.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<em>Housekeeper \u00eencepe deja s\u0103 interfereze cu activitatea.<\/em><\/p>\n<p>Pe al treilea grafic se vede c\u0103, \u00een general, \u00eenc\u0103rcarea trapper-ilor \u0219i history syncers-urilor este \u00eenc\u0103 la nivelul de 60%. Pe al patrulea grafic, HistoryCache \u00eencepe s\u0103 se umple destul de activ \u00een timpul func\u021bion\u0103rii Housekeeper-ului. S-a umplut la 20% \u2014 aceasta \u00eenseamn\u0103 aproximativ 0,5 GB.<\/p>\n<h3>PostgreSQL. 80 000 nvps<\/h3>\n<p>\nApoi am crescut sarcina la 80 de mii de valori pe secund\u0103. Acesta este aproximativ 400 de mii de elemente de date \u0219i 280 de mii de declan\u0219atoare.<\/p>\n<p><img decoding=\"async\" alt=\"Performan\u021b\u0103 \u00eenalt\u0103 \u0219i parti\u021bionare nativ\u0103: Zabbix cu suport pentru TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/f6c6b0d6793f96523f7406e68f98c608.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<em>Inser\u021bia cu treizeci de history syncers este deja destul de ridicat\u0103.<\/em><\/p>\n<p>De asemenea, am crescut diferite parametrii: history syncers, cache-uri.<\/p>\n<p><img decoding=\"async\" alt=\"Performan\u021b\u0103 \u00eenalt\u0103 \u0219i parti\u021bionare nativ\u0103: Zabbix cu suport pentru TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/6ca7edd76aea6fdec00a61a0a6dc34e5.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPe hardware-ul meu, \u00eenc\u0103rcarea history syncers a crescut la maxim. HistoryCache s-a umplut rapid cu date \u2014 \u00een buffer s-au acumulat date pentru procesare.<\/p>\n<p>Toat\u0103 aceast\u0103 perioad\u0103, am observat utilizarea procesorului, memoriei RAM \u0219i altor parametri ai sistemului, \u0219i am descoperit c\u0103 utilizarea discurilor a fost maxim\u0103.<\/p>\n<p><img decoding=\"async\" alt=\"Performan\u021b\u0103 \u00eenalt\u0103 \u0219i parti\u021bionare nativ\u0103: Zabbix cu suport pentru TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/e964a000156b561accd23b4e1644f4a8.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAm reu\u0219it s\u0103 folosesc <strong>capacit\u0103\u021bile maxime ale discului<\/strong> pe acest hardware \u0219i pe aceast\u0103 ma\u0219in\u0103 virtual\u0103. Cu o astfel de intensitate, PostgreSQL a \u00eenceput s\u0103 reseteze datele destul de activ, iar discul nu mai reu\u0219ea s\u0103 lucreze eficient at\u00e2t la scriere, c\u00e2t \u0219i la citire.<\/p>\n<h3>Al doilea server<\/h3>\n<p>\nAm ales un alt server, care avea deja 48 de procesoare \u0219i 128 GB de memorie RAM. L-am optimizat \u2013 am instalat 60 history syncer \u0219i am ob\u021binut o vitez\u0103 de operare acceptabil\u0103.<\/p>\n<p><img decoding=\"async\" alt=\"Performan\u021b\u0103 \u00eenalt\u0103 \u0219i parti\u021bionare nativ\u0103: Zabbix cu suport pentru TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/591fc759b336d5fb2091460036b136bf.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDe fapt, aceasta este deja limita performan\u021bei, unde este necesar s\u0103 se ia m\u0103suri.<\/p>\n<h3>TimescaleDB. 80.000 nvps<\/h3>\n<p>\nPrincipala mea sarcin\u0103 a fost s\u0103 verific capacit\u0103\u021bile TimescaleDB sub \u00eenc\u0103rcarea Zabbix. 80.000 de valori pe secund\u0103 \u2013 este mult, frecven\u021ba de colectare a metricalor (cu excep\u021bia Yandex, desigur) \u0219i un \u201esetup\u201d destul de mare.<\/p>\n<p><img decoding=\"async\" alt=\"Performan\u021b\u0103 \u00eenalt\u0103 \u0219i parti\u021bionare nativ\u0103: Zabbix cu suport pentru TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/aa569847e7bc31baab91661db1ee78a2.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPe fiecare grafic exist\u0103 o sc\u0103dere \u2013 aceasta este \u00een special migrarea datelor. Dup\u0103 sc\u0103derile de pe serverul Zabbix, profilul de \u00eenc\u0103rcare al history syncer s-a schimbat semnificativ \u2013 a sc\u0103zut de trei ori.<\/p>\n<blockquote><p>TimescaleDB permite inserarea datelor aproape de 3 ori mai rapid \u0219i utilizeaz\u0103 mai pu\u021bin HistoryCache.<\/p><\/blockquote>\n<p>\nPrin urmare, datele vor fi livrate la timp.<\/p>\n<h3>TimescaleDB. 120.000 nvps<\/h3>\n<p>\nApoi, am crescut num\u0103rul de elemente de date la 500.000. Principala sarcin\u0103 a fost s\u0103 verific capacit\u0103\u021bile TimescaleDB \u2013 am ob\u021binut o valoare estimat\u0103 de 125.000 de valori pe secund\u0103.<\/p>\n<p><img decoding=\"async\" alt=\"Performan\u021b\u0103 \u00eenalt\u0103 \u0219i parti\u021bionare nativ\u0103: Zabbix cu suport pentru TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/4770ca4030e1c086f2fd9305a12496bb.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAcesta este un \u201esetup\u201d func\u021bional, care poate rula mult timp. Dar, deoarece discul meu era de doar 1,5 TB, l-am umplut \u00een c\u00e2teva zile.<\/p>\n<p><img decoding=\"async\" alt=\"Performan\u021b\u0103 \u00eenalt\u0103 \u0219i parti\u021bionare nativ\u0103: Zabbix cu suport pentru TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/1ad521b909a22a7db81a9ed802d348e7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCel mai important lucru este c\u0103, \u00een acela\u0219i timp, erau create noi parti\u021bii TimescaleDB.<\/p>\n<p>Pentru performan\u021b\u0103, acest aspect este complet imperceptibil. Atunci c\u00e2nd se creeaz\u0103 parti\u021bii \u00een MySQL, de exemplu, totul este diferit. De obicei, acest lucru se \u00eent\u00e2mpl\u0103 noaptea, deoarece blocheaz\u0103 inser\u021bia general\u0103, lucrarea cu tabelele \u0219i poate provoca degradarea serviciului. \u00cen cazul TimescaleDB, acest lucru nu se \u00eent\u00e2mpl\u0103.<\/p>\n<p>Pentru un exemplu, voi ar\u0103ta un grafic dintre cele multe \u00een comunitate. \u00cen imagine, TimescaleDB este activat, datorit\u0103 c\u0103ruia \u00eenc\u0103rc\u0103tura de utilizare io.weight pe procesor a sc\u0103zut. Utilizarea elementelor proceselor interne a sc\u0103zut, de asemenea. \u0218i aceasta este o ma\u0219in\u0103 virtual\u0103 obi\u0219nuit\u0103 pe discuri HDD, nu SSD.<\/p>\n<p><img decoding=\"async\" alt=\"Performan\u021b\u0103 \u00eenalt\u0103 \u0219i parti\u021bionare nativ\u0103: Zabbix cu suport pentru TimescaleDB\" src=\"\/wp-content\/uploads\/2019\/10\/bea0cd0f1448e1d1b3a5f979d51ce61c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Conclusions<\/h2>\n<p>\n<strong>TimescaleDB este o solu\u021bie bun\u0103 pentru \u201esetup\u201d-uri mici<\/strong>, care se confrunt\u0103 cu limitele performan\u021bei discului. Aceasta va permite s\u0103 continua\u021bi s\u0103 lucra\u021bi bine p\u00e2n\u0103 la migrarea Bazei de Date pe hardware mai rapid.<\/p>\n<p>TimescaleDB este u\u0219or de configurat, ofer\u0103 un adev\u0103rat c\u00e2\u0219tig de performan\u021b\u0103, func\u021bioneaz\u0103 bine cu Zabbix \u0219i <strong>are avantajele fa\u021b\u0103 de PostgreSQL<\/strong>.<\/p>\n<p>Dac\u0103 folosi\u021bi PostgreSQL \u0219i nu pl\u0103nui\u021bi s\u0103 \u00eel schimba\u021bi, v\u0103 recomand <strong>s\u0103 folosi\u021bi PostgreSQL cu extensia TimescaleDB \u00eempreun\u0103 cu Zabbix<\/strong>. Aceast\u0103 solu\u021bie func\u021bioneaz\u0103 eficient pentru \u201esetup\u201d-uri medii.<\/p>\n<blockquote>\n<p>C\u00e2nd spunem \u201eperforman\u021b\u0103 ridicat\u0103\u201d \u2013 ne referim la <noindex><a rel=\"nofollow\" href=\"https:\/\/www.highload.ru\/moscow\/2019\">HighLoad++<\/a><\/noindex>. A\u0219tepta\u021bi s\u0103 descoperi\u021bi tehnologiile \u0219i practicile care permit serviciilor s\u0103 deservesc\u0103 milioane de utilizatori nu va dura mult. Lista <noindex><a rel=\"nofollow\" href=\"https:\/\/www.highload.ru\/moscow\/2019\/abstracts\">rapoartelor<\/a><\/noindex> pentru 7 \u0219i 8 noiembrie este deja realizat\u0103, iar <noindex><a rel=\"nofollow\" href=\"https:\/\/www.highload.ru\/moscow\/2019\/meetups\">mitapurile<\/a><\/noindex> \u00eenc\u0103 pot fi propuse.<\/p>\n<p>Aboneaz\u0103-te la <noindex><a rel=\"nofollow\" href=\"http:\/\/eepurl.com\/VYVaf\">newsletter<\/a><\/noindex> \u0219i <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/HighLoadChannel\">telegram<\/a><\/noindex>, \u00een care dezv\u0103luim lucrurile interesante ale conferin\u021bei viitoare \u0219i afla\u021bi cum s\u0103 ob\u021bine\u021bi maximum de beneficii.<\/p>\n<\/blockquote>\n<p>Sursa: <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\/ro\/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=\"ro_RO\" \/>\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\/ro\/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\udd47Performan\u021b\u0103 ridicat\u0103 \u0219i parti\u021bionare nativ\u0103: Zabbix cu suport pentru TimescaleDB | ProHoster","description":"Zabbix este un sistem de monitorizare.","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/vysokaya-proizvoditelnost-i-nativnoe-partitsionirovanie-zabbix-s-podderzhkoj-timescaledb","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"ro_RO","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\/ro\/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\/ro\/wp-json\/wp\/v2\/posts\/38927","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=38927"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/38927\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media\/29204"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=38927"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=38927"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=38927"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}