Stóráil méadrachta: conas a d’aistrigh muid ó Graphite+Whisper go Graphite+ClickHouse

Dia duit gach duine! Ina an t-alt deireanach Scríobh mé faoi chóras monatóireachta modúlach a eagrú don ailtireacht microservice. Ní dhéanfaidh aon ní fós, tá ár dtionscadal ag fás i gcónaí, agus mar sin tá líon na méadrachta stóráilte. Mar a d’eagraíomar an t-aistriú ó Graphite+Whisper go Graphite+ClickHouse faoi choinníollacha ualaigh ard, léigh faoi na hionchais uaidh agus faoi thorthaí na himirce faoin gearrtha.

Stóráil méadrachta: conas a d’aistrigh muid ó Graphite+Whisper go Graphite+ClickHouse

Sula n-inseoidh mé duit conas a d’eagraíomar an t-aistriú ó mhéadracht a stóráil in Graphite+Whisper go Graphite+ClickHouse, ba mhaith liom eolas a thabhairt faoi na fáthanna le cinneadh den sórt sin a dhéanamh agus faoi na míbhuntáistí a bhaineann le Whisper a raibh cónaí orainn leis le fada an lá.

Fadhbanna le graifít+cogar

1. Ard-ualach ar an bhfochóras diosca

Ag am an aistrithe, bhí thart ar 1.5 milliún méadracht ag teacht chugainn in aghaidh an nóiméid. Le sreabhadh den sórt sin, ba é ~30% an úsáid diosca ar fhreastalaithe. Go ginearálta, bhí sé seo inghlactha go leor - d'oibrigh gach rud go cobhsaí, scríobhadh go tapa, léigh go tapa... Go dtí gur chuir ceann de na foirne forbartha gné nua i bhfeidhm agus thosaigh sé ag cur 10 milliún méadracht chugainn in aghaidh an nóiméid. Sin nuair a tháinig an fochóras diosca níos doichte, agus chonaiceamar úsáid 100%. Réitíodh an fhadhb go tapa, ach bhí iarmhar fós ann.

2. Easpa macasamhlú agus comhsheasmhachta

Is dócha, cosúil le gach duine a úsáideann / a d'úsáid Graphite+Whisper, doirteamar an sruth céanna méadrachta ar roinnt freastalaithe Graphite ag an am céanna chun lamháltas lochtanna a chruthú. Agus ní raibh aon fadhbanna speisialta leis seo - go dtí an nóiméad nuair a crashed ar cheann de na freastalaithe ar chúis éigin. Uaireanta d'éirigh linn freastalaí tite a phiocadh suas go tapa go leor, agus d'éirigh le carbón-c-relay méadracht a luchtú as a thaisce isteach ann, ach uaireanta ní raibh. Agus ansin bhí poll sa mhéadracht, a líonadh muid le rsync. Bhí an nós imeachta fada go leor. Ba é an t-aon ghrásta coigiltis ná gur fíor-annamh a tharla sé seo. Thógamar sraith randamach méadrach ó am go chéile freisin agus chuireamar i gcomparáid iad le cinn eile den chineál céanna ar nóid chomharsanacha an bhraisle. I thart ar 5% de na cásanna, bhí roinnt luachanna difriúil, rud nach raibh muid an-sásta faoi.

3. Lorg mór

Ós rud é go scríobhann muid i Graphite ní hamháin bonneagar, ach freisin méadracht gnó (agus anois méadracht ó Kubernetes freisin), is minic a fhaigheann muid cás nach bhfuil ach cúpla luach sa mhéadracht, agus cruthaítear an comhad .wsp ag cur san áireamh gach coinneáil. tréimhse sin, agus tógann sé méid spáis réamh-leithroinnte, a bhí ~2MB dúinne. Cuireann an fhadhb níos measa fós toisc go bhfuil go leor comhaid den chineál céanna le feiceáil le himeacht ama, agus nuair a bhíonn tuairiscí á dtógáil orthu, tógann sé go leor ama agus acmhainní a léamh pointí folamh.

Ba mhaith liom a thabhairt faoi deara láithreach gur féidir déileáil leis na fadhbanna a thuairiscítear thuas trí úsáid a bhaint as modhanna éagsúla agus le céimeanna éagsúla éifeachtúlachta, ach dá mhéad sonraí a thosaíonn tú a fháil, is mó a éiríonn siad in olcas.

Tar éis gach ceann de na nithe thuas (ag cur san áireamh an ceann roimhe sin Airteagal), chomh maith le méadú leanúnach ar líon na méadrachta a fuarthas, an fonn chun gach méadracht a aistriú chuig eatramh stórála de 30 soicind. (suas le 10 soicind más gá), bheartaíomar triail a bhaint as Graphite+ClickHouse mar rogha eile a bhfuil gealladh fúthu in ionad Whisper.

Graphite+ClickHouse. Ionchais

Tar éis cuairt a thabhairt ar roinnt cruinnithe de na guys ó Yandex, tar éis a léamh cúpla alt ar Habré, tar éis dúinn dul tríd an doiciméadú agus teacht ar chomhpháirteanna ciallmhar le haghaidh ClickHouse ceangailteach faoi Graphite, shocraigh muid beart a dhéanamh!

Ba mhaith liom na rudaí seo a leanas a fháil:

  • laghdú ar úsáid fochórais diosca ó 30% go 5%;
  • laghdú ar an méid spáis áitithe ó 1TB go 100GB;
  • a bheith in ann 100 milliún méadracht in aghaidh an nóiméid a fháil isteach sa fhreastalaí;
  • macasamhlú sonraí agus lamháltas locht as an mbosca;
  • ná suí ar an tionscadal seo ar feadh bliana agus an t-aistriú a dhéanamh laistigh de fhráma ama réasúnta;
  • lasc gan downtime.

Go leor uaillmhianach, ceart?

Graphite+ClickHouse. Comhpháirteanna

Chun sonraí a fháil tríd an bprótacal Graphite agus ina dhiaidh sin é a thaifeadadh i ClickHouse, roghnaigh mé carbóin-cliceáil (golang).

Roghnaíodh an scaoileadh is déanaí de ClickHouse, leagan cobhsaí 1.1.54253, mar bhunachar sonraí chun sraitheanna ama a stóráil. Bhí fadhbanna ann agus iad ag obair leis: tháinig sliabh earráidí isteach sna logaí, agus ní raibh sé soiléir go hiomlán cad atá le déanamh leo. I bplé le Rómhánach Lomonosov (údar carbon-clickhouse, graphite-clickhouse agus go leor, go leor eile) a roghnaíodh an ceann is sine scaoileadh 1.1.54236. D'imigh na hearráidí - thosaigh gach rud ag obair le bang.

Roghnaithe chun sonraí a léamh ó ClickHouse graifít-сlickhouse (golang). Mar API le haghaidh Graphite - carbónapi (golang). Baineadh úsáid as ClickHouse chun macasamhlú a eagrú idir táblaí zookeeper. Le haghaidh méadracht ródú, d'fhág muid ár beloved carbón-c- sealaíochta (C) (féach an t-alt roimhe seo).

Graphite+ClickHouse. Struchtúr tábla

Is bunachar sonraí é “graifít” a chruthaigh muid le haghaidh táblaí monatóireachta.

“graphite.metrics” - tábla le hinneall ReplicatedReplacingMergeTree (athdhéanta IonadúMergeTree). Stórálann an tábla seo ainmneacha na méadrachta agus na cosáin chucu.

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” - tábla le hinneall ReplicatedGraphiteMergeTree (macasamhlaithe GrafiteMergeTree). Stórálann an tábla seo luachanna méadracha.

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')

Is tábla líonta go coinníollach é “graphite.date_metrics” leis an inneall ReplicatedReplacingMergeTree. Déanann an tábla seo taifead ar ainmneacha na méadrachta ar fad ar thángthas orthu i rith an lae. Tá cur síos ar na cúiseanna lena chruthú sa chuid "Fadhbanna" ag deireadh an ailt seo.

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” - tábla arna líonadh de réir an choinníll, leis an inneall ReplicatedAggregatingMergeTree (athdhéanta ComhiomlánúMergeTree). Taifeadann an tábla seo líon na méadrachta ag teacht isteach, briste síos go 4 leibhéal neadaithe.

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. Léaráid idirghníomhaíochta comhpháirte

Stóráil méadrachta: conas a d’aistrigh muid ó Graphite+Whisper go Graphite+ClickHouse

Graphite+ClickHouse. Aistriú sonraí

Mar is cuimhin linn ó na hionchais ón tionscadal seo, ba cheart go mbeadh an t-aistriú go ClickHouse gan amanna downt; dá réir sin, bhí orainn ár gcóras monatóireachta iomlán a athrú go dtí an stóráil nua ar bhealach chomh trédhearcach agus is féidir dár n-úsáideoirí.
Seo mar a rinneamar é.

  • Tá riail curtha le carbón-c-relay chun sruth breise méadrachta a sheoladh chuig an carbóin-cliceáil ar cheann de na freastalaithe atá rannpháirteach i macasamhlú táblaí ClickHouse.

  • Scríobhamar script bheag i python, a léigh, ag baint úsáide as an leabharlann whisper-dump, gach comhad .wsp ónár stóráil agus sheolamar na sonraí seo chuig an teach cliceáil carbóin thuasluaite i 24 snáithe. Shroich líon na luachanna méadracha glactha i dteach cliceáil carbóin 125 milliún / nóim, agus níor bhris ClickHouse fiú allais.

  • Chruthaíomar Foinse Sonraí ar leith i Grafana chun feidhmeanna a úsáidtear ar na deais atá ann cheana a dhífhabhtú. D’aithníomar liosta feidhmeanna a d’úsáideamar, ach níor cuireadh i bhfeidhm iad i carbonapi. Chuireamar na feidhmeanna seo leis agus chuireamar PR chuig údair carbonapi (buíochas ar leith leo).

  • Chun an t-ualach léitheoireachta a athrú sna socruithe cothromaíochta, d'athraigh muid na críochphointí ó graphite-api (comhéadan API le haghaidh Graphite+Whisper) go carbonapi.

Graphite+ClickHouse. torthaí

  • laghdú ar úsáid fochórais diosca ó 30% go 1%;

    Stóráil méadrachta: conas a d’aistrigh muid ó Graphite+Whisper go Graphite+ClickHouse

  • laghdaigh an méid spáis a bhí á áitiú ó 1 TB go 300 GB;
  • tá an cumas againn 125 milliún méadracht in aghaidh an nóiméid a fháil isteach sa fhreastalaí (buanna ag am an imirce);
  • d'aistrigh sé gach méadracht go dtí eatramh stórála tríocha dó;
  • fuair macasamhlú sonraí agus lamháltas lochtanna;
  • aistrigh gan downtime;
  • Thóg sé thart ar 7 seachtaine gach rud a chríochnú.

Graphite+ClickHouse. Fadhbanna

In ár gcás, bhí roinnt gaistí. Seo an rud a thángamar i ndiaidh an aistrithe.

  1. Ní athléann ClickHouse cumraíochtaí ar an eitilt i gcónaí; uaireanta is gá é a atosú. Mar shampla, i gcás cur síos ar an mbraisle zookeeper sa config ClickHouse, níor úsáideadh é go dtí gur atosaíodh an clickhouse-server.
  2. Ní dhearnadh iarratais mhóra ClickHouse, mar sin i dteach graifíte-cliceáil is é seo an chuma atá ar ár teaghrán ceangail ClickHouse:
    url = "http://localhost:8123/?max_query_size=268435456&max_ast_elements=1000000"
  3. Is minic a eisíonn ClickHouse leaganacha nua d’eisiúintí cobhsaí; d’fhéadfadh go mbeadh iontas orthu: bí cúramach.
  4. Seolann coimeádáin a cruthaíodh go dinimiciúil i kubernetes líon mór méadracht le saolré gearr agus randamach. Níl go leor pointí ann do mhéadracht den sórt sin, agus níl aon fhadhbanna ann le spás. Ach nuair a bhíonn ceisteanna á dtógáil, roghnaíonn ClickHouse líon mór de na méadrachtaí céanna seo ón tábla 'méadracht'. I 90% de na cásanna, níl aon sonraí orthu níos faide ná an fhuinneog (24 uair an chloig). Ach caitear am ag cuardach na sonraí seo sa tábla ‘sonraí’, agus ar deireadh téann sé isteach i teorainn ama. Chun an fhadhb seo a réiteach, thosaigh muid ag coinneáil dearcadh ar leith le heolas ar mhéadracht ar thángthas orthu i rith an lae. Mar sin, agus tuarascálacha (graif) á dtógáil le haghaidh coimeádáin a chruthaítear go dinimiciúil, ní cheistímid ach na méadrachtaí sin ar thángthas orthu laistigh d’fhuinneog ar leith, agus ní ar feadh an ama ar fad, rud a chuir dlús suntasach le tógáil tuarascálacha orthu. Maidir leis an réiteach a thuairiscítear thuas, bhailigh mé graifít-cliceáilte (forc), lena n-áirítear cur i bhfeidhm oibriú leis an tábla date_metrics.

Graphite+ClickHouse. Clibeanna

Le leagan 1.1.0 tháinig Graphite oifigiúil clibeanna tacaíochta. Agus táimid ag smaoineamh go gníomhach ar cad atá le déanamh agus conas a dhéanamh chun tacú leis an tionscnamh seo sa chairn graphite+ clickhouse.

Graphite+ClickHouse. Brathadóir aimhrialtacht

Bunaithe ar an mbonneagar a thuairiscítear thuas, tá fréamhshamhail de bhrathadóir aimhrialtacht curtha i bhfeidhm againn, agus oibríonn sé! Ach níos mó mar gheall air sa chéad alt eile.

Liostáil, brúigh an tsaighead suas agus a bheith sásta!

Foinse: will.com

Add a comment