Anailís TSDB i Prometheus 2

Anailís TSDB i Prometheus 2

Is sampla iontach é an bunachar sonraí sraith ama (TSDB) i Prometheus 2 de réiteach innealtóireachta a thairgeann feabhsuithe móra ar an stóráil v2 i Prometheus 1 i dtéarmaí luas carntha sonraí, cur i gcrích fiosrúcháin, agus éifeachtúlacht acmhainní. Bhí Prometheus 2 á chur i bhfeidhm againn i Monatóireacht agus Bainistíocht Percona (PMM) agus bhí deis agam feidhmíocht Prometheus 2 TSDB a thuiscint. San Airteagal seo labhróidh mé faoi thorthaí na dtuairimí seo.

Meán-ualach oibre Prometheus

Dóibh siúd a bhí ag déileáil le bunachair shonraí ilchuspóireacha, tá ualach oibre tipiciúil Prometheus suimiúil go leor. Is gnách go mbíonn an ráta carntha sonraí cobhsaí: de ghnáth cuireann na seirbhísí a ndéanann tú monatóireacht orthu thart ar an líon céanna méadrachta, agus athraíonn an bonneagar sách mall.
Féadfaidh iarratais ar fhaisnéis teacht ó fhoinsí éagsúla. Déanann cuid acu, amhail foláirimh, a ndícheall freisin luach cobhsaí agus intuartha a bhaint amach. D’fhéadfadh go mbeadh pléasctha ag baint le cinn eile, amhail iarratais úsáideoirí, cé nach amhlaidh an cás i gcás fhormhór na n-ualaí oibre.

Tástáil ualaigh

Le linn na tástála, dhírigh mé ar an gcumas sonraí a charnadh. D'imscar mé Prometheus 2.3.2 tiomsaithe le Go 1.10.1 (mar chuid de PMM 1.14) ar sheirbhís Linode ag baint úsáide as an script seo: StackScript. Don ghiniúint ualach is réadúla, ag baint úsáide as seo StackScript Sheol mé roinnt nóid MySQL le fíor-ualach (Tástáil Sysbench TPC-C), agus rinne gach ceann acu aithris ar nóid 10 Linux / MySQL.
Rinneadh na tástálacha seo a leanas go léir ar fhreastalaí Linode le hocht gcroíthe fíorúil agus 32 GB de chuimhne, ag rith 20 insamhalta ualaigh ag déanamh monatóireachta ar dhá chéad cás MySQL. Nó, i dtéarmaí Prometheus, 800 sprioc, 440 scrapes in aghaidh an tsoicind, 380 míle taifead in aghaidh an tsoicind, agus 1,7 milliún sraith ama gníomhach.

Dearadh

Is é an cur chuige is gnách a bhaineann le bunachair shonraí traidisiúnta, lena n-áirítear an ceann a úsáideann Prometheus 1.x, ná teorainn chuimhne. Mura leor é an t-ualach a láimhseáil, beidh taithí agat ar latencies ard agus teipfidh ar roinnt iarratas. Is féidir úsáid na cuimhne in Prometheus 2 a chumrú trí eochair storage.tsdb.min-block-duration, a chinneann cé chomh fada agus a choimeádfar taifeadtaí sa chuimhne sula ndéantar iad a shruthlú go diosca (is é 2 uair an chloig an réamhshocrú). Braithfidh an méid cuimhne a bheidh ag teastáil ar an líon sraitheanna ama, lipéid, agus scrapes a chuirtear leis an sruth glan isteach. Maidir le spás diosca, tá sé mar aidhm ag Prometheus 3 beart a úsáid in aghaidh an taifid (sampla). Ar an láimh eile, tá riachtanais chuimhne i bhfad níos airde.

Cé gur féidir méid an bhloic a chumrú, ní mholtar é a chumrú de láimh, mar sin tá iallach ort an oiread cuimhne a thabhairt do Prometheus agus a theastaíonn do d’ualach oibre.
Mura bhfuil go leor cuimhne ann chun tacú leis an sruth méadrachta atá ag teacht isteach, titfidh Prometheus as cuimhne nó gheobhaidh an marfóir OOM é.
Ní cuidíonn sé sin go mór le babhtáil a chur leis chun moill a chur ar an timpiste nuair a ritheann Prometheus as cuimhne, mar is cúis le tomhaltas cuimhne pléascach má úsáidtear an fheidhm seo. Sílim go bhfuil baint aige le Go, a bhailitheoir truflais agus leis an mbealach a dhéileálann sé le babhtáil.
Cur chuige suimiúil eile is ea an bloc ceann a chumrú chun é a shruthlú go diosca ag am áirithe, in ionad é a chomhaireamh ó thús an phróisis.

Anailís TSDB i Prometheus 2

Mar a fheiceann tú ón ngraf, tarlaíonn srutháin go diosca gach dhá uair an chloig. Má athraíonn tú an paraiméadar min-bloc-fad go uair an chloig, ansin tarlóidh na hathshocrú seo gach uair an chloig, ag tosú tar éis leath uair an chloig.
Más mian leat é seo agus graif eile a úsáid i do shuiteáil Prometheus, is féidir leat é seo a úsáid deais. Dearadh é do PMM ach, le mionathruithe, luíonn sé le haon suiteáil Prometheus.
Tá bloc gníomhach againn ar a dtugtar bloc cinn a stóráiltear sa chuimhne; tá bloic le sonraí níos sine ar fáil trí mmap(). Cuireann sé seo deireadh leis an ngá atá leis an taisce a chumrú ar leithligh, ach ciallaíonn sé freisin go gcaithfidh tú go leor spáis a fhágáil do thaisce an chórais oibriúcháin más mian leat sonraí a fhiosrú níos sine ná an méid is féidir leis an mbloc ceann a fhreastal.
Ciallaíonn sé seo freisin go mbeidh cuma ard ar thomhaltas cuimhne fíorúil Prometheus, rud nach bhfuil imní ort faoi.

Anailís TSDB i Prometheus 2

Pointe deartha suimiúil eile is ea úsáid WAL (scríobh logáil isteach chun tosaigh). Mar a fheiceann tú ó na doiciméid stórála, úsáideann Prometheus WAL chun tuairteanna a sheachaint. Ar an drochuair, níl meicníochtaí sonracha chun marthanacht sonraí a ráthú go maith doiciméadaithe. Déanann Prometheus leagan 2.3.2 WAL a shruthlú go diosca gach 10 soicind agus ní féidir an rogha seo a chumrú.

Comhdhlúthúcháin

Tá Prometheus TSDB deartha cosúil le stór LSM (Cumasc Struchtúrtha Logála): déantar an bloc cloigeann a shruthlú go diosca go tréimhsiúil, agus nascann meicníocht dhlúthúcháin bloic iolracha le chéile chun an iomarca bloc a scanadh le linn fiosruithe a sheachaint. Anseo, is féidir leat líon na mbloic a chonaic mé ar an gcóras tástála a fheiceáil tar éis lá ualach.

Anailís TSDB i Prometheus 2

Más mian leat níos mó a fhoghlaim faoin siopa, is féidir leat an comhad meta.json a scrúdú, ina bhfuil faisnéis faoi na bloic atá ar fáil agus conas a tháinig siad chun bheith.

{
       "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
}

Tá dlúthdhioscaí i Prometheus ceangailte leis an am a ndéantar an bloc cloigeann a shruthlú go diosca. Ag an bpointe seo, féadfar roinnt oibríochtaí den sórt sin a dhéanamh.

Anailís TSDB i Prometheus 2

Dealraíonn sé nach bhfuil balcadh teoranta ar bhealach ar bith agus go bhféadfadh sé a bheith ina chúis le spící I/O diosca mór le linn a fhorghníomhaithe.

Anailís TSDB i Prometheus 2

spikes ualach LAP

Anailís TSDB i Prometheus 2

Ar ndóigh, tá tionchar sách diúltach aige seo ar luas an chórais, agus cuireann sé dúshlán mór ar stóráil LSM freisin: conas dhlúthú a dhéanamh chun tacú le rátaí arda iarratais gan ró-chostas a dhéanamh?
Breathnaíonn úsáid na cuimhne sa phróiseas dlúthaithe suimiúil freisin.

Anailís TSDB i Prometheus 2

Is féidir linn a fheiceáil, tar éis dhlúthú, conas a luann an chuid is mó de na hathruithe cuimhne ó Taisce go Saor: ciallaíonn sé seo go bhfuil faisnéis a d'fhéadfadh a bheith luachmhar bainte as sin. Aisteach má úsáidtear anseo é fadvice() nó teicníocht íoslaghdaithe éigin eile, nó an é toisc gur saoradh an taisce ó bhlocanna scriosta le linn dhlúthú?

Aisghabháil tar éis teip

Tógann aisghabháil ó theipeanna am, agus ar chúis mhaith. Le haghaidh sruth ag teacht isteach de mhilliún taifead in aghaidh an tsoicind, bhí orm fanacht thart ar 25 nóiméad agus an aisghabháil á dhéanamh ag cur san áireamh an tiomáint 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 í an fhadhb is mó den phróiseas aisghabhála tomhaltas cuimhne ard. In ainneoin gur féidir leis an bhfreastalaí oibriú go cobhsaí leis an méid céanna cuimhne i ngnáthstaid, b'fhéidir nach dtiocfaidh sé ar ais mar gheall ar OOM má thuairteanna sé. Ba é an t-aon réiteach a fuair mé ná bailiú sonraí a dhíchumasú, an freastalaí a thabhairt suas, ligean dó é a ghnóthú agus a atosú agus an bailiú cumasaithe.

Ag téamh suas

Iompar eile nach mór a choinneáil i gcuimhne le linn an téamh suas is ea an gaol idir ísealfheidhmíocht agus ardtomhaltas acmhainní díreach tar éis an tús. Le linn roinnt tosaithe, ach ní léir, thug mé faoi deara ualach tromchúiseach ar an LAP agus ar an gcuimhne.

Anailís TSDB i Prometheus 2

Anailís TSDB i Prometheus 2

Léiríonn bearnaí in úsáid cuimhne nach féidir le Prometheus na bailiúcháin go léir a chumrú ón tús, agus cailltear roinnt faisnéise.
Níor thuig mé na cúiseanna cruinne leis an ualach ard LAP agus cuimhne. Doigh liom go bhfuil sé seo mar gheall ar chruthú sraith ama nua sa bhloc ceann le minicíocht ard.

Ardaíonn ualach LAP

Chomh maith leis na compactions, a chruthaíonn ualach I/O measartha ard, thug mé faoi deara spící tromchúiseacha san ualach LAP gach dhá nóiméad. Bíonn na pléascthaí níos faide nuair a bhíonn an sreabhadh ionchuir ard agus is cosúil gur bailitheoir truflais Go ba chúis leis, agus ar a laghad roinnt croíleacáin á luchtú go hiomlán.

Anailís TSDB i Prometheus 2

Anailís TSDB i Prometheus 2

Níl na geansaithe seo chomh neamhshuntasach. Dealraíonn sé, nuair a tharlaíonn siad seo, nach mbíonn pointe iontrála inmheánach agus méadracht Prometheus ar fáil, rud a fhágann bearnaí sonraí le linn na dtréimhsí céanna ama sin.

Anailís TSDB i Prometheus 2

Féadfaidh tú a thabhairt faoi deara freisin go stopann an t-onnmhaireoir Prometheus síos ar feadh soicind amháin.

Anailís TSDB i Prometheus 2

Is féidir linn comhghaolta a thabhairt faoi deara le bailiú truflais (GC).

Anailís TSDB i Prometheus 2

Conclúid

Tá TSDB i Prometheus 2 tapa, in ann na milliúin de shraith ama a láimhseáil agus ag an am céanna na mílte taifead in aghaidh an tsoicind ag baint úsáide as crua-earraí measartha measartha. Tá úsáid LAP agus diosca I/O go hiontach freisin. Léirigh mo shampla suas le 200 méadracht in aghaidh an tsoicind in aghaidh an chroí a úsáideadh.

Chun leathnú a phleanáil, ní mór duit cuimhneamh ar mhéideanna leordhóthanacha cuimhne, agus ní mór gur fíor-chuimhne é seo. Ba é an méid cuimhne a úsáideadh a thug mé faoi deara ná thart ar 5 GB in aghaidh an 100 taifead in aghaidh an tsoicind den sruth isteach, rud a thug thart ar 000 GB de chuimhne áitithe in éineacht le taisce an chórais oibriúcháin.

Ar ndóigh, tá go leor oibre fós le déanamh chun spikes I / O CPU agus diosca a cheannsú, agus ní haon ionadh é seo ag smaoineamh ar cé chomh óg is atá TSDB Prometheus 2 i gcomparáid le InnoDB, TokuDB, RocksDB, WiredTiger, ach bhí a leithéid acu go léir. fadhbanna go luath ina saolré.

Foinse: will.com

Add a comment