Metrica reposita: quomodo switchedimus ex Graphite+Wisper ad Graphite+ClickHouse

Hi omnes! In his tandem articulum Scripseram de vigilantia modularis ordinandi ratio architecturae microserviae. Nihil obstat, consilium nostrum constanter crescit, et sic est conditus numerus metricus. Quomodo transitum e Graphite+Whisper ad Graphite+ClickHouse sub alto onere condi- tionis constituimus, lege de exspectatione ex eo et de eventibus migrationis sub inciso.

Metrica reposita: quomodo switchedimus ex Graphite+Wisper ad Graphite+ClickHouse

Priusquam dicam tibi quomodo constituerimus transitum e metricis accommodandis in Graphite+Wisper ad Graphite+ClickHouse, vellem informationes dare de causis faciendi talem decisionem et incommoda Susurri quae diu viximus.

Graphite+Wisper problems

1. High onus in orbe subsystem

Tempore transitus, circiter 1.5 miliones metri per minutas ad nos pervenerunt. Cum tali fluxu, orbis usus in servientibus erat ~30%. In universum, hoc satis acceptum fuit - omnia stabiliter operata sunt, celeriter scripta sunt, celeriter perlecta... Donec unum iunctum evolutionis novum plumam evolvit ac nobis per minutas decies centena milia mittere coepit. Id est cum orbis subsystem constringitur et C% utendo vidimus. Celeriter quaestio solvitur, sed residuum mansit.

2. Inopia replicationis et constantiae

Verisimile est, sicut omnes qui Graphite+Wisper utitur/, eundem metri rivum in plures graphites ministrantes simul effudimus ad tolerantiam culpae faciendi. Et nullae speciales quaestiones cum hoc erant - usque ad momentum cum aliquis ex ministris aliqua de causa ingruat. Aliquando sat cito lapsum ministrare potuimus colligere, et carbo-c-Nullam metricam e cella in illud onerare potuimus, interdum autem non. Et tunc erat lacuna metrica, quam nos rsync implevimus. Longa erat ratio. Sola gratia salutaris hoc rarissime accidisse. Etiam periodice metri speciem temere cepimus et cum aliis eiusdem generis in vicinis nodis botri comparavimus. Circiter 5% casuum varia bona diversa erant, quae non valde gauisi sumus.

3. magna vestigium

Cum scribemus in Graphite non solum infrastructuram, sed etiam res metricas (et nunc etiam metricas ex Kubernetes), saepius condicionem obtinemus in qua metrica pauca tantum bona continet, ac fasciculus .wsp ratione omnium retentione creatur. periodus, et sumit spatium prae-partitum, quod nobis erat ~2MB. Difficultas amplius aggravatur eo quod multa similia apparent in tempore et cum aedificaretur rumores in eis, puncta vacua legens multum temporis et opes accipit.

Statim notare velim problemata supradicta tractari posse variis modis et variis efficaciae gradibus, sed quo plura inceptas recipere, eo magis peiorantur.

Omnibus supradictis (inspecta priore vasa) , atque in metri receptarum numero continuum aucta, desiderium omnes metri ad tabularium 30 secundis intervallum transferendi. (usque ad 10 seconds si opus est), Graphite+ClickHouse experiri decrevimus ut jocus ad Susurra promitteret.

Graphite+ClickHouse. Exspectationes

Plures conventus guys ex Yandex visitatis, lectis duos articulos in Habre, peractis documentis et sanae partes inventae pro ligatura pressione sub Graphite, agere decrevimus!

Velim ad haec:

  • reducere disci subsystem utendo ab 30% ad 5%;
  • absumunt spatium occupatum ab 1TB ad 100GB;
  • in servo 100 miliones metri minutatim recipere possint;
  • notitia replicationis et culpae tolerantiae de arca;
  • in hoc incepto per annum noli sedere et transitum intra opportunum tempus fabricare;
  • sine switch downtime.

Ambitiosa recte?

Graphite+ClickHouse. Components

Ad data per graphiten protocollum recipiendum et postea in litteris strepita, delegi carbonis clickhouse (golang).

Novissima emissio ClickHouse, versio stabilis 1.1.54253, electa est ut datorum seriem temporis accommodandi. Problemata erant cum eo cooperante: mons errorum in ligna infusus, et quid de illis ageret non plane liquebat. In discussione Romanus Lomonosov (auctor carbonis-clickhouse, graphite-clickhouse et multi, plura) maior unus electus est dimittis 1.1.54236. Errores evanuerunt - omnia cum crepitu laborare coepit.

Electus legere notitia ex ClickHouse graphite-сlickhouse (golang). Ut API pro Graphite carbonapi (golang). ClickHouse erat inter tables replicationem ad organize zookeeper. Ad metri excitandas, dilectum nostrum relinquentes carbon-c-Nullam (C) (Vide priorem articulum).

Graphite+ClickHouse. Table structure

"graphite" est database in tabulas vigilantias creavimus.

"graphite.metrics" - mensam cum engine ReplicatedReplacingMergeTree (replicatur" ReplaceingMergeTree). Haec tabula nomina metri et semitas illis reponit.

CREATE TABLE graphite.metrics ( Date Date, Level UInt32, Path String, Deleted UInt8, Version UInt32 ) ENGINE = ReplicatedReplacingMergeTree('/clickhouse/tables/replicator/graphite.metrics', β€˜r1’, Date, (Level, Path), 8192, Version);

"graphite.data" - mensam cum ReplicatedGraphiteMergeTree engine (replicated GraphiteMergeTree). Haec mensa thesauris metricis notificat.

CREATE TABLE graphite.data ( Path String, Value Float64, Time UInt32, Date Date, Timestamp UInt32 ) ENGINE = ReplicatedGraphiteMergeTree('/clickhouse/tables/replicator/graphite.data', 'r1', Date, (Path, Time), 8192, 'graphite_rollup')

"graphite.date_metrics" est conditionaliter mensa repleta cum machina ReplicatedReplacingMergeTree. Haec tabula nomina omnium metricorum qui interdiu occurrunt. Rationes suae creationis in sectione describuntur "Quaestiones" in fine hujus articuli.

CREATE MATERIALIZED VIEW graphite.date_metrics ( Path String,  Level UInt32,  Date Date) ENGINE = ReplicatedReplacingMergeTree('/clickhouse/tables/replicator/graphite.date_metrics', 'r1', Date, (Level, Path, Date), 8192) AS SELECT toUInt32(length(splitByChar('.', Path))) AS Level, Date, Path FROM graphite.data

"graphite.data_stat" - mensa repleta secundum conditionem, cum engine ReplicatedAggregatingMergeTree (replicata AggregatingMergeTree). Haec mensa numerum metri advenientis commemorat, usque ad 4 gradus aerarii fractus.

CREATE MATERIALIZED VIEW graphite.data_stat ( Date Date,  Prefix String,  Timestamp UInt32,  Count AggregateFunction(count)) ENGINE = ReplicatedAggregatingMergeTree('/clickhouse/tables/replicator/graphite.data_stat', 'r1', Date, (Timestamp, Prefix), 8192) AS SELECT toStartOfMonth(now()) AS Date, replaceRegexpOne(Path, '^([^.]+.[^.]+.[^.]+).*$', '1') AS Prefix, toUInt32(toStartOfMinute(toDateTime(Timestamp))) AS Timestamp, countState() AS Count FROM graphite.data  GROUP BY Timestamp, Prefix

Graphite+ClickHouse. Component commercium diagram

Metrica reposita: quomodo switchedimus ex Graphite+Wisper ad Graphite+ClickHouse

Graphite+ClickHouse. Data migratio

Sicut ex exspectatione huius instituti meminimus, transitus ad strepita ut sine downtimes esse debet, proinde, utcumque nos totam nostram vigilantiam ratio ad novas tabulas quam luculenter usoribus nostris fieri potest.
Ita fecimus.

  • Regula addita est carboni-c-nullae ut metri additicium rivum ad carbon-clickhouse carbonis unius ex ministris participantibus replicationem tabularum ClickHouse mittat.

  • Scripsimus parvum scriptulum in Pythone, quod, cum bibliotheca susurro-dump utens, omnia .wsp lima ex repositione nostra legebat et hanc datam misit ad carbo-clickhouse suprascriptorum 24 stamina. Numerus valorum metricorum acceptorum in carbon-clickhouse 125 decies / min pervenit, et strepita ne sudorem frangebat.

  • DataSource separatas in Grafana creavimus ad functiones ludificandas in ashboardolis existentes. Indicem functionum quas fuimus notavimus, sed carbonapi non implevimus. Munera haec adiecimus et PRs ad auctores carbonapi (specialis gratiarum) missis.

  • Ad onus legendi mutandum in uncinis librariis, fines e graphite-api (API interface pro Graphite+Wisper) in carbonapi mutavimus.

Graphite+ClickHouse. eventus

  • reduci orbis subsystem utendo ab 30% ad 1%;

    Metrica reposita: quomodo switchedimus ex Graphite+Wisper ad Graphite+ClickHouse

  • redegit spatium occupatum ab 1 TB ad 300 GB;
  • facultas accipiendi centum decies centena millia metri per minutas in calculonis habemus (cacumina tempore migrationis);
  • metrice omnia ad tricesimum secundum intervallum tabularium transferuntur;
  • recepta replicatio et culpae tolerantia;
  • sine switched downtime;
  • Accepit circiter VII septimanas ut omnia perficerent.

Graphite+ClickHouse. Problemata

In nobis erant foveae quaedam. Hoc est quod post transitum invenimus.

  1. ClickHouse ficas in musca non semper relegit, interdum reboianda est. Exempli gratia, in descriptione botri zootoris in config strepita House, non adhibitum est donec cursorium servulus recretus est.
  2. Petitiones ClickHouse magnae non pervenerunt, sic in graphite-clickhouse nexionis chordae nostrae ClickHouse similis hoc:
    url = "http://localhost:8123/?max_query_size=268435456&max_ast_elements=1000000"
  3. ClickHouse satis saepe novas versiones stabilium emissionum emittit, mirationes contineant: cave.
  4. Dynamice creata miliaria in Kubernetes magnum numerum metri cum brevi et temere vita miserunt. Talium metricorum puncta non sunt multa, nec sunt problemata cum spatio. Cum autem quaerit aedificium, ClickHouse ingentem numerum eorundem metricorum e tabula metrica colligit. In 90% casuum nulla data est eis ultra fenestram (24 horae). Sed tempus consumitur inquisitione huius notitiae in tabula "data" et tandem in tempus decurrit. Ad hanc solvendam quaestionem, separatam sententiam ponere coepimus cum informationibus de metricis qui interdiu occurrebant. Cum ergo nuntiationes aedificandi pro vasis dynamice creatis, eas solum metricas quaerimus, quae intra datam fenestram obviae sunt, et non ad totum tempus, quae constructionem relationum de illis insigniter acceleraverunt. Pro solutione supra scripta collegi graphite-clickhouse (furca)quae includit exsequendum operandi cum tabula date_metrics.

Graphite+ClickHouse. Tags

Cum versione 1.1.0 Graphite officialis factus est auxilium tags. Et actuose cogitamus quid et quomodo facere debeamus ad hoc inceptum graphite+clickhouse acervum sustinendum.

Graphite+ClickHouse. Anomalia detector

Fundata infrastructura supra scripta, exemplar anomaliae detectoris inseruimus et operatur! Sed de eo plura in art.

Scribe, sagittam preme et felix!

Source: www.habr.com