Princeps effectus et indigena partitiones: Zabbix cum TimescaleDB subsidium

Zabbix ratio magna est. Sicut quaelibet alia ratio, tria principalia problemata omnium systematum vigilantia respicit: notitias colligendas et processus, historiam condensam et purgandam.

Gradus accipiendi, processus ac notandi data temporis capiendi. Non multum, sed magna ratio hoc in magnas moras provenire potest. Quaestio reposita est notitia accessus exitus. Adhibentur ad relationes, compescit et triggers. Latentiae in notitia accessus etiam dapibus consequat. Cum database crescunt, notitia impertinens deleri debet. Removere operatio difficilis est quae nonnullas facultates exedit.

Princeps effectus et indigena partitiones: Zabbix cum TimescaleDB subsidium

Problemata morarum in collectione et repositione in Zabbix solvuntur per caching: plura genera cellarum, in datorum reclusionibus. Ad tertiam quaestionem solvendam, caching non convenit, itaque Zabbix usus TimescaleDB. Dicet tibi Andreas Gushchin - technical suscipio engineer Zabbix SIA. Andrey Zabbix plus quam 6 annos favens fuit et experientia directa cum effectu.

Quomodo opus TimescaleDB, quid perficiendi potest dare comparari regulari PostgreSQL? Quas partes agit Zabbix fabula pro datorum TimescaleDB? Quomodo incipias a scabere et quomodo migrare ex PostgreSQL et quae figura melius habet effectum? De his omnibus sub sectis.

Productivity Provocationes

Omnis ratio magna magna provocationes specificas perficiendi respicit. De tribus illis loquar: notitia collectionis et processus, repono, et historiae defensionem.

Ieiunium notitia collectionis et processus. Systema vigilantia bona cito omnia notitias recipere debet atque eam secundum expressiones trigger expressiones - secundum eius normas. Post dispensando, ratio etiam celeriter hanc notitiam in datorum usu postea conservare debet.

Reposita historia. Ratio vigilantia bona historiam datorum condat et facilem aditum metricis praebeat. Historia opus est utendum in relationibus, graphis, triggers, liminibus, et calculi notitiarum rerum intenti.

Historiam defensionem. Interdum dies venit cum metri copia non opus est. Cur notitias desideras quae ante 5 annos, mensem vel duos collectae sunt: ​​nonnullae nodi deletae sunt, aliquae catervae vel metricae non amplius necessariae sunt, quia iam non sunt datae nec amplius collectae. Bona magna ratio historica notitias historicas condere debet et eam subinde delere ut datorum non crescat.

Emundatio in notitia vetusta est exitus criticus qui effectus database valde impactus est.

Caching in Zabbix

In Zabbix, prima et secunda vocat caching solvuntur usura. RAM adhibetur ad colligendas et processus datas. Pro repositione - historia in triggers, graphis et calculata notitia elementorum. In parte datorum caching nonnulla est pro lectionibus fundamentalibus, exempli gratia, graphi.

Caching in parte ipsius servientis Zabbix est;

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

NUN scrutemur in detail.

ConfigurationCache

Hoc est principale cache ubi condimus metricas, hostias, datas res, triggers - omnia quae opus sunt praeprocessione et pro notitia collectionis.

Princeps effectus et indigena partitiones: Zabbix cum TimescaleDB subsidium

Haec omnia in Configuratione Cache condita sunt ut non necessarias interrogationes creandi in database. Post initium server, hunc cella renovamus, figuras creamus et periodice renovamus.

Notitia collectio

Tabula plane magna est, sed summa in eo est fraudantes. Varii sunt "pollones" - processuum conventus. Sunt responsabiles diversorum generum congregationis: notitias per SNMP, IPMI colligunt, omniaque ad PreProcessionem transferunt.

Princeps effectus et indigena partitiones: Zabbix cum TimescaleDB subsidiumDelineantur aerarii aerarii.

Zabbix rerum aggregationem computavit quae necessaria sunt ad checks aggregatum. Si eas habemus, notitias illis directe a ValueCache afferimus.

PreProcessing HistoryCache

Omnes collectores ConfigurationCache utuntur ad jobs recipiendos. Deinde eas ad PreProcessionem transferunt.

Princeps effectus et indigena partitiones: Zabbix cum TimescaleDB subsidium

PreProcessing ConfigurationCache utitur ad gradus PreProcessing recipiendos. Haec notitia varie procedit.

Post dispensando data utens PreProcessing, servamus in HistoryCache ad expediendas. Hic terminatur notitia collectionis et ad processum principalem in Zabbix transigimus. historia syncercum sit architectonica monolithica.

Nota: PreProcessing operatio admodum difficilis est. Cum v 4.2 commota est in procuratorem. Si Zabbix amplissimum numerum elementorum et collectionem frequentiam notitiarum habes, tunc hoc opus multo facilius efficit.

ValueCache, historia & trends cache

Syncer historia principalis processus est qui atomice procedit singula elementa, id est unumquemque valorem.

Syncer historica valores ex History Cache accipit et configurationem compescit pro calculis triggers coram. Si sunt, reputet.

Syncer historia eventum gignit, propagationem ad summas faciendas, si ex configuratione requiruntur, ac monumenta. Si triggers pro processui subsequenti sunt, hunc valorem in ValueCache reponit ut non accedat ad tabulam historicam. Hoc est quomodo ValueCache impleatur notitia quae ad triggers et calculata elementa computare necesse est.

Syncer historia datorum datorum omnia scribit, et ad orbem scribit. Hic desinit processus processus.

Princeps effectus et indigena partitiones: Zabbix cum TimescaleDB subsidium

Caching in database

In parte datorum variae sunt cella cum graphas vel relationes de eventis inspicere vis:

  • Innodb_buffer_pool ad MySQL latus;
  • shared_buffers ad PostgreSQL latus;
  • effective_cache_size de oraculo parte;
  • shared_pool in parte DB2.

Multae aliae sunt cella, sed hae praecipuae omnium datorum sunt. Permittunt te in RAM reponere notitias quae saepe pro quaestionibus necessariae sunt. Suas technologias ad hoc habent.

Database perficientur est critica

Zabbix servo constanter data et scribit eam colligit. Cum restarted, etiam ex historia legit ut ValueCache impleat. Utitur scriptis et tradit Zabbix APIquae in interface telae posita est. Zabbix API accessiones datorum datorum et notitias necessarias reddit pro graphis, relationibus, eventis indices et quaestiones recentissimas.

Princeps effectus et indigena partitiones: Zabbix cum TimescaleDB subsidium

Nam visualization - grafana. Haec solutio vulgaris apud nostros usores est. Petitiones directe mittere potest per API Zabbix et ad datorum, et certam aemulationem pro notitia accipienda creat. Ideo pulchrius et melius incedit in database quod opus est ut par celeritati proventuum et probatio fiat.

PROMUS

Tertia provocatio in Zabbix perficiendi est historia purgandi utens Housekeeper. Omnes occasus sequitur - elementorum notitias indicant quam longum est dynamicos mutationum in diebus reponere.

TrendsCache in musca computamus. Cum notitia advenit, illud una hora aggregat et in tabulis pro dynamicis mutationibus inclinatis notamus.

Pupulus incipit et delet informationes datorum uti consueto "eligit". Id non semper est efficax, ut ex graphis internorum processuum perficiendis videri potest.

Princeps effectus et indigena partitiones: Zabbix cum TimescaleDB subsidium

In grapho rubro indicat syncer Historiam constanter occupatam esse. Aliquam lacinia purus in summo hospitio est, quod perpetuo currit. Exspectat datorum omnes ordines quos definivit delere.

Quando tu disable Housekeeper? Exempli gratia, "Item ID" est et ultimum 5 milium ordinum intra certum tempus delere debes. Nempe hoc fit index. Plerumque autem dataset maxima est, et adhuc ex disco datorum legit et in cella ponit. Haec operatio datorum semper pretiosa est et, secundum magnitudinem datorum, ad difficultates perficiendas ducere potest.

Princeps effectus et indigena partitiones: Zabbix cum TimescaleDB subsidium

Facilis est vilicus inactivandi. In interreti interretiali collocatio in "Administration general" pro hospitio exsistit. Domum internam inactivare debemus pro historiae trend internae servare et eam non amplius administrare.

Domus custodis aversa est, graphae exaequatae sunt - quae problemata in hoc casu esse potuerunt et quid adiuvare potest ad tertiam provocationem perficiendam solvere?

Partiare - partitionibus vel partitionibus

De more, partitiones inter singulas databases relativas quas enumeravi modo configuratur. Quisque suam technologiam habet, sed sunt similes in genere. Novam partitionem creando saepe in certas difficultates ducit.

Typice partitiones configurantur secundum "setupum" - moles notitiarum quae in uno die creantur. Plerumque in uno die Partitio editur, hoc est minimum. Pro trends novae batch - 1 mensis.

Valores mutare possunt si "setup" valde magna est. Si parvum "setup" usque ad 5 nvps (per secundo valores novos) medius est ab 000 usque ad 5, maior erit supra 000 nvps. Hae sunt magnae et amplissimae officinae quae accuratam configurationem datorum requirunt.

In amplissimis installationibus non bene sit tempus unius diei. Vidi MySQL partitiones 40 GB vel per diem amplius. Haec est maxima copia notitiarum quae difficultates reducendae et necessitates causare possunt.

Quid dat Partitiones?

Partiare tabulae. Saepe hae fasciculi in disco separati sunt. Investigationis consilium unam partitionem melius eligit. Solet partitionibus a range adhibetur - hoc quoque verum est pro Zabbix. "Indicium" ibi utimur - tempore ab initio aevi. Isti sunt ordinarii numeri apud nos. Principium finemque diei constituis — haec est partitio.

Velox remotionem - DELETE. Unus fasciculus/subtilis est electus, potius quam versuum ad deletionem.

Signanter accelerat notitia retrieval SELECT — Utitur una vel pluribus partitionibus, quam tota tabula. Si accessus notitiarum quae biduo nata est, e celerius datorum recuperatur quia tantum opus est ut unum fasciculum onerare in cella et illam remittere, non magnam mensam.

Saepe multae databases etiam acceleratae sunt INSERT — insertiones in tabulam puerilem.

TimescaleDB

Ad v 4.2, animum ad TimescaleDB. Haec extensio est pro PostgreSQL cum interface indigena. Extensio efficaciter operatur cum temporis seriei notitia, sine amissione databases relationis beneficia. TimescaleDB etiam partitiones automatice.

TimescaleDB habet conceptum hypertable (hypertable) quod tu creas. Continet chunks — Partitiones. Chunks automatice fragmenta hypertables tractata sunt quae alia fragmenta non tangunt. Quisque FRUSTUM tempus suum habet.

Princeps effectus et indigena partitiones: Zabbix cum TimescaleDB subsidium

TimescaleDB nobis PostgreSQL

TimescaleDB operatur vere efficaciter. Fabricatores extensionis affirmant se rectiore interrogatione algorithmum uti processus, nominatim inserts . Ut amplitudo dataset inserta crescit, algorithmus constantem observantiam obtinet.

Princeps effectus et indigena partitiones: Zabbix cum TimescaleDB subsidium

Post 200 miliones ordines, PostgreSQL signanter incipit plerumque et perficiendi amittit 0. TimescaleDB permittit te efficaciter inserere "insers" pro qualibet copia notitiarum.

occasum

Installing TimescaleDB satis facile est quavis sarcina. IN' documentum omnia singillatim descripta sunt - pendet ex fasciculis officialium PostgreSQL. TimescaleDB etiam manually aedificari et compilari potest.

Pro database Zabbix simpliciter extensionem excitamus:

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

Tu excitant extension et crea pro Zabbix database. Ultimus gradus est creare hypertable.

Historiae tabulae migrantes ad TimescaleDB

Est munus speciale pro hoc 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

Munus tres parametri habet. Primis - mensa in databasepropter quod debes facere hypertable. Secundus - agrisecundum quod debes creare chunk_time_interval — intervallum chunks partitionis utendum. In casu meo, intervallum est dies unus - 86.

Tertius parameter - migrate_data. Si posuistis truetunc omnis notitia currentis ad chunkos praecreatos transfertur. Ego autem ipse migrate_data. Habui de 1 TB, quod horam occupavit. Aliquando etiam, in probatione, notitias historicas characterum specierum delevi, quae ad reposita non requirebantur, ne eas transferrem.

Novissimus gradus - UPDATE: apud db_extension put timescaledbut intelligat datorum extensionem hanc existere. Zabbix eam operatur et recte utitur syntaxi et quaestionibus ad datorum - iis notis quae TimescaleDB necessaria sunt.

Hardware configuratione

Servientibus duobus usus sum. Primis - VMware apparatus. Res admodum parva est: 20 Intel® Xeon® CPU E5-2630 v 4 @2.20 GHz processors, 16 GB ipsius RAM et 200 GB SSD.

PostgreSQL 10.8 institui in ea cum Debian 10.8-1.pgdg90+1 OS et xfs ratio fasciculi. Omnia minimo conformabam ut hoc database particulari uteretur, minus eo quod ipsa Zabbix utetur.

In eadem machina erat servo Zabbix, PostgreSQL and onus agentium. Habui L agentium qui erant utens LoadableModuleut celerrime diversas eventus generant: numeros, chordas. Ego implevi database cum multa data.

Configuratione initio continebat 5 elementa data per exercitum. Fere omne elementum felis continebat ut similis officinae realis redderet. In interdum felis quis quam dictum aliquam. Pro uno network nodi erant 3-000 triggers.

Data Item Update Intervallum 4-7 seconds. Ipsam sarcinam egi utendo non solum 50 agentibus, sed pluribus addendo. Etiam elementis notitiis utens, onus alacriter accommodavi ac renovationem intervallum ad 4 annos redegi.

PostgreSQL. 35 nvps

Meum primum currendum est in hac ferraria in puro PostgreSQL - 35 milia valorum secundo. Ut videre potes, data inserendo fractiones secundae sumit - omnia bona sunt et ieiunant. Sola res est quod 200 GB orbis SSD cito implet.

Princeps effectus et indigena partitiones: Zabbix cum TimescaleDB subsidium

Hoc signum est Zabbix servo ashboardday perficiendi.

Princeps effectus et indigena partitiones: Zabbix cum TimescaleDB subsidium

Prima graphia caerulea est numerus valorum per alterum. Secunda graphi dextra est oneratio processuum aedificandi. Tertium processuum aedificandi internam onerantium est: historia synceri et aedificiorum, quae hic per aliquod tempus currit.

Quartum graphum ostendit Latinitatis Cache usus. Hoc quiddam est antequam in datorum inseratur. Quinta graph viridis ostendit ValueCache usum, hoc est, quot ValueCache ferit pro triggers - hoc est plura milia valorum secundo.

PostgreSQL. 50 nvps

Tum onus ad 50 milia valorum secundo in eisdem ferramentis auxi.

Princeps effectus et indigena partitiones: Zabbix cum TimescaleDB subsidium

Cum oneratisque ab hospitio meo, inserendo 10 milia valorum 2-3 secundorum sumpsit.

Princeps effectus et indigena partitiones: Zabbix cum TimescaleDB subsidium
Pupulus iam incepit impedire labori.

Tertium graphium ostendit, generatim, onus frandi et syncheri historiarum LX% adhuc esse. In quarta graphe, Latinitatis Cache iam incepit ut satis strenue impleat in operando hospitii. Plenum est 60%, quod est circiter 20 GB.

PostgreSQL. 80 nvps

Tum onus auxi ad LXXX milia valorum secundo. Hoc est circiter 80 milia elementorum data et CCLXXX milia triggerum.

Princeps effectus et indigena partitiones: Zabbix cum TimescaleDB subsidium
Pretium oneratum triginta syncherorum historiae iam satis altum est.

Etiam varios parametri auxit: historiae synceros, thesauros.

Princeps effectus et indigena partitiones: Zabbix cum TimescaleDB subsidium

Meis ferramentis, historiae syncerum oneratio ad maximum aucta est. Historia Cache celeriter impleta cum notitia - notitia processus in quiddam coacervatum.

Hoc tempore observavi quomodo processus, RAM et aliae parametri systematis adhibitae sunt, et inventa est discus usus maximus suo tempore.

Princeps effectus et indigena partitiones: Zabbix cum TimescaleDB subsidium

Adepti sum usus maxime orbis elit de hoc ferramento et de hac machina virtuali. Tali intensio, PostgreSQL notitia satis active rubere incepit, et orbis iam tempus scribere ac legere non erat.

Secundus servo

Alterum tuli servo, quod iam 48 processores et 128 GB of RAM habui. Ego modulatus est - eam LX historiae syncer, ac gratum perficientur.

Princeps effectus et indigena partitiones: Zabbix cum TimescaleDB subsidium

Reapse hic iam modus est productivitatis ubi aliquid faciendum est.

TimescaleDB. 80 nvps

Praecipuum opus meum est temptare facultates TimescaleDB contra Zabbixum onere. 80 milia valorum secundo per multum est, frequentia metrica colligendi (excepto Yandex, utique) et maiusculae "setup".

Princeps effectus et indigena partitiones: Zabbix cum TimescaleDB subsidium

In omni graphe est intinge - haec est prorsus notitia migrationis. Postquam in Servo Zabbix defectis, syncer loading figura historiae multum mutata est - ter omissa est.

TimescaleDB permittit te ut notitias 3 fere ocius inserere et minus History Cache utere.

Proinde opportune data recipies.

TimescaleDB. 120 nvps

Deinde numerum elementorum ad 500 milia auxit. Praecipuum opus fuit ut facultates TimescaleDB experirentur - valorem computatum 125 milium secundorum percepi.

Princeps effectus et indigena partitiones: Zabbix cum TimescaleDB subsidium

Hoc est opus "setup" quod diu operari potest. Sed quia orbis meus erat tantum 1,5 TB, illud in biduo implevi.

Princeps effectus et indigena partitiones: Zabbix cum TimescaleDB subsidium

Maxime res est, quod eodem tempore novae TimescaleDB partitiones creatae sunt.

Hoc omnino inexplicabile. Cum partitiones in MySQL creantur, verbi causa, omnia alia sunt. Quod plerumque noctu accidit, quod insertionem communem impedit, cum tabulis operari et servitutem deiectionis creare potest. Hoc non est apud TimescaleDB.

Exemplum, unum graphum e multis in communitate demonstrabo. In pictura TimescaleDB datur, propter quod onus utens io.weight in processu decidit. Usus elementorum internorum etiam minuitur. Haec autem machina virtualis ordinaria est in orbes ordinarios subcinericios, non SSD.

Princeps effectus et indigena partitiones: Zabbix cum TimescaleDB subsidium

Inventiones

TimescaleDB bona solutio pro parvis "setup" estqui impulsum orbis effectus. Licebit tibi bene operando perseverare donec database ad hardware quam celerrime migraverit.

TimescaleDB facile est configurare, lucra perficiendi dat, cum Zabbix bene operatur habet commoda in PostgreSQL.

Si PostgreSQL uteris nec consilium mutare, commendo uti PostgreSQL cum extensione TimescaleDB in conjunctione cum Zabbix. Haec solutio efficaciter operatur usque ad medium "setupum".

Cum dicimus "princeps perficientur" intelligimus HighLoad ++. Non diu exspectes ut discas de technologiae et exercitiis quae perficiunt officia decies usorum inservire. List tradit ad 7 novembris et 8 iam compilavit, hic autem meetups plura suggeri possunt.

Subscribe to our newsletter и telegraphumin quibus liniamenta venturi colloquii patefacimus et ex- pedit ut plurimum ex eo.

Source: www.habr.com

Add a comment