Thaum lub sijhawm hloov pauv, kwv yees li 1.5 lab metrics tau tuaj txog ntawm peb ib feeb. Nrog xws li qhov ntws, kev siv disk ntawm servers yog ~ 30%. Feem ntau, qhov no tau txais txiaj ntsig zoo - txhua yam ua haujlwm ruaj khov, tau sau sai, nyeem sai sai ... Txog thaum ib pab pawg txhim kho tau nthuav tawm qhov tshiab thiab pib xa peb 10 lab metrics ib feeb. Qhov ntawd yog thaum lub disk subsystem nruj, thiab peb pom 100% kev siv. Qhov teeb meem tau daws sai, tab sis ib qho residue tseem nyob.
2. Tsis muaj replication thiab sib xws
Feem ntau, zoo li txhua tus neeg siv / siv Graphite + ntxhi, peb tau nchuav tib cov kwj ntawm cov ntsuas mus rau ntau lub Graphite servers ib zaug txhawm rau tsim kev ua txhaum cai. Thiab tsis muaj teeb meem tshwj xeeb nrog qhov no - txog thaum lub sijhawm thaum ib tus servers poob rau qee yam. Qee lub sij hawm peb tau tswj xyuas cov neeg rau zaub mov poob sai txaus, thiab carbon-c-relay tau tswj kom thauj cov ntsuas los ntawm nws cov cache rau hauv nws, tab sis qee zaum tsis yog. Thiab ces muaj ib lub qhov nyob rau hauv cov metrics, uas peb sau nrog rsync. Cov txheej txheem tau ntev heev. Qhov kev cawm dim tsuas yog qhov no tshwm sim tsis tshua muaj. Peb kuj tseem niaj hnub coj ib qho kev ntsuas qhov ntsuas thiab muab piv rau lwm tus ntawm tib hom ntawm cov nyob sib ze ntawm pawg. Hauv kwv yees li 5% ntawm cov xwm txheej, ntau qhov txiaj ntsig sib txawv, uas peb tsis zoo siab heev.
3. Loj hneev taw
Txij li thaum peb sau hauv Graphite tsis yog tsuas yog infrastructure, tab sis kuj ua lag luam metrics (thiab tam sim no kuj metrics los ntawm Kubernetes), peb feem ntau tau txais ib qho teeb meem nyob rau hauv uas cov metric muaj tsuas yog ob peb qhov tseem ceeb, thiab cov ntaub ntawv .wsp yog tsim los coj mus rau hauv tus account tag nrho cov tuav. lub sij hawm, thiab yuav siv sij hawm li qhov chaw npaj ua ntej, uas rau peb yog ~ 2MB. Qhov teeb meem yog qhov hnyav ntxiv los ntawm qhov tseeb tias ntau cov ntaub ntawv zoo sib xws tshwm sim dhau sijhawm, thiab thaum tsim cov ntawv ceeb toom rau lawv, nyeem cov ntsiab lus khoob yuav siv sij hawm ntau thiab cov peev txheej.
Kuv xav tam sim ntawd nco ntsoov tias cov teeb meem tau piav qhia saum toj no tuaj yeem daws tau los ntawm kev siv ntau txoj hauv kev thiab nrog ntau qib ntawm kev ua tau zoo, tab sis qhov ntau cov ntaub ntawv koj pib tau txais, qhov ntau lawv ua phem.
Muaj tag nrho cov saum toj no (siv rau hauv tus account yav dhau los lus), nrog rau qhov nce ntxiv ntawm tus naj npawb ntawm cov metrics tau txais, lub siab xav hloov tag nrho cov metrics mus rau lub sijhawm cia ntawm 30 vib nas this. (txog 10 vib nas this yog tias tsim nyog), peb tau txiav txim siab sim Graphite + ClickHouse ua lwm txoj hauv kev rau Whisper.
Graphite + ClickHouse. Kev cia siab
Tau mus xyuas ntau qhov kev sib ntsib ntawm cov txiv neej los ntawm Yandex, tau nyeem ob peb tsab xov xwm ntawm Habre, tau dhau los ntawm cov ntaub ntawv thiab pom cov khoom zoo rau kev khi ClickHouse hauv Graphite, peb txiav txim siab los nqis tes ua!
Kuv xav tau cov hauv qab no:
txo kev siv disk subsystem los ntawm 30% mus rau 5%;
txo qhov chaw nyob ntawm 1TB rau 100GB;
tuaj yeem tau txais 100 lab metrics ib feeb rau hauv lub server;
cov ntaub ntawv replication thiab ua txhaum cai tawm ntawm lub thawv;
tsis txhob zaum ntawm qhov project no rau ib xyoos thiab hloov pauv hauv lub sijhawm tsim nyog;
hloov tsis muaj downtime.
Heev ambition, txoj cai?
Graphite + ClickHouse. Cheebtsam
Txhawm rau tau txais cov ntaub ntawv ntawm Graphite raws tu qauv thiab tom qab ntawd sau nws hauv ClickHouse, kuv xaiv carbon-clickhouse (kawg).
Qhov tseeb tso tawm ntawm ClickHouse, ruaj khov version 1.1.54253, tau raug xaiv los ua cov ntaub ntawv khaws cia lub sijhawm. Muaj teeb meem thaum ua haujlwm nrog nws: lub roob ntawm qhov yuam kev tau nchuav rau hauv cov cav, thiab nws tsis paub meej tias yuav ua li cas rau lawv. Hauv kev sib tham nrog Roman Lomonosov (tus sau ntawm carbon-clickhouse, graphite-clickhouse thiab ntau, ntau ntxiv) tus laus tau xaiv tso 1.1.54236. Qhov yuam kev ploj mus - txhua yam pib ua haujlwm nrog lub suab nrov.
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" yog ib lub rooj uas muaj cai nrog lub cav ReplicatedReplacingMergeTree. Cov lus no sau cov npe ntawm txhua qhov kev ntsuas uas tau ntsib thaum nruab hnub. Cov laj thawj rau nws txoj kev tsim tau piav qhia hauv ntu "Cov teeb meem" thaum kawg ntawm tsab xov xwm no.
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" - ib lub rooj sau raws li qhov xwm txheej, nrog ReplicatedAggregatingMergeTree cav (replicated AggregatingMergeTree). Cov lus no sau cov naj npawb ntawm cov kev ntsuas tuaj, tawg mus rau 4 qib zes.
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. Daim duab qhia kev sib cuam tshuam
Raws li peb nco qab los ntawm qhov kev cia siab los ntawm qhov project no, kev hloov pauv mus rau ClickHouse yuav tsum tsis muaj kev poob qis; raws li, peb yuav tsum tau hloov pauv peb cov kev saib xyuas tag nrho mus rau qhov tshiab cia kom pom tseeb li sai tau rau peb cov neeg siv.
Nov yog peb ua li cas.
Ib txoj cai tau ntxiv rau carbon-c-relay kom xa cov kwj ntxiv ntawm kev ntsuas mus rau carbon-clickhouse ntawm ib qho ntawm cov servers koom nrog kev rov ua dua ntawm ClickHouse cov lus.
Peb tau sau ib tsab ntawv me me hauv python, uas, siv lub tsev qiv ntawv ntxhi-dum, nyeem tag nrho cov ntaub ntawv .wsp los ntawm peb qhov chaw khaws cia thiab xa cov ntaub ntawv no mus rau cov lus piav qhia saum toj no carbon-clickhouse hauv 24 xov. Tus naj npawb ntawm cov txiaj ntsig tau txais txiaj ntsig hauv carbon-clickhouse tau mus txog 125 lab / min, thiab ClickHouse tseem tsis tau tawg hws.
Dynamically tsim cov ntim hauv kubernetes xa ntau qhov kev ntsuas nrog lub neej luv luv thiab random. Tsis muaj ntau cov ntsiab lus rau cov kev ntsuas no, thiab tsis muaj teeb meem nrog qhov chaw. Tab sis thaum tsim cov lus nug, ClickHouse khaws ntau tus lej ntawm cov kev ntsuas tib yam no los ntawm 'metrics' rooj. Hauv 90% ntawm cov neeg mob, tsis muaj cov ntaub ntawv ntawm lawv dhau lub qhov rais (24 teev). Tab sis lub sij hawm siv los tshawb nrhiav cov ntaub ntawv no hauv 'cov ntaub ntawv' cov lus, thiab thaum kawg khiav mus rau lub sijhawm. Txhawm rau daws qhov teeb meem no, peb tau pib tswj hwm qhov kev pom cais nrog cov ntaub ntawv ntawm kev ntsuas uas tau ntsib thaum nruab hnub. Yog li, thaum tsim cov ntawv ceeb toom (graphs) rau cov thawv tsim kom muaj zog, peb nug tsuas yog cov kev ntsuas uas tau ntsib nyob rau hauv lub qhov rais muab, thiab tsis yog rau tag nrho lub sijhawm, uas ua rau kev tsim kho ntawm cov ntawv ceeb toom sai sai. Rau cov tshuaj tau piav qhia saum toj no, kuv sau graphite-clickhouse (hli), uas suav nrog kev ua haujlwm ntawm kev ua haujlwm nrog date_metrics table.
Graphite + ClickHouse. Cim npe
Nrog rau version 1.1.0 Graphite tau dhau los ua nom txhawb tag. Thiab peb nquag xav txog dab tsi thiab yuav ua li cas los txhawb txoj haujlwm no hauv graphite + clickhouse pawg.
Graphite + ClickHouse. Tsis pom kev detector
Raws li kev tsim kho vaj tse tau piav qhia saum toj no, peb tau siv cov qauv ntawm lub tshuab kuaj pom tsis zoo, thiab nws ua haujlwm! Tab sis ntau ntxiv txog nws nyob rau hauv tsab xov xwm tom ntej.