Augsta veiktspēja un vietējā sadalÄ«Å”ana: Zabbix ar TimescaleDB atbalstu

Zabbix ir uzraudzÄ«bas sistēma. Tāpat kā jebkura cita sistēma, tai ir trÄ«s galvenās visu uzraudzÄ«bas sistēmu problēmas: datu vākÅ”ana un apstrāde, vēstures saglabāŔana un tÄ«rÄ«Å”ana.

Datu saņemÅ”anas, apstrādes un ierakstÄ«Å”anas posmi prasa laiku. Nav daudz, taču lielai sistēmai tas var izraisÄ«t lielu kavÄ“Å”anos. Krātuves problēma ir datu piekļuves problēma. Tos izmanto atskaitēm, pārbaudēm un aktivizētājiem. Datu piekļuves kavÄ“Å”anās arÄ« ietekmē veiktspēju. Kad datu bāzes attÄ«stās, nebÅ«tiski dati ir jādzÄ“Å”. NoņemÅ”ana ir sarežģīta darbÄ«ba, kas arÄ« patērē dažus resursus.

Augsta veiktspēja un vietējā sadalÄ«Å”ana: Zabbix ar TimescaleDB atbalstu

Aizkaves problēmas savākÅ”anas un uzglabāŔanas laikā Zabbix tiek atrisinātas ar keÅ”atmiņu: vairāku veidu keÅ”atmiņas, keÅ”atmiņa datu bāzē. Lai atrisinātu treÅ”o problēmu, keÅ”atmiņa nav piemērota, tāpēc Zabbix izmantoja TimescaleDB. ViņŔ jums par to pastāstÄ«s Andrejs GuŔčins - tehniskā atbalsta inženieris Zabbix SIA. Andrejs atbalsta Zabbix vairāk nekā 6 gadus, un viņam ir tieÅ”a pieredze ar sniegumu.

Kā darbojas TimescaleDB, kādu veiktspēju tas var nodroÅ”ināt salÄ«dzinājumā ar parasto PostgreSQL? Kādu lomu Zabbix spēlē TimescaleDB datubāzē? Kā sākt no nulles un kā migrēt no PostgreSQL un kurai konfigurācijai ir labāka veiktspēja? Par to visu zem griezuma.

Produktivitātes izaicinājumi

Katra uzraudzÄ«bas sistēma saskaras ar Ä«paŔām veiktspējas problēmām. Es runāŔu par trim no tiem: datu vākÅ”anu un apstrādi, glabāŔanu un vēstures notÄ«rÄ«Å”anu.

Ātra datu vākÅ”ana un apstrāde. Labai uzraudzÄ«bas sistēmai ātri jāsaņem visi dati un jāapstrādā tie atbilstoÅ”i trigera izteiksmēm ā€“ atbilstoÅ”i tās kritērijiem. Pēc apstrādes sistēmai Å”ie dati arÄ« ātri jāsaglabā datu bāzē vēlākai lietoÅ”anai.

Vēstures glabāŔana. Labai uzraudzÄ«bas sistēmai vēsture jāsaglabā datu bāzē un jānodroÅ”ina viegla piekļuve metrikām. Vēsture ir nepiecieÅ”ama, lai to izmantotu pārskatos, diagrammās, aktivizētājos, sliekŔņos un aprēķinātajos brÄ«dinājumu datu vienumos.

Vēstures dzÄ“Å”ana. Dažreiz pienāk diena, kad nav nepiecieÅ”ams uzglabāt rādÄ«tājus. Kāpēc jums ir nepiecieÅ”ami dati, kas apkopoti pirms 5 gadiem, mēnesi vai diviem: daži mezgli ir izdzēsti, daži saimniekdatori vai metrika vairs nav nepiecieÅ”ami, jo tie ir novecojuÅ”i un vairs netiek apkopoti. Labai uzraudzÄ«bas sistēmai vajadzētu saglabāt vēsturiskos datus un laiku pa laikam tos dzēst, lai datubāze neaug.

NovecojuÅ”u datu tÄ«rÄ«Å”ana ir kritiska problēma, kas lielā mērā ietekmē datu bāzes veiktspēju.

KeÅ”atmiņa Zabbix

Programmā Zabbix pirmais un otrais zvans tiek atrisināts, izmantojot keÅ”atmiņu. RAM tiek izmantota datu vākÅ”anai un apstrādei. UzglabāŔanai - vēsture trigeros, grafikos un aprēķinātajos datu elementos. Datubāzes pusē ir keÅ”atmiņa pamata atlasēm, piemēram, grafikiem.

KeÅ”atmiņa paŔā Zabbix servera pusē ir:

  • Konfigurācijas keÅ”atmiņa;
  • ValueCache;
  • HistoryCache;
  • TrendsCache.

Apsveriet tos sīkāk.

Konfigurācijas keÅ”atmiņa

Å Ä« ir galvenā keÅ”atmiņa, kurā mēs glabājam metriku, saimniekdatorus, datu vienumus, trigerus ā€” visu, kas nepiecieÅ”ams pirmapstrādei un datu apkopoÅ”anai.

Augsta veiktspēja un vietējā sadalÄ«Å”ana: Zabbix ar TimescaleDB atbalstu

Tas viss tiek saglabāts ConfigurationCache, lai datu bāzē neradÄ«tu nevajadzÄ«gus vaicājumus. Pēc servera palaiÅ”anas mēs atjauninām Å”o keÅ”atmiņu, izveidojam un periodiski atjauninām konfigurācijas.

Datu vākŔana

Diagramma ir diezgan liela, bet galvenais tajā ir kolekcionāri. Tie ir dažādi ā€œpolleriā€ ā€“ montāžas procesi. Viņi ir atbildÄ«gi par dažāda veida montāžu: vāc datus, izmantojot SNMP, IPMI, un pārsÅ«ta to visu uz PreProcessing.

Augsta veiktspēja un vietējā sadalÄ«Å”ana: Zabbix ar TimescaleDB atbalstuKolektori ir iezÄ«mēti oranžā krāsā.

Zabbix ir aprēķinājis apkopojuma vienumus, kas nepiecieÅ”ami, lai apkopotu pārbaudes. Ja mums tie ir, mēs iegÅ«stam to datus tieÅ”i no ValueCache.

Pirmsapstrādes vēstures keÅ”atmiņa

Visi kolekcionāri darbu saņemÅ”anai izmanto ConfigurationCache. Pēc tam viņi tos pārsÅ«ta uz PreProcessing.

Augsta veiktspēja un vietējā sadalÄ«Å”ana: Zabbix ar TimescaleDB atbalstu

PriekÅ”apstrāde izmanto ConfigurationCache, lai saņemtu priekÅ”apstrādes darbÄ«bas. Tā apstrādā Å”os datus dažādos veidos.

Pēc datu apstrādes, izmantojot priekÅ”apstrādi, mēs tos saglabājam apstrādei HistoryCache. Tas beidz datu vākÅ”anu, un mēs pārejam pie galvenā procesa Zabbix - vēstures sinhronizators, jo tā ir monolÄ«ta arhitektÅ«ra.

PiezÄ«me. IepriekŔēja apstrāde ir diezgan sarežģīta darbÄ«ba. Izmantojot versiju 4.2, tas ir pārvietots uz starpniekserveri. Ja jums ir ļoti liels Zabbix ar lielu datu elementu skaitu un vākÅ”anas biežumu, tas ievērojami atvieglo darbu.

ValueCache, vēstures un tendenču keÅ”atmiņa

Vēstures sinhronizators ir galvenais process, kas atomiski apstrādā katru datu elementu, tas ir, katru vērtību.

Vēstures sinhronizators ņem vērtÄ«bas no vēstures keÅ”atmiņas un pārbauda konfigurāciju, vai nav aprēķinu aktivizētāju. Ja tie pastāv, tas aprēķina.

Vēstures sinhronizētājs izveido notikumu, eskalāciju, lai izveidotu brÄ«dinājumus, ja to pieprasa konfigurācija, un ierakstus. Ja ir aktivizētāji turpmākai apstrādei, tā saglabā Å”o vērtÄ«bu keÅ”atmiņā ValueCache, lai nepiekļūtu vēstures tabulai. Šādi ValueCache tiek aizpildÄ«ta ar datiem, kas nepiecieÅ”ami trigeru un aprēķināto elementu aprēķināŔanai.

Vēstures sinhronizators ieraksta visus datus datu bāzē, un tas ieraksta diskā. Apstrādes process beidzas Å”eit.

Augsta veiktspēja un vietējā sadalÄ«Å”ana: Zabbix ar TimescaleDB atbalstu

KeÅ”atmiņas saglabāŔana datu bāzē

Datu bāzes pusē ir dažādas keÅ”atmiņas, kad vēlaties skatÄ«t grafikus vai pārskatus par notikumiem:

  • Innodb_buffer_pool MySQL pusē;
  • shared_buffers PostgreSQL pusē;
  • effective_cache_size Oracle pusē;
  • shared_pool DB2 pusē.

Ir daudzas citas keÅ”atmiņas, taču tās ir galvenās visām datu bāzēm. Tie ļauj saglabāt datus RAM, kas bieži ir nepiecieÅ”ami vaicājumiem. Viņiem ir savas tehnoloÄ£ijas Å”im nolÅ«kam.

Datu bāzes veiktspēja ir kritiska

Zabbix serveris pastāvÄ«gi vāc datus un raksta tos. Restartējot, tas arÄ« tiek nolasÄ«ts no vēstures, lai aizpildÄ«tu ValueCache. Izmanto skriptus un atskaites Zabbix API, kas ir veidota uz tÄ«mekļa saskarnes. Zabbix API piekļūst datu bāzei un izgÅ«st nepiecieÅ”amos datus grafikiem, atskaitēm, notikumu sarakstiem un jaunākajām problēmām.

Augsta veiktspēja un vietējā sadalÄ«Å”ana: Zabbix ar TimescaleDB atbalstu

Vizualizācijai - grafana. Å is ir populārs risinājums mÅ«su lietotāju vidÅ«. Tas var tieÅ”i nosÅ«tÄ«t pieprasÄ«jumus, izmantojot Zabbix API un datu bāzi, un rada zināmu konkurenci datu saņemÅ”anai. Tāpēc ir nepiecieÅ”ama precÄ«zāka un labāka datubāze, lai tā atbilstu ātrai rezultātu piegādei un testÄ“Å”anai.

Saimniece

TreÅ”ais Zabbix veiktspējas izaicinājums ir vēstures tÄ«rÄ«Å”ana, izmantojot Housekeeper. Tas seko visiem uzstādÄ«jumiem ā€“ datu elementi norāda, cik ilgi jāuzglabā izmaiņu (tendenču) dinamika dienās.

Mēs aprēķinām TrendsCache lidojumā. Kad dati tiek saņemti, mēs tos apkopojam vienu stundu un ierakstām tabulās tendenču izmaiņu dinamikai.

Mājkalpotājs sāk un dzÄ“Å” informāciju no datu bāzes, izmantojot parastos ā€œatlasÄ«jumusā€. Tas ne vienmēr ir efektÄ«vs, kā redzams iekŔējo procesu veiktspējas diagrammās.

Augsta veiktspēja un vietējā sadalÄ«Å”ana: Zabbix ar TimescaleDB atbalstu

Sarkanajā diagrammā redzams, ka vēstures sinhronizators ir pastāvÄ«gi aizņemts. AugÅ”pusē oranžā diagramma ir Housekeeper, kas pastāvÄ«gi darbojas. ViņŔ gaida, lÄ«dz datu bāze izdzēsÄ«s visas viņa norādÄ«tās rindas.

Kad vajadzētu atspējot Housekeeper? Piemēram, ir ā€œPreces IDā€, un jums ir jāizdzÄ“Å” pēdējās 5 XNUMX rindu noteiktā laikā. Protams, tas notiek pēc indeksa. Bet parasti datu kopa ir ļoti liela, un datu bāze joprojām nolasa no diska un ievieto to keÅ”atmiņā. Tā vienmēr ir ļoti dārga datubāzes darbÄ«ba un atkarÄ«bā no datu bāzes lieluma var izraisÄ«t veiktspējas problēmas.

Augsta veiktspēja un vietējā sadalÄ«Å”ana: Zabbix ar TimescaleDB atbalstu

Apkopēja ir viegli atspējojama. TÄ«mekļa saskarnē ir iestatÄ«jums "VispārÄ«ga administrÄ“Å”ana" mājkalpotājai. Mēs atspējojam iekŔējo mājturÄ«bu iekŔējo tendenču vēsturei, un tā vairs to nepārvalda.

Mājsaimniece tika izslēgta, grafiki izlÄ«dzinājās - kādas problēmas Å”ajā gadÄ«jumā varētu bÅ«t un kas varētu palÄ«dzēt atrisināt treÅ”o izpildÄ«juma izaicinājumu?

SadalīŔana - sadalīŔana vai sadalīŔana

Parasti sadalÄ«Å”ana katrā uzskaitÄ«tajā relāciju datu bāzē tiek konfigurēta atŔķirÄ«gā veidā. Katrai no tām ir sava tehnoloÄ£ija, taču kopumā tās ir lÄ«dzÄ«gas. Jauna nodalÄ«juma izveide bieži rada noteiktas problēmas.

Parasti nodalÄ«jumi tiek konfigurēti atkarÄ«bā no ā€œiestatÄ«Å”anasā€ - datu apjoma, kas tiek izveidots vienā dienā. Parasti sadalÄ«Å”ana tiek izdota vienā dienā, tas ir minimums. Jaunas partijas tendencēm - 1 mēnesis.

VērtÄ«bas var mainÄ«ties, ja ā€œiestatÄ«jumsā€ ir ļoti liels. Ja mazs ā€œiestatÄ«jumsā€ ir lÄ«dz 5 nvps (jaunas vērtÄ«bas sekundē), vidējais ir no 000 lÄ«dz 5 000, tad lielais ir virs 25 000 nvps. Tās ir lielas un ļoti lielas instalācijas, kurām nepiecieÅ”ama rÅ«pÄ«ga datu bāzes konfigurÄ“Å”ana.

Ļoti lielām iekārtām vienas dienas periods var nebūt optimāls. Esmu redzējis MySQL nodalījumus ar 40 GB vai vairāk dienā. Tas ir ļoti liels datu apjoms, kas var radīt problēmas un kas ir jāsamazina.

Ko dod sadalīŔana?

SadalÄ«Å”anas tabulas. Bieži vien tie ir atseviŔķi faili diskā. Vaicājumu plāns optimālāk atlasa vienu nodalÄ«jumu. Parasti sadalÄ«Å”anu izmanto diapazonā ā€” tas attiecas arÄ« uz Zabbix. Mēs tur lietojam ā€œlaikspiedoluā€ ā€“ laiku kopÅ” laikmeta sākuma. Tie mums ir parastie skaitļi. JÅ«s iestatāt dienas sākumu un beigas - tas ir nodalÄ«jums.

Ātra noņemÅ”ana Sākot no DELETE. Tiek atlasÄ«ts viens fails/apakÅ”tabula, nevis rindu atlase dzÄ“Å”anai.

Ievērojami paātrina datu izgÅ«Å”anu SELECT - izmanto vienu vai vairākus nodalÄ«jumus, nevis visu tabulu. Ja piekļūstat datiem, kas ir divas dienas veci, tie tiek izgÅ«ti no datu bāzes ātrāk, jo keÅ”atmiņā ir jāielādē tikai viens fails un tas jāatgriež, nevis liela tabula.

Bieži vien daudzas datu bāzes tiek arÄ« paātrinātas INSERT ā€” ievietojumi bērnu tabulā.

TermiņŔDB

Versijai 4.2 mēs pievērsām uzmanÄ«bu TimescaleDB. Å is ir PostgreSQL paplaÅ”inājums ar vietējo saskarni. PaplaÅ”inājums efektÄ«vi darbojas ar laikrindu datiem, nezaudējot relāciju datu bāzu priekÅ”rocÄ«bas. TimescaleDB arÄ« automātiski sadalās.

TimescaleDB ir koncepcija hipertable (hipertable), ko izveidojat. Tas satur gabalos - starpsienas. Gabali ir automātiski pārvaldīti hipertabulu fragmenti, kas neietekmē citus fragmentus. Katrai daļai ir savs laika diapazons.

Augsta veiktspēja un vietējā sadalÄ«Å”ana: Zabbix ar TimescaleDB atbalstu

TimescaleDB vs PostgreSQL

TimescaleDB darbojas patieŔām efektÄ«vi. PaplaÅ”inājuma ražotāji apgalvo, ka izmanto pareizāku vaicājumu apstrādes algoritmu, jo Ä«paÅ”i inserts . Pieaugot datu kopas ievietoÅ”anas lielumam, algoritms uztur nemainÄ«gu veiktspēju.

Augsta veiktspēja un vietējā sadalÄ«Å”ana: Zabbix ar TimescaleDB atbalstu

Pēc 200 miljoniem rindu PostgreSQL parasti sāk ievērojami samazināties un zaudē veiktspēju lÄ«dz 0. TimescaleDB ļauj efektÄ«vi ievietot ā€œievietojumusā€ jebkuram datu apjomam.

UzstādīŔana

TimescaleDB instalÄ“Å”ana jebkurai pakotnei ir diezgan vienkārÅ”a. IN dokumentācija viss ir sÄ«ki aprakstÄ«ts - tas ir atkarÄ«gs no oficiālajām PostgreSQL pakotnēm. TimescaleDB var arÄ« izveidot un apkopot manuāli.

Zabbix datu bāzei mēs vienkārÅ”i aktivizējam paplaÅ”inājumu:

echo "CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;" | sudo -u postgres psql zabbix

Jūs aktivizējat extension un izveidojiet to Zabbix datubāzei. Pēdējais solis ir izveidot hipertabulu.

Vēstures tabulu migrÄ“Å”ana uz TimescaleDB

Tam ir īpaŔa funkcija create_hypertable:

SELECT create_hypertable(ā€˜historyā€™, ā€˜clockā€™, chunk_time_interval => 86400, migrate_data => true);
SELECT create_hypertable(ā€˜history_unitā€™, ā€˜clockā€™, chunk_time_interval => 86400, migrate_data => true);
SELECT create_hypertable(ā€˜history_logā€™, ā€˜clockā€™, chunk_time_interval => 86400, migrate_data => true);
SELECT create_hypertable(ā€˜history_textā€™, ā€˜clockā€™, chunk_time_interval => 86400, migrate_data => true);
SELECT create_hypertable(ā€˜history_strā€™, ā€˜clockā€™, chunk_time_interval => 86400, migrate_data => true);
SELECT create_hypertable(ā€˜trendsā€™, ā€˜clockā€™, chunk_time_interval => 86400, migrate_data => true);
SELECT create_hypertable(ā€˜trends_unitā€™, ā€˜clockā€™, chunk_time_interval => 86400, migrate_data => true);
UPDATE config SET db_extension=ā€™timescaledbā€™, hk_history_global=1, hk_trends_global=1

Funkcijai ir trÄ«s parametri. Pirmkārt - tabula datu bāzē, kam jāizveido hipertabula. Otrais - laukā, saskaņā ar kuru jums ir jāizveido chunk_time_interval ā€” izmantojamo nodalÄ«jumu daļu intervāls. Manā gadÄ«jumā intervāls ir viena diena - 86 400.

TreÅ”ais parametrs - migrate_data. Ja iestatāt true, tad visi paÅ”reizējie dati tiek pārsÅ«tÄ«ti uz iepriekÅ” izveidotiem gabaliem. Pats izmantoju migrate_data. Man bija apmēram 1 TB, kas ilga vairāk nekā stundu. Pat dažos gadÄ«jumos testÄ“Å”anas laikā es izdzēsu vēsturiskos datus par rakstzÄ«mju veidiem, kas nebija nepiecieÅ”ami glabāŔanai, lai tos nepārsÅ«tÄ«tu.

Pēdējais solis - UPDATE: plkst db_extension ielieciet timescaledblai datu bāze saprastu, ka Å”is paplaÅ”inājums pastāv. Zabbix to aktivizē un pareizi izmanto datu bāzes sintaksi un vaicājumus - tās funkcijas, kas ir nepiecieÅ”amas TimescaleDB.

Aparatūras konfigurācija

Es izmantoju divus serverus. Pirmkārt - VMware maŔīna. Tas ir diezgan mazs: 20 IntelĀ® XeonĀ® CPU E5-2630 v 4 @ 2.20 GHz procesori, 16 GB RAM un 200 GB SSD.

Es tajā instalēju PostgreSQL 10.8 ar Debian 10.8-1.pgdg90+1 OS un xfs failu sistēmu. Es visu konfigurēju minimāli, lai izmantotu Å”o konkrēto datu bāzi, atskaitot to, ko izmantos pats Zabbix.

Tajā paŔā maŔīnā bija Zabbix serveris, PostgreSQL un kravas aÄ£enti. Man bija 50 aktÄ«vās vielas, kuras lietoju LoadableModulelai ļoti ātri Ä£enerētu dažādus rezultātus: skaitļus, virknes. Es aizpildÄ«ju datubāzi ar daudziem datiem.

Sākotnēji ietvertā konfigurācija 5 elementu dati uz vienu saimniekdatoru. GandrÄ«z katrs elements saturēja sprÅ«da, lai padarÄ«tu to lÄ«dzÄ«gu Ä«stām instalācijām. Dažos gadÄ«jumos bija vairāk nekā viens sprÅ«da. Vienam tÄ«kla mezglam bija 3ā€“000 aktivizētāju.

Datu vienumu atjaunināŔanas intervāls - 4-7 sekundes. PaÅ”u slodzi regulēju, izmantojot ne tikai 50 lÄ«dzekļus, bet pievienojot vēl. Tāpat, izmantojot datu elementus, dinamiski noregulēju slodzi un samazināju atjaunināŔanas intervālu lÄ«dz 4 s.

PostgreSQL. 35 000 nvps

Mans pirmais darbs ar Å”o aparatÅ«ru bija tÄ«rā PostgreSQL ā€” 35 tÅ«kstoÅ”i vērtÄ«bu sekundē. Kā redzat, datu ievietoÅ”ana aizņem sekundes daļas - viss ir labi un ātri. VienÄ«gais, ka 200 GB SSD disks ātri piepildās.

Augsta veiktspēja un vietējā sadalÄ«Å”ana: Zabbix ar TimescaleDB atbalstu

Šis ir standarta Zabbix servera veiktspējas informācijas panelis.

Augsta veiktspēja un vietējā sadalÄ«Å”ana: Zabbix ar TimescaleDB atbalstu

Pirmais zilais grafiks ir vērtÄ«bu skaits sekundē. Otrais grafiks labajā pusē ir veidoÅ”anas procesu ielāde. TreÅ”ais ir iekŔējo bÅ«vÄ“Å”anas procesu ielāde: vēstures sinhronizatori un Housekeeper, kas Å”eit darbojas jau labu laiku.

Ceturtajā diagrammā parādÄ«ts HistoryCache lietojums. Tas ir sava veida buferis pirms ievietoÅ”anas datu bāzē. Zaļajā piektajā diagrammā parādÄ«ts ValueCache lietojums, tas ir, cik ValueCache trāpÄ«jumu aktivizētājiem ā€” tas ir vairāki tÅ«kstoÅ”i vērtÄ«bu sekundē.

PostgreSQL. 50 000 nvps

Tad es palielināju slodzi lÄ«dz 50 tÅ«kstoÅ”iem vērtÄ«bu sekundē tajā paŔā aparatÅ«rā.

Augsta veiktspēja un vietējā sadalÄ«Å”ana: Zabbix ar TimescaleDB atbalstu

Ielādējot no Housekeeper, 10 tÅ«kstoÅ”u vērtÄ«bu ievietoÅ”ana aizņēma 2-3 sekundes.

Augsta veiktspēja un vietējā sadalÄ«Å”ana: Zabbix ar TimescaleDB atbalstu
Mājkalpotāja jau sāk traucēt darbu.

TreÅ”ajā grafikā redzams, ka kopumā traperu un vēstures sinhronotāju slodze joprojām ir 60%. Ceturtajā grafikā Housekeeper darbÄ«bas laikā HistoryCache jau sāk diezgan aktÄ«vi pildÄ«ties. Tas ir 20% pilns, kas ir aptuveni 0,5 GB.

PostgreSQL. 80 000 nvps

Tad es palielināju slodzi lÄ«dz 80 tÅ«kstoÅ”iem vērtÄ«bu sekundē. Tas ir aptuveni 400 tÅ«kstoÅ”i datu elementu un 280 tÅ«kstoÅ”i aktivizētāju.

Augsta veiktspēja un vietējā sadalÄ«Å”ana: Zabbix ar TimescaleDB atbalstu
Trīsdesmit vēstures sinhronizētāju ielādes izmaksas jau ir diezgan augstas.

Palielināju arÄ« dažādus parametrus: vēstures sinhronizācijas, keÅ”atmiņas.

Augsta veiktspēja un vietējā sadalÄ«Å”ana: Zabbix ar TimescaleDB atbalstu

Manā aparatÅ«rā vēstures sinhronizatoru ielāde palielinājās lÄ«dz maksimumam. HistoryCache ātri piepildÄ«jās ar datiem - buferÄ« bija uzkrājuÅ”ies dati apstrādei.

Visu Å”o laiku novēroju, kā tiek izmantots procesors, operatÄ«vā atmiņa un citi sistēmas parametri, un konstatēju, ka diska noslodze ir maksimāla.

Augsta veiktspēja un vietējā sadalÄ«Å”ana: Zabbix ar TimescaleDB atbalstu

Esmu sasniedzis izmantoÅ”anu maksimālās diska iespējas Å”ajā aparatÅ«rā un Å”ajā virtuālajā maŔīnā. Ar Ŕādu intensitāti PostgreSQL sāka diezgan aktÄ«vi izskalot datus, un diskam vairs nebija laika rakstÄ«t un lasÄ«t.

Otrais serveris

Paņēmu citu serveri, kurā jau bija 48 procesori un 128 GB RAM. Es to noregulēju - iestatīju uz 60 vēstures sinhronizāciju un sasniedzu pieņemamu veiktspēju.

Augsta veiktspēja un vietējā sadalÄ«Å”ana: Zabbix ar TimescaleDB atbalstu

Faktiski tā jau ir produktivitātes robeža, kur kaut kas ir jādara.

TimescaleDB. 80 000 nvps

Mans galvenais uzdevums ir pārbaudÄ«t TimescaleDB iespējas pret Zabbix slodzi. 80 tÅ«kstoÅ”i vērtÄ«bu sekundē ir daudz, metrikas vākÅ”anas biežums (protams, izņemot Yandex) un diezgan liels ā€œiestatÄ«jumsā€.

Augsta veiktspēja un vietējā sadalÄ«Å”ana: Zabbix ar TimescaleDB atbalstu

Katrā grafikā ir kritums ā€” tieÅ”i tā ir datu migrācija. Pēc kļūmēm Zabbix serverÄ« vēstures sinhronizētāja ielādes profils ļoti mainÄ«jās - tas nokritās trÄ«s reizes.

TimescaleDB ļauj ievietot datus gandrīz 3 reizes ātrāk un izmantot mazāk HistoryCache.

Attiecīgi jūs saņemsiet datus savlaicīgi.

TimescaleDB. 120 000 nvps

Tad es palielināju datu elementu skaitu lÄ«dz 500 tÅ«kstoÅ”iem. Galvenais uzdevums bija pārbaudÄ«t TimescaleDB iespējas - es saņēmu aprēķināto vērtÄ«bu 125 tÅ«kstoÅ”i vērtÄ«bu sekundē.

Augsta veiktspēja un vietējā sadalÄ«Å”ana: Zabbix ar TimescaleDB atbalstu

Å Ä« ir darba ā€œiestatÄ«Å”anaā€, kas var darboties ilgu laiku. Bet, tā kā mans disks bija tikai 1,5 TB, es to aizpildÄ«ju pāris dienu laikā.

Augsta veiktspēja un vietējā sadalÄ«Å”ana: Zabbix ar TimescaleDB atbalstu

Vissvarīgākais ir tas, ka tajā paŔā laikā tika izveidoti jauni TimescaleDB nodalījumi.

Tas ir pilnÄ«gi nepamanāms veiktspējai. Piemēram, ja MySQL tiek izveidoti nodalÄ«jumi, viss ir savādāk. Tas parasti notiek naktÄ«, jo tas bloķē vispārēju ievietoÅ”anu, darbu ar tabulām un var izraisÄ«t pakalpojuma degradāciju. Tas neattiecas uz TimescaleDB.

Kā piemēru es parādÄ«Å”u vienu diagrammu no daudziem kopienā. Attēlā ir iespējots TimescaleDB, pateicoties kuram ir samazinājusies slodze uz io.weight izmantoÅ”anu procesoram. Samazinājās arÄ« iekŔējo procesa elementu izmantoÅ”ana. Turklāt Ŕī ir parasta virtuālā maŔīna uz parastajiem pankÅ«ku diskiem, nevis SSD.

Augsta veiktspēja un vietējā sadalÄ«Å”ana: Zabbix ar TimescaleDB atbalstu

Atzinumi

TimescaleDB ir labs risinājums nelielai "iestatÄ«Å”anai", kas ietekmē diska veiktspēju. Tas ļaus jums turpināt strādāt labi, lÄ«dz datu bāze pēc iespējas ātrāk tiks migrēta uz aparatÅ«ru.

TimescaleDB ir viegli konfigurējams, nodroÅ”ina veiktspējas pieaugumu, labi darbojas ar Zabbix un ir priekÅ”rocÄ«bas salÄ«dzinājumā ar PostgreSQL.

Ja izmantojat PostgreSQL un neplānojat to mainÄ«t, iesaku izmantojiet PostgreSQL ar paplaÅ”inājumu TimescaleDB kopā ar Zabbix. Å is risinājums darbojas efektÄ«vi lÄ«dz vidējai "iestatÄ«jumam".

Kad mēs sakām ā€œaugsta veiktspējaā€, mēs domājam HighLoad++. Jums nebÅ«s ilgi jāgaida, lai uzzinātu par tehnoloÄ£ijām un praksi, kas ļauj pakalpojumiem apkalpot miljoniem lietotāju. Saraksts ziņojumi 7. un 8. novembrim jau apkopojām, bet Å”eit tikÅ”anās var ieteikt vairāk.

Abonējiet mÅ«su informatÄ«vais izdevums Šø telegramma, kurā atklājam gaidāmās konferences iezÄ«mes un uzzinām, kā no tās gÅ«t maksimālu labumu.

Avots: www.habr.com

Pievieno komentāru