Mion-sgrùdadh TSDB ann an Prometheus 2

Mion-sgrùdadh TSDB ann an Prometheus 2

Tha an stòr-dàta sreath ùine (TSDB) ann am Prometheus 2 na dheagh eisimpleir de fhuasgladh innleadaireachd a tha a’ tabhann leasachaidhean mòra thairis air stòradh v2 ann am Prometheus 1 a thaobh astar cruinneachadh dàta, coileanadh ceist, agus èifeachdas ghoireasan. Bha sinn a’ cur an gnìomh Prometheus 2 ann an Sgrùdadh is Riaghladh Percona (PMM) agus bha cothrom agam coileanadh Prometheus 2 TSDB a thuigsinn. San artaigil seo bruidhnidh mi mu thoraidhean nan beachdan sin.

Prometheus eallach obrach cuibheasach

Dhaibhsan a tha cleachdte ri bhith a’ dèiligeadh ri stòran-dàta adhbhar coitcheann, tha eallach obrach àbhaisteach Prometheus gu math inntinneach. Tha an ìre de chruinneachadh dàta buailteach a bhith seasmhach: mar as trice bidh na seirbheisean air am bi thu a’ cumail sùil a’ cur timcheall air an aon àireamh de mheatairean, agus bidh am bun-structar ag atharrachadh gu ìre mhath slaodach.
Faodaidh iarrtasan airson fiosrachadh tighinn bho dhiofar stòran. Bidh cuid dhiubh, leithid rabhaidhean, cuideachd a 'strì airson luach seasmhach agus ro-innseach. Faodaidh cuid eile, leithid iarrtasan luchd-cleachdaidh, spreadhaidhean adhbhrachadh, ged nach eil seo fìor airson a’ mhòr-chuid de eallach obrach.

Luchdaich a-nuas deuchainn

Rè an deuchainn, chuir mi fòcas air a 'chomas air dàta a chruinneachadh. Chuir mi Prometheus 2.3.2 ri chèile le Go 1.10.1 (mar phàirt de PMM 1.14) air seirbheis Linode a’ cleachdadh an sgriobt seo: StackScript. Airson an ginealach luchdan as reusanta, a 'cleachdadh seo StackScript Chuir mi grunn nodan MySQL air bhog le fìor luchd (Deuchainn Sysbench TPC-C), agus rinn gach fear dhiubh aithris air nodan 10 Linux / MySQL.
Chaidh a h-uile deuchainn a leanas a dhèanamh air frithealaiche Linode le ochd coraichean brìgheil agus 32 GB de chuimhne, a ’ruith atharrais luchdan 20 a’ cumail sùil air dà cheud cùis MySQL. No, a thaobh Prometheus, 800 targaid, 440 sgrìoban san diog, 380 mìle clàr gach diog, agus 1,7 millean sreath ùine gnìomhach.

dealbhadh

Is e an dòigh àbhaisteach airson stòran-dàta traidiseanta, a’ gabhail a-steach an tè a chleachd Prometheus 1.x, a bhith crìoch cuimhne. Mura h-eil e gu leòr airson an luchd a làimhseachadh, gheibh thu eòlas air amannan fada agus fàillidh cuid de dh’ iarrtasan. Tha cleachdadh cuimhne ann am Prometheus 2 comasach a rèiteachadh tro iuchair storage.tsdb.min-block-duration, a bhios a’ dearbhadh dè cho fada ‘s a thèid clàraidhean a chumail mar chuimhneachan mus tèid iad air adhart gu diosc (is e 2 uair an àbhaist). Bidh an ìre de chuimhne a tha a dhìth an urra ris an àireamh de shreath ùine, bileagan, agus sgrìoban a chaidh a chur ris an t-sruth a tha a’ tighinn a-steach. A thaobh àite diosc, tha Prometheus ag amas air 3 bytes a chleachdadh gach clàr (sampall). Air an làimh eile, tha riatanasan cuimhne mòran nas àirde.

Ged a tha e comasach meud a ’bhloc a rèiteachadh, chan eilear a’ moladh a rèiteachadh le làimh, agus mar sin feumaidh tu na h-uimhir de chuimhne a thoirt dha Prometheus agus a dh ’fheumas e airson an eallach obrach agad.
Mura h-eil cuimhne gu leòr ann airson taic a thoirt don t-sruth meatrach a tha a’ tighinn a-steach, tuitidh Prometheus a-mach às a chuimhne no gheibh am marbhadh OOM thuige.
Chan eil e gu mòr a’ cuideachadh le suaip gus dàil a chuir air an tubaist nuair a ruitheas Prometheus a-mach à cuimhne, leis gu bheil cleachdadh na gnìomh seo ag adhbhrachadh caitheamh cuimhne spreadhaidh. Tha mi a’ smaoineachadh gu bheil e rudeigin co-cheangailte ri Go, an neach-cruinneachaidh sgudail aige agus an dòigh anns a bheil e a’ dèiligeadh ri suaip.
Is e dòigh inntinneach eile a bhith a’ rèiteachadh a’ bhloc-cinn airson a bhith air a shruthladh gu diosc aig àm sònraichte, an àite a bhith ga chunntadh bho thoiseach a’ phròiseis.

Mion-sgrùdadh TSDB ann an Prometheus 2

Mar a chì thu bhon ghraf, bidh sruthan gu diosc a’ tachairt a h-uile dà uair a thìde. Ma dh’ atharraicheas tu am paramadair fad-bloc gu uair a thìde, bidh na h-ath-shuidheachadh sin a’ tachairt gach uair, a’ tòiseachadh às deidh leth uair a thìde.
Ma tha thu airson seo agus grafaichean eile a chleachdadh san stàladh Prometheus agad, faodaidh tu seo a chleachdadh deas-bhòrd. Chaidh a dhealbhadh airson PMM ach, le mion-atharrachaidhean, bidh e a’ freagairt air stàladh Prometheus sam bith.
Tha bloc gnìomhach againn ris an canar bloc ceann a tha air a stòradh mar chuimhne; tha blocaichean le dàta nas sine rim faighinn tro mmap(). Tha seo a’ cur às don fheum air an tasgadan a rèiteachadh air leth, ach tha e cuideachd a’ ciallachadh gum feum thu àite gu leòr fhàgail airson tasgadan an t-siostaim obrachaidh ma tha thu airson ceasnachadh a dhèanamh air dàta nas sine na na ghabhas a’ bhloc-cinn.
Tha seo cuideachd a’ ciallachadh gum bi caitheamh cuimhne brìgheil Prometheus a’ coimhead gu math àrd, rud nach eil na adhbhar dragh.

Mion-sgrùdadh TSDB ann an Prometheus 2

Is e puing dealbhaidh inntinneach eile cleachdadh WAL (sgrìobh log ro-làimh). Mar a chì thu bho na sgrìobhainnean stòraidh, bidh Prometheus a’ cleachdadh WAL gus tubaistean a sheachnadh. Gu mì-fhortanach, chan eil dòighean sònraichte airson a bhith cinnteach gum mair an dàta air a dheagh chlàradh. Bidh dreach Prometheus 2.3.2 a’ sruthadh WAL gu diosc a h-uile 10 diog agus chan eil an roghainn seo comasach a rèiteachadh.

Compactions

Tha Prometheus TSDB air a dhealbhadh mar stòr LSM (Log Structured Merge): tha am bloc ceann air a chuir a-steach bho àm gu àm gu diosc, fhad ‘s a bhios inneal teannachaidh a’ cothlamadh grunn bhlocaichean còmhla gus nach tèid cus bhlocaichean a sganadh rè cheistean. An seo chì thu an àireamh de bhlocaichean a chunnaic mi air an t-siostam deuchainn às deidh latha luchd.

Mion-sgrùdadh TSDB ann an Prometheus 2

Ma tha thu airson barrachd ionnsachadh mun stòr, faodaidh tu sgrùdadh a dhèanamh air faidhle meta.json, aig a bheil fiosrachadh mu na blocaichean a tha rim faighinn agus mar a thàinig iad gu bhith.

{
       "ulid": "01CPZDPD1D9R019JS87TPV5MPE",
       "minTime": 1536472800000,
       "maxTime": 1536494400000,
       "stats": {
               "numSamples": 8292128378,
               "numSeries": 1673622,
               "numChunks": 69528220
       },
       "compaction": {
               "level": 2,
               "sources": [
                       "01CPYRY9MS465Y5ETM3SXFBV7X",
                       "01CPYZT0WRJ1JB1P0DP80VY5KJ",
                       "01CPZ6NR4Q3PDP3E57HEH760XS"
               ],
               "parents": [
                       {
                               "ulid": "01CPYRY9MS465Y5ETM3SXFBV7X",
                               "minTime": 1536472800000,
                               "maxTime": 1536480000000
                       },
                       {
                               "ulid": "01CPYZT0WRJ1JB1P0DP80VY5KJ",
                               "minTime": 1536480000000,
                               "maxTime": 1536487200000
                       },
                       {
                               "ulid": "01CPZ6NR4Q3PDP3E57HEH760XS",
                               "minTime": 1536487200000,
                               "maxTime": 1536494400000
                       }
               ]
       },
       "version": 1
}

Tha coimeasgaidhean ann am Prometheus ceangailte ris an ùine a thèid am bloca cinn a shruthladh gu diosc. Aig an ìre seo, faodar grunn obraichean mar sin a dhèanamh.

Mion-sgrùdadh TSDB ann an Prometheus 2

Tha e coltach nach eil teannachadh cuibhrichte ann an dòigh sam bith agus faodaidh e spìcean I / O diosc mòr adhbhrachadh nuair a thèid a chuir gu bàs.

Mion-sgrùdadh TSDB ann an Prometheus 2

Draibhearan airson CPU a luchdadh a-nuas

Mion-sgrùdadh TSDB ann an Prometheus 2

Gu dearbh, tha droch bhuaidh aig seo air astar an t-siostaim, agus tha e cuideachd na dhùbhlan mòr airson stòradh LSM: mar a nì thu teannachadh gus taic a thoirt do ìrean iarrtas àrd gun a bhith ag adhbhrachadh cus os cionn?
Tha cleachdadh cuimhne anns a’ phròiseas teannachaidh cuideachd a’ coimhead gu math inntinneach.

Mion-sgrùdadh TSDB ann an Prometheus 2

Chì sinn mar a tha, às deidh teannachadh, a’ mhòr-chuid de na h-atharrachaidhean cuimhne ag aithris bho Cached to Free: tha seo a’ ciallachadh gun deach fiosrachadh a dh’ fhaodadh a bhith luachmhor a thoirt air falbh às an sin. Tha e neònach ma thèid a chleachdadh an seo fadvice() no dòigh lughdachadh lughdachadh eile, no an ann air sgàth gun deach an tasgadan a shaoradh bho bhlocaichean a chaidh a sgrios aig àm teannachaidh?

Ath-bheothachadh an dèidh fàilligeadh

Bheir ath-bheothachadh bho fàilligidhean ùine, agus air adhbhar math. Airson sruth a bha a’ tighinn a-steach de mhillean clàr gach diog, bha agam ri feitheamh mu 25 mionaidean fhad ‘s a chaidh an ath-bheothachadh a dhèanamh a’ toirt aire don draibhear SSD.

level=info ts=2018-09-13T13:38:14.09650965Z caller=main.go:222 msg="Starting Prometheus" version="(version=2.3.2, branch=v2.3.2, revision=71af5e29e815795e9dd14742ee7725682fa14b7b)"
level=info ts=2018-09-13T13:38:14.096599879Z caller=main.go:223 build_context="(go=go1.10.1, user=Jenkins, date=20180725-08:58:13OURCE)"
level=info ts=2018-09-13T13:38:14.096624109Z caller=main.go:224 host_details="(Linux 4.15.0-32-generic #35-Ubuntu SMP Fri Aug 10 17:58:07 UTC 2018 x86_64 1bee9e9b78cf (none))"
level=info ts=2018-09-13T13:38:14.096641396Z caller=main.go:225 fd_limits="(soft=1048576, hard=1048576)"
level=info ts=2018-09-13T13:38:14.097715256Z caller=web.go:415 component=web msg="Start listening for connections" address=:9090
level=info ts=2018-09-13T13:38:14.097400393Z caller=main.go:533 msg="Starting TSDB ..."
level=info ts=2018-09-13T13:38:14.098718401Z caller=repair.go:39 component=tsdb msg="found healthy block" mint=1536530400000 maxt=1536537600000 ulid=01CQ0FW3ME8Q5W2AN5F9CB7R0R
level=info ts=2018-09-13T13:38:14.100315658Z caller=web.go:467 component=web msg="router prefix" prefix=/prometheus
level=info ts=2018-09-13T13:38:14.101793727Z caller=repair.go:39 component=tsdb msg="found healthy block" mint=1536732000000 maxt=1536753600000 ulid=01CQ78486TNX5QZTBF049PQHSM
level=info ts=2018-09-13T13:38:14.102267346Z caller=repair.go:39 component=tsdb msg="found healthy block" mint=1536537600000 maxt=1536732000000 ulid=01CQ78DE7HSQK0C0F5AZ46YGF0
level=info ts=2018-09-13T13:38:14.102660295Z caller=repair.go:39 component=tsdb msg="found healthy block" mint=1536775200000 maxt=1536782400000 ulid=01CQ7SAT4RM21Y0PT5GNSS146Q
level=info ts=2018-09-13T13:38:14.103075885Z caller=repair.go:39 component=tsdb msg="found healthy block" mint=1536753600000 maxt=1536775200000 ulid=01CQ7SV8WJ3C2W5S3RTAHC2GHB
level=error ts=2018-09-13T14:05:18.208469169Z caller=wal.go:275 component=tsdb msg="WAL corruption detected; truncating" err="unexpected CRC32 checksum d0465484, want 0" file=/opt/prometheus/data/.prom2-data/wal/007357 pos=15504363
level=info ts=2018-09-13T14:05:19.471459777Z caller=main.go:543 msg="TSDB started"
level=info ts=2018-09-13T14:05:19.471604598Z caller=main.go:603 msg="Loading configuration file" filename=/etc/prometheus.yml
level=info ts=2018-09-13T14:05:19.499156711Z caller=main.go:629 msg="Completed loading of configuration file" filename=/etc/prometheus.yml
level=info ts=2018-09-13T14:05:19.499228186Z caller=main.go:502 msg="Server is ready to receive web requests."

Is e prìomh dhuilgheadas a ’phròiseas ath-bheothachaidh caitheamh cuimhne àrd. A dh'aindeoin 's gu bheil ann an suidheachadh àbhaisteach faodaidh an fhrithealaiche obrachadh gu stàball leis an aon uiread de chuimhne, ma thuiteas e 's dòcha nach fhaigh e air ais air sgàth OOM. B’ e an aon fhuasgladh a lorg mi casg a chuir air cruinneachadh dàta, am frithealaiche a thoirt suas, leigeil leis faighinn air ais agus ath-thòiseachadh le cruinneachadh comasach.

A ’blàthachadh

Is e giùlan eile ri chumail nad inntinn aig àm blàthachadh an dàimh eadar coileanadh ìosal agus caitheamh àrd ghoireasan dìreach às deidh toiseach tòiseachaidh. Rè cuid, ach chan eil a h-uile càil a 'tòiseachadh, chunnaic mi fìor luchd air an CPU agus cuimhne.

Mion-sgrùdadh TSDB ann an Prometheus 2

Mion-sgrùdadh TSDB ann an Prometheus 2

Tha beàrnan ann an cleachdadh cuimhne a’ nochdadh nach urrainn dha Prometheus a h-uile cruinneachadh a rèiteachadh bhon toiseach, agus tha beagan fiosrachaidh air chall.
Chan eil mi air faighinn a-mach na dearbh adhbharan airson an CPU àrd agus an luchd cuimhne. Tha amharas agam gu bheil seo mar thoradh air cruthachadh sreath ùine ùr anns a ’bhloc cinn le tricead àrd.

Àrdachadh luchdan CPU

A bharrachd air na teannachadh, a chruthaicheas luchd I / O gu math àrd, mhothaich mi spìcean mòra ann an luchd CPU a h-uile dà mhionaid. Tha na spreadhaidhean nas fhaide nuair a tha an sruth a-steach àrd agus a rèir coltais air adhbhrachadh le neach-cruinneachaidh sgudail Go, le co-dhiù cuid de choraichean gan luchdachadh gu h-iomlan.

Mion-sgrùdadh TSDB ann an Prometheus 2

Mion-sgrùdadh TSDB ann an Prometheus 2

Chan eil na geansaidhean sin cho beag. Tha e coltach, nuair a thachras iad sin, nach bi àite inntrigidh agus meatrach taobh a-staigh Prometheus rim faighinn, ag adhbhrachadh beàrnan dàta anns na h-aon amannan sin.

Mion-sgrùdadh TSDB ann an Prometheus 2

Faodaidh tu cuideachd mothachadh gu bheil an às-mhalairt Prometheus a 'dùnadh sìos airson aon diog.

Mion-sgrùdadh TSDB ann an Prometheus 2

Chì sinn co-dhàimhean le cruinneachadh sgudail (GC).

Mion-sgrùdadh TSDB ann an Prometheus 2

co-dhùnadh

Tha TSDB ann am Prometheus 2 luath, comasach air milleanan de shreathan ùine a làimhseachadh agus aig an aon àm mìltean de chlàran gach diog a’ cleachdadh bathar-cruaidh meadhanach beag. Tha cleachdadh CPU agus diosc I/O cuideachd drùidhteach. Sheall an eisimpleir agam suas ri 200 meatrach gach diog gach cridhe a chaidh a chleachdadh.

Gus leudachadh a phlanadh, feumaidh tu cuimhneachadh air meud gu leòr de chuimhne, agus feumaidh seo a bhith na fhìor chuimhne. Bha an ìre de chuimhne a chleachd mi a chunnaic mi timcheall air 5 GB gach 100 clàr gach diog den t-sruth a bha a’ tighinn a-steach, a thug còmhla ri tasgadan an t-siostaim obrachaidh timcheall air 000 GB de chuimhne còmhnaidh.

Gu dearbh, tha tòrr obrach ri dhèanamh fhathast gus spìcean CPU agus diosc I/O a cheannsachadh, agus chan eil seo na iongnadh a bhith a’ beachdachadh air mar a tha TSDB Prometheus 2 òg an coimeas ri InnoDB, TokuDB, RocksDB, WiredTiger, ach bha an aon rud aca uile. duilgheadasan tràth sa chuairt-beatha aca.

Source: www.habr.com

Cuir beachd ann