ʻIkepili TSDB ma Prometheus 2

ʻIkepili TSDB ma Prometheus 2

He kumu hoʻohālike maikaʻi loa ka ʻikepili ʻikepili manawa (TSDB) ma Prometheus 2 o kahi ʻenehana ʻenehana e hāʻawi ana i nā hoʻomaikaʻi nui ma luna o ka waihona v2 ma Prometheus 1 e pili ana i ka wikiwiki o ka hōʻiliʻili ʻikepili, ka hoʻokō ʻana i ka nīnau, a me ka pono waiwai. Ke hoʻokō nei mākou i ka Prometheus 2 ma Percona Monitoring and Management (PMM) a ua loaʻa iaʻu ka manawa e hoʻomaopopo i ka hana o Prometheus 2 TSDB. Ma kēia ʻatikala e kamaʻilio wau e pili ana i nā hopena o kēia mau ʻike.

Kaumaha o ka Prometheus Kaumaha

No ka poʻe i maʻa e pili ana i nā ʻikepili kumu maʻamau, ʻoi aku ka hoihoi o ka hana Prometheus maʻamau. Paʻa ka nui o ka hōʻiliʻili ʻikepili: ʻo ka maʻamau ka hoʻouna ʻana o nā lawelawe āu e nānā ai e like me ka helu like o nā ana, a me ka loli iki ʻana o ka ʻōnaehana.
Hiki ke noi i ka ʻike mai nā kumu like ʻole. ʻO kekahi o lākou, e like me nā makaʻala, ke hoʻoikaika nei hoʻi i kahi waiwai paʻa a hiki ke wānana. ʻO nā mea ʻē aʻe, e like me nā noi mea hoʻohana, hiki ke hoʻoulu ʻia, ʻoiai ʻaʻole kēia ka hihia no ka hapa nui o nā hana.

Hoʻāʻo hoʻouka

I ka wā o ka hoʻāʻo ʻana, ua nānā au i ka hiki ke hōʻiliʻili i ka ʻikepili. Ua kau au iā Prometheus 2.3.2 i hui pū ʻia me Go 1.10.1 (ma ke ʻano o ka PMM 1.14) ma ka lawelawe Linode me ka hoʻohana ʻana i kēia palapala: StackScript. No ka loaʻa maoli ʻana o ka hoʻouka ʻana, e hoʻohana ana i kēia StackScript Ua hoʻokuʻu au i kekahi mau node MySQL me kahi haʻahaʻa maoli (Sysbench TPC-C Test), kēlā me kēia mea i hoʻohālikelike i nā nodes 10 Linux/MySQL.
Ua hana ʻia nā hoʻāʻo a pau ma luna o kahi kikowaena Linode me ʻewalu mau cores virtual a me 32 GB o ka hoʻomanaʻo, e holo ana i ka 20 load simulations e nānā ana i ʻelua haneli MySQL manawa. A i ʻole, ma nā huaʻōlelo Prometheus, 800 mau pahuhopu, 440 scrapes i kēlā me kēia kekona, 380 tausani mau moʻolelo i kēlā me kēia kekona, a me 1,7 miliona mau manawa hana.

mea i manao ai

ʻO ke ala maʻamau o nā ʻikepili kuʻuna, me ka mea i hoʻohana ʻia e Prometheus 1.x, ʻo ia palena hoʻomanaʻo. Inā ʻaʻole lawa ka mālama ʻana i ka ukana, e ʻike ʻoe i nā latencies kiʻekiʻe a hāʻule kekahi mau noi. Hoʻohana ʻia ka hoʻohana ʻana i ka hoʻomanaʻo ma Prometheus 2 ma o ke kī storage.tsdb.min-block-duration, ka mea e hoʻoholo ai i ka lōʻihi o ka mālama ʻia ʻana o nā hoʻopaʻa ʻana i ka hoʻomanaʻo ma mua o ka holoi ʻana i ka disk (ʻo 2 mau hola ka paʻamau). ʻO ka nui o ka hoʻomanaʻo e pono ai e hilinaʻi ʻia ma ka helu o ka manawa, nā lepili, a me nā ʻōpala i hoʻohui ʻia i ke kahawai e komo mai ana. Ma nā ʻōlelo o ka disk space, manaʻo ʻo Prometheus e hoʻohana i 3 bytes i kēlā me kēia moʻolelo (laʻana). Ma kekahi ʻaoʻao, ʻoi aku ka kiʻekiʻe o nā koi hoʻomanaʻo.

ʻOiai hiki ke hoʻonohonoho i ka nui o ka poloka, ʻaʻole ia e ʻōlelo ʻia e hoʻonohonoho me ka lima, no laila e koi ʻia ʻoe e hāʻawi iā Prometheus i ka nui o ka hoʻomanaʻo e like me ka mea e pono ai no kāu hana.
Inā ʻaʻole lawa ka hoʻomanaʻo e kākoʻo i ke kahawai e hiki mai ana o nā metric, e hāʻule ʻo Prometheus mai ka hoʻomanaʻo ʻana a i ʻole e loaʻa i ka mea pepehi OOM.
ʻO ka hoʻohui ʻana i ka swap e hoʻopaneʻe i ka hāʻule ʻana i ka pau ʻana o ka hoʻomanaʻo ʻana o Prometheus ʻaʻole kōkua nui, no ka mea, ʻo ka hoʻohana ʻana i kēia hana ke kumu o ka hoʻohana ʻana i ka hoʻomanaʻo pahū. Manaʻo wau he mea pili ia me Go, kāna ʻohi ʻōpala a me ke ʻano o kāna hana me ka swap.
ʻO kahi ala hoihoi ʻē aʻe ʻo ia ka hoʻonohonoho ʻana i ka poloka poʻo e hoʻolele ʻia i ka disk i kekahi manawa, ma kahi o ka helu ʻana mai ka hoʻomaka ʻana o ke kaʻina hana.

ʻIkepili TSDB ma Prometheus 2

E like me kāu e ʻike ai mai ka pakuhi, hiki mai ka flushes i ka disk i kēlā me kēia ʻelua hola. Inā hoʻololi ʻoe i ka palena min-block-duration i hoʻokahi hola, a laila e hana ʻia kēia mau hana hou i kēlā me kēia hola, e hoʻomaka ana ma hope o ka hapalua hola.
Inā makemake ʻoe e hoʻohana i kēia a me nā kiʻi ʻē aʻe i kāu hoʻonohonoho Prometheus, hiki iā ʻoe ke hoʻohana i kēia dashboard. Ua hoʻolālā ʻia no PMM akā, me nā hoʻololi liʻiliʻi, kūpono i kekahi hoʻonohonoho Prometheus.
Loaʻa iā mākou kahi poloka hana i kapa ʻia he poʻo poʻo i mālama ʻia ma ka hoʻomanaʻo; Loaʻa nā poloka me nā ʻikepili kahiko ma o mmap(). Hoʻopau kēia i ka pono e hoʻonohonoho kaʻawale i ka cache, akā ʻo ia hoʻi he pono ʻoe e waiho i kahi kūpono no ka cache ʻōnaehana hana inā makemake ʻoe e nīnau i ka ʻikepili i ʻoi aku ma mua o ka mea e hiki ai i ke poʻo ke hoʻokomo.
ʻO ia hoʻi ke ʻano kiʻekiʻe o ka hoʻohana ʻana i ka hoʻomanaʻo virtual Prometheus, ʻaʻole ia he mea e hopohopo ai.

ʻIkepili TSDB ma Prometheus 2

ʻO kekahi kumu hoʻolālā hoihoi ʻo ia ka hoʻohana ʻana iā WAL (kākau i mua o ka log). E like me kāu e ʻike ai mai ka waihona waihona, hoʻohana ʻo Prometheus i ka WAL e pale aku i nā pōʻino. Eia naʻe, ʻaʻole i kākau maikaʻi ʻia nā hana kikoʻī no ka hōʻoia ʻana i ke ola ʻana o ka ʻikepili. Hoʻopili ka Prometheus version 2.3.2 iā WAL i ka diski i kēlā me kēia 10 kekona a ʻaʻole hiki ke hoʻonohonoho ʻia kēia koho.

Nā hoʻopaʻa

Hoʻolālā ʻia ʻo Prometheus TSDB e like me kahi hale kūʻai LSM (Log Structured Merge): hoʻoheheʻe ʻia ka poloka poʻo i kēlā me kēia manawa i ka disk, aʻo kahi mīkini hoʻopili e hui pū i nā poloka he nui e pale i ka nānā ʻana i nā poloka he nui i ka wā o nā nīnau. Maanei hiki iā ʻoe ke ʻike i ka helu o nā poloka aʻu i nānā ai ma ka ʻōnaehana hoʻāʻo ma hope o kahi lā o ka hoʻouka.

ʻIkepili TSDB ma Prometheus 2

Inā makemake ʻoe e aʻo hou aʻe e pili ana i ka hale kūʻai, hiki iā ʻoe ke nānā i ka faile meta.json, nona ka ʻike e pili ana i nā poloka i loaʻa a pehea i hiki mai ai.

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

Hoʻopili ʻia nā hoʻopaʻa ʻana ma Prometheus i ka manawa i hoʻokuʻu ʻia ai ke poʻo i ka disk. I kēia manawa, hiki ke hana ʻia kekahi mau hana like.

ʻIkepili TSDB ma Prometheus 2

ʻIke ʻia ʻaʻole i kaupalena ʻia nā compactions ma kekahi ʻano a hiki ke hoʻoulu i nā spike disk I/O nui i ka wā o ka hoʻokō ʻana.

ʻIkepili TSDB ma Prometheus 2

Piʻi ka ukana CPU

ʻIkepili TSDB ma Prometheus 2

ʻOiaʻiʻo, he hopena maikaʻi ʻole kēia i ka wikiwiki o ka ʻōnaehana, a ke kau nei hoʻi i kahi paʻakikī koʻikoʻi no ka waiho ʻana o LSM: pehea e hana ai i ka compaction e kākoʻo i nā uku noi kiʻekiʻe me ka ʻole o ka nui o ke poʻo?
ʻO ka hoʻohana ʻana i ka hoʻomanaʻo i ke kaʻina hana compaction ke nānā aku i mea hoihoi.

ʻIkepili TSDB ma Prometheus 2

Hiki iā mākou ke ʻike pehea, ma hope o ka hoʻopili ʻana, hoʻololi ka hapa nui o ka hoʻomanaʻo ʻana mai Cached a Free: ʻo ia hoʻi, ua wehe ʻia ka ʻike waiwai mai laila. E noʻonoʻo inā hoʻohana ʻia ma ʻaneʻi fadvice() a i ʻole kekahi ʻano hana hōʻemi ʻē aʻe, a i ʻole no ka hoʻokuʻu ʻia ʻana o ka cache mai nā poloka i luku ʻia i ka wā hoʻopaʻa?

Hoʻihoʻi ma hope o ka hāʻule

ʻO ka hoʻihoʻi ʻana mai nā hemahema he manawa, a no ke kumu maikaʻi. No kahi kahawai e hiki mai ana o hoʻokahi miliona mau moʻolelo i kēlā me kēia kekona, pono wau e kali ma kahi o 25 mau minuke aʻo ka hoʻihoʻi ʻana i ka mālama ʻana i ka SSD drive.

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."

ʻO ka pilikia nui o ke kaʻina hana hoʻihoʻi ka hoʻohana hoʻomanaʻo kiʻekiʻe. ʻOiai ma ke kūlana maʻamau hiki i ke kikowaena ke hana paʻa me ka nui o ka hoʻomanaʻo, inā hāʻule ʻaʻole hiki ke ola ma muli o OOM. ʻO ka hopena wale nō aʻu i loaʻa ai, ʻo ia ka hoʻopau ʻana i ka hōʻiliʻili ʻikepili, hoʻopuka i ke kikowaena, hoʻihoʻi hou a hoʻomaka hou me ka ʻohi ʻana.

Hoʻomehana

ʻO kekahi hana ʻē aʻe e hoʻomanaʻo ʻia i ka wā pumehana, ʻo ia ka pilina ma waena o ka hana haʻahaʻa a me ka hoʻohana waiwai nui ma hope pono o ka hoʻomaka. I ka wā o kekahi, akā ʻaʻole hoʻomaka nā mea a pau, ʻike wau i kahi ukana koʻikoʻi ma ka CPU a me ka hoʻomanaʻo.

ʻIkepili TSDB ma Prometheus 2

ʻIkepili TSDB ma Prometheus 2

ʻAʻole hiki i Prometheus ke hoʻonohonoho i nā hōʻiliʻili āpau mai ka hoʻomaka ʻana, a nalowale kekahi ʻike.
ʻAʻole au i ʻike i nā kumu kūpono o ka CPU kiʻekiʻe a me ka ukana hoʻomanaʻo. Manaʻo wau ma muli o ka hana ʻana i nā moʻo manawa hou i ka poloka poʻo me kahi alapine kiʻekiʻe.

Piʻi ka ukana CPU

Ma kahi o nā compactions, e hana ana i kahi ukana I/O kiʻekiʻe, ʻike wau i nā spike koʻikoʻi i ka ukana CPU i kēlā me kēia ʻelua mau minuke. ʻOi aku ka lōʻihi o ka pahū ʻana ke kiʻekiʻe ke kahe o ka hoʻokomo ʻana a ʻike ʻia e ka mea ʻohi ʻōpala o Go, me ka liʻiliʻi o kekahi mau cores i hoʻopiha piha ʻia.

ʻIkepili TSDB ma Prometheus 2

ʻIkepili TSDB ma Prometheus 2

ʻAʻole nui kēia mau lele. ʻIke ʻia i ka wā e hiki mai ai kēia mau mea, ʻaʻole i loaʻa ka wahi komo a me nā ana i loko o Prometheus, e hoʻoneʻe ana i nā ʻikepili i kēia mau manawa like.

ʻIkepili TSDB ma Prometheus 2

Hiki iā ʻoe ke ʻike i ka pani ʻana o ka mea hoʻopuka Prometheus no hoʻokahi kekona.

ʻIkepili TSDB ma Prometheus 2

Hiki iā mākou ke ʻike i nā pilina me ka hōʻiliʻili ʻōpala (GC).

ʻIkepili TSDB ma Prometheus 2

hopena

He wikiwiki ka TSDB ma Prometheus 2, hiki ke hoʻohana i nā miliona o ka manawa manawa a ma ka manawa like he mau kaukani mau moʻolelo i kēlā me kēia kekona me ka hoʻohana ʻana i nā hāmeʻa maʻalahi. He mea kupanaha ka hoʻohana ʻana i ka CPU a me ka disk I/O. Ua hōʻike ʻia kaʻu hiʻohiʻona i 200 metric i kēlā me kēia kekona i hoʻohana ʻia.

No ka hoʻolālā ʻana i ka hoʻonui, pono ʻoe e hoʻomanaʻo e pili ana i ka nui o ka hoʻomanaʻo, a he hoʻomanaʻo maoli kēia. ʻO ka nui o ka hoʻomanaʻo i hoʻohana ʻia aʻu i ʻike ai ma kahi o 5 GB no 100 mau moʻolelo i kēlā me kēia kekona o ke kahawai e hiki mai ana, ʻo ia hoʻi me ka cache ʻōnaehana hana hāʻawi ma kahi o 000 GB o ka hoʻomanaʻo i noho ʻia.

ʻOiaʻiʻo, he nui nā hana e hana ʻia e hoʻomaʻamaʻa i ka CPU a me ka disk I/O spikes, a ʻaʻole kēia he mea kupanaha i ka noʻonoʻo ʻana i ka hoʻohālikelike ʻia ʻana o ka ʻōpio TSDB Prometheus 2 me InnoDB, TokuDB, RocksDB, WiredTiger, akā like lākou a pau. nā pilikia i ka wā mua o ko lākou ola.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka