KÔrge jÔudluse ja kohandatud partitsioneerimisega: Zabbix koos TimescaleDB toega

Zabbix — see monitooring sĂŒsteem. Nagu iga teine sĂŒsteem, seisab ka see silmitsi kolme peamise probleemiga: andmete kogumine ja töötlemine, ajaloo sĂ€ilitamine ning selle puhastamine.

Andmete saamise, töötlemise ja salvestamise etapid vĂ”tavad aega. Veidi, kuid suure sĂŒsteemi puhul vĂ”ib see tĂ€hendada suuri viivitusi. SĂ€ilitamise probleem on seotud andmete ligipÀÀsuga. Need on vajalikud aruannete, kontrollide ja kĂ€ivitajate jaoks. Andmete ligipÀÀsu viivitused mĂ”jutavad samuti jĂ”udlust. Kui andmebaasid kasvavad, tuleb outdated andmed eemaldada. Eemaldamine on keeruline operatsioon, mis sööb samuti osa ressurssidest.

KÔrge jÔudluse ja kohandatud partitsioneerimisega: Zabbix koos TimescaleDB toega

Zabbixi andmete kogumise ja sĂ€ilitamise viivituste probleem lahendatakse vahemĂ€lu kasutamisega: erinevad vahemĂ€lu tĂŒĂŒbid, vahemĂ€lu andmebaasis. Kolmanda probleemi lahendamiseks vahemĂ€lu ei sobi, seetĂ”ttu kasutab Zabbix TimescaleDB-d. Selle kohta rÀÀgib Andrei Gushchin — tehnilise toe insener Zabbix SIA. Zabbixi tehnikatoe valdkonnas on Andrei tegelenud juba ĂŒle 6 aasta ning ta tegeleb otse tootlikkuse kĂŒsimustega.

Kuidas TimescaleDB töötab, millist jÔudlust see vÔib pakkuda vÔrreldes tavalise PostgreSQL-iga? Milline roll on Zabbixil TimescaleDB andmebaasis? Kuidas alustada nullist ja kuidas migreerida PostgreSQL-ilt ning millise konfiguratsiooni jÔudlus on parem? KÔigest sellest allpool.

Vaata videot

JÔudluse vÀljakutsed

Iga monitooringusĂŒsteem seisab silmitsi teatud jĂ”udluse vĂ€ljakutsetega. RÀÀgin kolmest: andmete kogumine ja töötlemine, salvestamine, ajaloo puhastamine.

Kiire andmete kogumine ja töötlemine. Hea monitooringusĂŒsteem peab kiiresti koguma kĂ”ik andmed ja töötlema need vastavalt triggeri vĂ€ljenditele - oma kriteeriumide jĂ€rgi. PĂ€rast töötlemist peab sĂŒsteem need andmed ka kiiresti andmebaasi salvestama, et neid hiljem kasutada.

Ajaloo salvestamine. Hea monitooringusĂŒsteem peab salvestama ajaloo andmebaasi ning andma mugava juurdepÀÀsu mÔÔdikutele. Ajalugu on vajalik, et kasutada seda aruannetes, graafikutes, triggerites, lĂ€ve vÀÀrtustes ja arvutatud andmeelementides teavitamiseks.

Ajaloo puhastamine. MĂ”nikord tuleb pĂ€ev, mil te ei vaja enam mÔÔdikute salvestamist. Miks peaksid teid huvitama viis aastat tagasi kogutud andmed, kuu vĂ”i kaks: mĂ”ned sĂ”lmed on eemaldatud, mĂ”ned hostid vĂ”i mÔÔdikud ei ole enam vajalikud, kuna need on aegunud ja lakanud kogumast. Hea jĂ€lgimissĂŒsteem peaks sĂ€ilitama ajaloolisi andmeid ja aeg-ajalt need kustutama, et andmebaas ei laieneks.

Aegunud andmete puhastamine on terav kĂŒsimus, mis mĂ”jutab andmebaasi jĂ”udlust oluliselt.

Zabbixi vahemÀlu

Zabbixis lahendatakse esimene ja teine ​​kĂ”ne vahemĂ€lu abil. Andmete kogumiseks ja töötlemiseks kasutatakse töömĂ€lu. Ajaloo sĂ€ilitamiseks kasutatakse triggereid, graafikuid ja arvutatud andmeelemente. Andmebaasi pool on teatav vahemĂ€lu peamiste valikute jaoks, nĂ€iteks graafikute jaoks.

Zabbixi serveri enda poolel on vahemÀlu:

  • ConfigurationCache;
  • ValueCache;
  • HistoryCache;
  • TrendsCache.

Vaatame neid lÀhemalt.

ConfigurationCache

See on pĂ”hivahemĂ€lu, kus hoiame mÔÔdikuid, hoste, andmeelemente, triggereid — kĂ”ike, mis on vajalik eelprotsessimiseks ja andmete kogumiseks.

KÔrge jÔudluse ja kohandatud partitsioneerimisega: Zabbix koos TimescaleDB toega

KÔik see salvestatakse ConfigurationCache'i, et vÀltida tarbetuid pÀringuid andmebaasi. PÀrast serveri kÀivitamist uuendame selle vahemaa, loome ja perioodiliselt uuendame konfiguratsioone.

Andmete kogumine

Skeem on piisavalt suur, kuid peamine on see — kogujad. Need on erinevad «pollers» — kogumisprotsessid. Need vastutavad erinevat tĂŒĂŒpi kogumise eest: koguvad andmeid SNMP, IPMI kaudu ja edastavad need PreProcessingule.

KĂ”rge jĂ”udluse ja kohandatud partitsioneerimisega: Zabbix koos TimescaleDB toegaKogujad on mĂ€rgitud oranĆŸi joonega.

Zabbixis on arvutatud aggregatsioonielemente, mis on vajalikud kontrollide kogumiseks. Kui meil on need olemas, saame andmed otse ValueCache'ist.

PreProcessing HistoryCache

KĂ”ik kogujad kasutavad ConfigurationCache'i ĂŒlesannete saamiseks. Edasi edastavad nad need PreProcessingule.

KÔrge jÔudluse ja kohandatud partitsioneerimisega: Zabbix koos TimescaleDB toega

PreProcessing kasutab ConfigurationCache'i, et saada PreProcessing'i samme. Ta töötleb neid andmeid erinevate viisidega.

Andmete töötlemise jĂ€rel PreProcessinguga salvestame need HistoryCache'i, et neid töödelda. Sellega lĂ”peb andmete kogumine ja liigume Zabbixis peamise protsessi juurde — history syncer, kuna see on monoliitne arhitektuur.

MÀrkus: PreProcessing on piisavalt raske operatsioon. Alates versioonist 4.2 on see viidud proxy'le. Kui teil on vÀga suur Zabbix koos suure andmeelemendite ja kogumisvÔimega, lihtsustab see tööd oluliselt.

ValueCache, ajalugu & trendide vahemÀlu

Ajaloo sĂŒnkroniseerija on peamine protsess, mis töötleb iga andmeelementi atomaarsetena, st iga vÀÀrtust.

Ajaloo sĂŒnkroniseerija vĂ”tab vÀÀrtused HistoryCache'st ja kontrollib Configuration'is, kas on olemas kĂ€ivitajaid arvutuste jaoks. Kui need on olemas — arvutab.

Ajaloo sĂŒnkroniseerija loob sĂŒndmuse, eskaleerimise, et genereerida teateid, kui see on konfigureeritud, ja salvestab. Kui on kĂ€ivitajad edasiseks töötluseks, salvestab see vÀÀrtuse ValueCache'sse, et mitte pöörduda ajaloote tabelisse. Nii tĂ€idetakse ValueCache andmetega, mis on vajalikud kĂ€ivitajate ja arvutatud elementide arvutamiseks.

Ajaloo sĂŒnkroniseerija salvestab kĂ”ik andmed andmebaasi, mis salvestab need ketta peale. Töötlusprotsess lĂ”peb sellega.

KÔrge jÔudluse ja kohandatud partitsioneerimisega: Zabbix koos TimescaleDB toega

VahemÀlu andmebaasis

Andmebaasi poolest on olemas erinevad vahemĂ€lu, kui soovite vaadata graafikuid vĂ”i aruandeid sĂŒndmuste kohta:

  • Innodb_buffer_pool MySQL poolel;
  • shared_buffers PostgreSQL poolel;
  • effective_cache_size Oracle poolel;
  • shared_pool DB2 poolel.

On veel teisi vahemÀlusid, kuid need on pÔhilised kÔikide andmebaaside jaoks. Need vÔimaldavad hoida operatiivmÀlu andmeid, mis on sageli vajalikud pÀringute jaoks. Neil on selleks oma tehnoloogiad.

Andmebaasi jÔudlus on kriitilise tÀhtsusega

Zabbix-server kogub pidevalt andmeid ja salvestab neid. Ta loeb ka kĂ€ivitamisel ajaloost, et tĂ€ita ValueCache'i. Skripte ja aruandeid kasutatakse Zabbix API, mis on ĂŒles ehitatud Web-liidese alusel. Zabbix API pöördub andmebaasi ja saadab vajalikud andmed graafikute, aruannete, sĂŒndmuste loendite ja viimaste probleemide jaoks.

KÔrge jÔudluse ja kohandatud partitsioneerimisega: Zabbix koos TimescaleDB toega

Visualiseerimiseks — Grafana. Meie kasutajate seas on see populaarne lahendus. See oskab otse saata pĂ€ringuid nii Zabbix API kaudu kui ka andmebaasi ning loob teatava konkurentsi andmete saamisel. SeetĂ”ttu on vajalik peen ja hea andmebaasi seadistus, et vastata kiirete tulemuste ja testimise nĂ”uetele.

Housekeeper

Zabbixi kolmas jĂ”udluse vĂ€ljakutse on ajaloo puhastamine Housekeeperi abil. See jĂ€rgib kĂ”iki seadeid — andmeelementides on mÀÀratud, kui kaua sĂ€ilitada muutuste dĂŒnaamikat (trendide) pĂ€evades.

TrendsCache arvutame reaalajas. Andmete saabumisel kogume need kokku ĂŒhe tunni jooksul ja salvestame tabelitesse trendimuutuste dĂŒnaamika jaoks.

Housekeeper kÀivitub ja kustutab andmed andmebaasist tavapÀraste «select» pÀringutega. See pole alati efektiivne, mida vÔib nÀha sisemiste protsesside jÔudluse graafikutelt.

KÔrge jÔudluse ja kohandatud partitsioneerimisega: Zabbix koos TimescaleDB toega

Punane graafik nĂ€itab, et History syncer on pidevalt koormatud. Ülemine oranĆŸ graafik — see on Housekeeper, mis kĂ€ivitub pidevalt. Ta ootab andmebaasilt, et see kustutaks kĂ”ik realood, mille ta on seadnud.

Millal tuleks Housekeeper vĂ€lja lĂŒlitada? NĂ€iteks, kui on olemas «Item ID» ja tuleb kustutada viimased 5000 rida kindla aja jooksul. Loomulikult toimub see indeksite kaudu. Kuid tavaliselt on andmestik vĂ€ga suur ja andmebaas loeb ikkagi kettalt ja tĂ”stab andmed vahemĂ€lusse. See on alati andmebaasi jaoks vĂ€ga kulukas operatsioon ja sĂ”ltuvalt andmebaasi suurusest vĂ”ib see pĂ”hjustada jĂ”udlusprobleeme.

KÔrge jÔudluse ja kohandatud partitsioneerimisega: Zabbix koos TimescaleDB toega

Housekeeperi saab lihtsalt vĂ€lja lĂŒlitada. Veebiliideses on seadistus «Administration general» all Housekeeperi jaoks. LĂŒlitame vĂ€lja sisemise Housekeeping'i sisemise trendiajaloo jaoks ja ta ei jĂ€lgi seda enam.

Majapidamise teenus on suletud, ajakavad on joondunud — millised vĂ”ivad olla probleemid ja mis aitavad lahendada kolmandat jĂ”udluskĂ”net?

Partitsioneerimine — sektsioonimine vĂ”i partitsioonimine

Tavaliselt seadistatakse partitsioneerimine erinevalt igas relatsioonilises andmebaasis, mille olen loetlenud. Igal on oma tehnoloogia, kuid nad on ĂŒldiselt sarnased. Uue partitsiooni loomine toob sageli kaasa teatud probleeme.

Tavaliselt seadistatakse partitsioonid sĂ”ltuvalt «setup'ist» — pĂ€evast loodud andmete arvust. Üldiselt mÀÀratakse partitsioneerimine ĂŒhe pĂ€eva kohta, see on miinimum. Uute partitsioonide trendide jaoks — 1 kuu.

VÀÀrtused vĂ”ivad muutuda vĂ€ga suure «setup'i» puhul. Kui vĂ€ike «setup» on kuni 5 000 nvps (uus vÀÀrtus sekundis), keskmine — 5 000 kuni 25 000, siis suur — ĂŒle 25 000 nvps. Need on suured ja vĂ€ga suured installatsioonid, mis nĂ”uavad hoolikat andmebaasi seadistamist.

VĂ€ga suurte installatsioonide puhul ei pruugi ĂŒhe pĂ€eva andmeosa olla optimaalne. Olen nĂ€inud MySQL-is partitsioone, mis ulatuvad 40 GB ja rohkem ĂŒhe pĂ€eva kohta. See on vĂ€ga suur andmemahu, mis vĂ”ib pĂ”hjustada probleeme, ning seda tuleks vĂ€hendada.

Mida annab partitsioneerimine?

Tabelite sektsioneerimine. Sageli on need eraldi failid kettal. KĂŒsimuste plaan valib optimaalsemalt ĂŒhe partitsiooni. Tavaliselt kasutatakse partitsioneerimist vahemiku jĂ€rgi — Zabbixi puhul kehtib see samuti. Me kasutame seal "timestamp" — aega alates ajaloost. Meil on need tavalised numbrid. MÀÀrate pĂ€eva alguse ja lĂ”pu — see on partitsioon.

Kiire eemaldamine — DELETE. Valitakse ĂŒks fail/alamtabel, mitte ridade valik kustutamiseks.

Oluliselt kiirendab andmete valikut SELECT — kasutab ĂŒhte vĂ”i enamat partitsiooni, mitte kogu tabelit. Kui pöördute kahe pĂ€eva taguste andmete poole, valitakse need andmebaasist kiiremini, kuna tuleb laadida ainult ĂŒks fail vahemĂ€llu, mitte suur tabel.

Sageli kiirendab see ka paljude andmebaaside INSERT — sisestusi child-tabelisse.

TimescaleDB

Versioonis 4.2 keskendume TimescaleDB-le. See on PostgreSQL-i tÀiendus, mis pakub natiivset liidest. TÀiendus töötab tÔhusalt ajareadade andmetega, kaotamata samas relaatsiooniliste andmebaaside eeliseid. TimescaleDB jagab andmed automaatselt partitsioonidesse.

TimescaleDB-s on kontseptsioon hĂŒperdb (hĂŒperdb), mille te loote. See sisaldab chunk'e — partitsioonid. Chunk'id on automaatselt hallatavad hĂŒperdb-fragmentide tĂŒkid, mis ei mĂ”juta teisi fragmente. Iga chunk omab oma ajavahemikku.

KÔrge jÔudluse ja kohandatud partitsioneerimisega: Zabbix koos TimescaleDB toega

TimescaleDB vs PostgreSQL

TimescaleDB toimib tÔeliselt efektiivselt. TÀienduse tootjad vÀidavad, et nad kasutavad paremat pÀringute töötlemise algoritmi, seal hulgas <code>inserts</code>. Kui dataset-i sisendi suurus kasvab, sÀilitab algoritm pideva jÔudluse.

KÔrge jÔudluse ja kohandatud partitsioneerimisega: Zabbix koos TimescaleDB toega

PĂ€rast 200 miljonit rida hakkab PostgreSQL tavaliselt madalaks jÀÀma ja kaotab jĂ”udluse 0-ni. TimescaleDB vĂ”imaldab tĂ”husalt sisestada ‘inserts’ ĂŒkskĂ”ik millise andmehulgaga.

Installeerimine

TimescaleDB installimine on piisavalt lihtne kĂ”igi paketide jaoks. Üksikasjad on dokumentatsioonis kĂ”ik on hoolikalt dokumenteeritud — see sĂ”ltub ametlikest PostgreSQL paketidest. TimescaleDB-d saab ka kĂ€sitsi koguda ja kompileerida.

Zabbixi andmete baasi jaoks aktiviseerime lihtsalt laiendi:

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

Te aktiveerite laiendi ja loote selle Zabbixi andmete baasile. Viimane samm on hĂŒpertableti loomine.

Ajaloo tabelite migratsioon TimescaleDB-sse

Selleks on spetsiaalne funktsioon 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

Funktsioonil on kolm parameetrit. Esimene — tabel andmete baasis, mille jaoks tuleb hĂŒpertablett luua. Teine — vĂ€li, mille pĂ”hjal tuleb luua chunk_time_interval — partitsioonide chunkide intervall, mida kasutada. Minu juhul on intervall ĂŒks pĂ€ev — 86 400.

Kolmas parameeter — andmed_migreerida. Kui seadistada true, siis kĂ”ik praegused andmed kantakse ĂŒle ettevalmistatud chunk'idesse. Olen ise kasutanud andmed_migreerida. Mul oli umbes 1 TB, mis vĂ”ttis rohkem kui tunni. Isegi mingites testimiste puhul kustutasin ma valikulised ajaloolised andmed sĂŒmbolitest, et neid mitte ĂŒle kanda.

Viimane samm — KUUDA: db_extension installime timescaledb, et andmebaas mĂ”istaks, et see laiendus on olemas. Zabbix aktiveerib selle ja kasutab Ă”igesti sĂŒntaksit ja pĂ€ringuid juba andmebaasi — funktsioone, mis on vajalikud TimescaleDB jaoks.

Riistvara konfiguratsioon

Kasutasin kahte serverit. Esimene — VMware masin. See on piisavalt vĂ€ike: 20 protsessorit IntelÂź XeonÂź CPU E5-2630 v 4 @ 2.20GHz, 16 GB RAM ja 200 GB SSD-disk.

Installeerisin selle peale PostgreSQL 10.8 koos Debian 10.8-1.pgdg90+1 ja failisĂŒsteemiga xfs. KĂ”ik oli minimaalne seadistatud, et kasutada just seda andmebaasi, vĂ€lja arvatud see, mida kasutab Zabbix ise.

Sama masin kÀitas Zabbix-serveri, PostgreSQL-i ja koormuse agente. Mul oli 50 aktiivset agenti, kes kasutasid LoadableModule, et vÀga kiiresti genereerida erinevaid tulemusi: numbreid, stringe. TÀitsin andmebaasi suure hulga andmetega.

Algne konfiguratsioon sisaldas 5 000 elementi iga hosti kohta. Peaaegu iga element sisaldas kĂ€ivitajat, et see oleks sarnane reaalsetele installatsioonidele. MĂ”nel juhul oli rohkem kui ĂŒks kĂ€ivitaja. Ühe vĂ”rgu sĂ”lme kohta tuli 3 000–7 000 kĂ€ivitatavat.

Andmeelementide vĂ€rskendamise intervall on 4–7 sekundit. Koormust reguleerisin sellega, et kasutasin mitte ainult 50 agendi, vaid lisasin veel. Samuti reguleerisin andmeelementide abil dĂŒnaamiliselt koormust ja vĂ€hendasin vĂ€rskendamise intervalli 4 sekundini.

PostgreSQL. 35 000 nvps

Esimene kĂ€ivitus sellel riistvaral oli puhtal PostgreSQL-il – 35 000 vÀÀrtust sekundis. Nagu nĂ€ha, andmete sisestamine vĂ”tab murdosa sekundist – kĂ”ik toimib hĂ€sti ja kiiresti. Ainus probleem on see, et 200 GB SSD-disk tĂ€itub kiiresti.

KÔrge jÔudluse ja kohandatud partitsioneerimisega: Zabbix koos TimescaleDB toega

See on Zabbixi standardne jĂ”udlusjuhtpaneel — serverite jaoks.

KÔrge jÔudluse ja kohandatud partitsioneerimisega: Zabbix koos TimescaleDB toega

Esimene sinine diagramm nĂ€itab vÀÀrtuste arvu sekundis. Teine diagramm paremal poolel nĂ€itab kogumise protsesside koormust. Kolmas diagramm – sisemiste kogumise protsesside koormus: ajaloo sĂŒnkroniseerijad ja Housekeeper, mis siin töötas piisavalt kaua.

Neljas graafik nĂ€itab HistoryCache'i kasutust. See on vahemĂ€lu enne andmebaasi sisestamist. Roheline viies graafik nĂ€itab ValueCache'i kasutust, st kui palju ValueCache'i hitte aktiveerijate jaoks — see on mitu tuhat vÀÀrtust sekundis.

PostgreSQL. 50 000 nvps

Siis suurendasin koormust kuni 50 000 vÀÀrtuseni sekundis samal riistvaral.

KÔrge jÔudluse ja kohandatud partitsioneerimisega: Zabbix koos TimescaleDB toega

Housekeeper'i laadimisel sisestati 10 000 vÀÀrtust 2-3 sekundiga.

KÔrge jÔudluse ja kohandatud partitsioneerimisega: Zabbix koos TimescaleDB toega
Housekeeper hakkab juba tööle segama.

Kolmandalt graafikult on nĂ€ha, et ĂŒldiselt on trapperite ja ajaloosĂŒnkroniseerijate koormus veel 60% tasemel. Neljandal graafikul tĂ€itub HistoryCache Housekeeper'i töö ajal juba piisavalt aktiivselt. See on tĂ€itunud 20% — umbes 0,5 GB.

PostgreSQL. 80 000 nvps

SeejÀrel suurendasin koormust kuni 80 000 vÀÀrtuseni sekundis. See on umbes 400 000 andmeelementi ja 280 000 aktiveerijat.

KÔrge jÔudluse ja kohandatud partitsioneerimisega: Zabbix koos TimescaleDB toega
KolmekĂŒmne ajaloosĂŒnkroniseerija koormus on juba piisavalt kĂ”rge.

Suurendasin ka erinevaid parameetreid: ajaloosĂŒnkroniseerijad, vahemĂ€lud.

KÔrge jÔudluse ja kohandatud partitsioneerimisega: Zabbix koos TimescaleDB toega

Minu riistvaral suurenes ajaloosĂŒnkroniseerijate koormus maksimumini. HistoryCache tĂ€itus kiiresti andmetega — vahemĂ€llu kogunesid andmed töötlemiseks.

Kogu selle aja olen jĂ€lginud, kuidas protsessor, mĂ€lu ja sĂŒsteemi teised parameetrid töötavad, ja leidsin, et kettariski kasutus oli maksimaalne.

KÔrge jÔudluse ja kohandatud partitsioneerimisega: Zabbix koos TimescaleDB toega

Olen saavutanud ketta maksimaalsete vÔimaluste kasutamise selle riistvara ja selle virtuaalmasina puhul. Sellise intensiivsusega hakkas PostgreSQL andmeid piisavalt aktiivselt kustutama ja ketas ei jÔudnud enam kirjutada ega lugeda.

Teine server

VĂ”tsin teise serveri, millel oli juba 48 protsessorit ja 128 GB mĂ€lu. HÀÀlestasin selle — paigaldasin 60 history syncer'i ja saavutasin rahuldava töökiirus.

KÔrge jÔudluse ja kohandatud partitsioneerimisega: Zabbix koos TimescaleDB toega

Tegelikult on see juba jÔudluse piir, kus on vaja midagi ette vÔtta.

TimescaleDB. 80 000 nvps

Minu pĂ”hieesmĂ€rk on testida TimescaleDB vĂ”imekust Zabbix'i koormuse all. 80 tuhat vÀÀrtust sekundis — see on palju, mÔÔtmisfrekvents (vĂ€lja arvatud Yandex, loomulikult) ja ĂŒsna suur 'setup'.

KÔrge jÔudluse ja kohandatud partitsioneerimisega: Zabbix koos TimescaleDB toega

Igal graafikul on auk — see on just andmete migratsioon. PĂ€rast auke Zabbix-serveris muutus history syncer'i koormusprofiil vĂ€ga oluliselt — langes kolmekordseks.

TimescaleDB vÔimaldab andmeid sisestada peaaegu 3 korda kiiremini ja kasutada vÀhem HistoryCache'i.

Seega, andmed tarnitakse teile Ôigeaegselt.

TimescaleDB. 120 000 nvps

Siis suurendasin andmeelementide arvu 500 tuhandele. Peamine ĂŒlesanne oli testida TimescaleDB vĂ”imeid — sain arvutatud vÀÀrtuseks 125 tuhat vÀÀrtust sekundis.

KÔrge jÔudluse ja kohandatud partitsioneerimisega: Zabbix koos TimescaleDB toega

See on tööalune 'setup', mis suudab pikka aega töötada. Kuid kuna mu kettaruum oli vaid 1,5 TB, tÀitsin selle paaripÀeva jooksul.

KÔrge jÔudluse ja kohandatud partitsioneerimisega: Zabbix koos TimescaleDB toega

KÔige olulisem on, et sel ajal loodi ka uusi TimescaleDB partitsioone.

Sellel on jĂ”udlusele tĂ€ielik mĂ”ju. Kui nĂ€iteks MySQL-is luuakse partitsioone, on olukord hoopis teine. Tavaliselt toimub see öösel, kuna see blokeerib ĂŒldiseid sisestusi, töötlemist tabelitega ja vĂ”ib pĂ”hjustada teenuse halvenemist. TimescaleDB puhul ei ole seda.

NĂ€iteks nĂ€itan ĂŒht graafikut paljusid community-st. Pildil on lisatud TimescaleDB, tĂ€nu millele CPU io.weighti kasutamine langes. Ka sisemiste protsesside elementide kasutamine vĂ€henes. Ja see on tavaline virtuaalmasin tavalistel ketastel, mitte SSD-del.

KÔrge jÔudluse ja kohandatud partitsioneerimisega: Zabbix koos TimescaleDB toega

JĂ€reldused

TimescaleDB on hea lahendus vÀikestele 'setup'idele., mis nad sÔltuvad ketta jÔudlusest. See vÔimaldab teil kenasti edasi töötada, kuni andmebaasi migreerimine kiiremale riistvarale on lÔpule viidud.

TimescaleDB on lihtne seadistada, pakub jÔudluse kasvu ja töötab hÀsti Zabbixi ning omab PostgreSQL-iga vÔrreldes eeliseid.

Kui kasutate PostgreSQL-i ega plaani seda muuta, soovitan kasutada PostgreSQL-i koos TimescaleDB laiendiga Zabbixiga. See lahendus töötab tĂ”husalt kuni keskmiste „seadete” korral.

Kui rÀÀgime „kĂ”rgest jĂ”udlusest”, siis peame silmas HighLoad++. Ootamine, et tutvuda tehnoloogiate ja praktikatega, mis vĂ”imaldab teenustel teenindada miljoneid kasutajaid, ei vĂ”ta kaua aega. Loetelu ettekandeid 7. ja 8. novembri jaoks oleme juba koostanud, kuid kohtumisi saab veel pakkuda.

Liituge meie uudiskirjaga ja telegram, kus jagame infot tulevase konverentsi kohta ning saate teada, kuidas maksimaalselt kasu saada.

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster