TSDB Analysis ao amin'ny Prometheus 2

TSDB Analysis ao amin'ny Prometheus 2

Ny angon-drakitra andiam-potoana (TSDB) ao amin'ny Prometheus 2 dia ohatra tsara indrindra amin'ny vahaolana amin'ny injeniera izay manolotra fanatsarana lehibe amin'ny fitahirizana v2 ao amin'ny Prometheus 1 amin'ny resaka hafainganam-pandeha fanangonam-baovao, fanatanterahana ny fangatahana ary fahombiazan'ny loharanon-karena. Nampihatra ny Prometheus 2 tao amin'ny Percona Monitoring and Management (PMM) izahay ary nanana fahafahana hahatakatra ny zava-bitan'ny Prometheus 2 TSDB aho. Amin'ity lahatsoratra ity dia hiresaka momba ny vokatry ny fandinihana ireo aho.

Enta-mavesatra Prometheus antonony

Ho an'ireo zatra mifandray amin'ny angon-drakitra tanjona ankapobeny, ny enta-mavesatra Prometheus mahazatra dia tena mahaliana. Ny tahan'ny fanangonam-baovao dia mirona ho tsy miova: matetika ny tolotra arahinao dia mandefa refy mitovy ary miova tsikelikely ny fotodrafitrasa.
Mety ho avy amin'ny loharano samihafa ny fangatahana fampahalalana. Ny sasany amin'izy ireo, toy ny fanairana, dia miezaka ihany koa hahazoana sanda azo antoka sy azo vinavinaina. Ny hafa, toy ny fangatahan'ny mpampiasa, dia mety hiteraka fipoahana, na dia tsy izany aza no mitranga amin'ny ankamaroan'ny enta-mavesatra.

Andrana entana

Nandritra ny fitsapana dia nifantoka tamin'ny fahaizana manangona angona aho. Nalefako ny Prometheus 2.3.2 natambatra tamin'ny Go 1.10.1 (amin'ny ampahany amin'ny PMM 1.14) amin'ny serivisy Linode amin'ny fampiasana ity script ity: StackScript. Ho an'ny famokarana entana tena misy, ampiasao ity StackScript Nandefa node MySQL maromaro aho miaraka amin'ny entana tena izy (Sysbench TPC-C Test), izay samy naka ny 10 Linux/MySQL nodes.
Ireo fitsapana manaraka rehetra ireo dia natao tamin'ny mpizara Linode miaraka amin'ny virtoaly virtoaly valo sy fahatsiarovana 32 GB, mihazakazaka simulations 20 mavesatra manara-maso ireo tranga MySQL roanjato. Na, amin'ny teny Prometheus, tanjona 800, 440 scrapes isan-tsegondra, rakitsoratra 380 arivo isan-tsegondra, ary 1,7 tapitrisa andiam-potoana mavitrika.

famolavolana

Ny fomba fiasa mahazatra amin'ny angon-drakitra nentim-paharazana, anisan'izany ilay ampiasain'ny Prometheus 1.x, dia ny fetra fitadidiana. Raha tsy ampy ny mitantana ny enta-mavesatra, dia hiaina latencies avo ianao ary tsy hahomby ny fangatahana sasany. Ny fampiasana fahatsiarovana ao amin'ny Prometheus 2 dia azo amboarina amin'ny alΓ lan'ny fanalahidy storage.tsdb.min-block-duration, izay mamaritra ny halavan'ny firaketana an-tsoratra ao anaty fitadidiana alohan'ny hanasana azy amin'ny kapila (2 ora ny default). Ny habetsaky ny fitadidiana ilaina dia miankina amin'ny isan'ny andian-potoana, ny etikety ary ny kikisana ampiana amin'ny renirano miditra. Eo amin'ny sehatry ny kapila, ny Prometheus dia mikendry ny hampiasa 3 bytes isaky ny rakitra (santionany). Amin'ny lafiny iray, ny fitadidiana fitadidiana dia ambony lavitra.

Na dia azo atao aza ny manitsy ny haben'ny sakana, dia tsy soso-kevitra ny manamboatra azy amin'ny tanana, noho izany dia voatery manome ny Prometheus fitadidiana araka izay ilainy amin'ny enta-mavesatrao ianao.
Raha tsy ampy ny fitadidiana hanohanana ny rindranasan'ny metrika ho avy, dia ho lany amin'ny fitadidiana ny Prometheus na ho tonga amin'izany ny mpamono OOM.
Ny fampidirana swap hanemorana ny fianjerana rehefa lany ny fitadidiana ny Prometheus dia tsy tena manampy, satria ny fampiasana an'io fiasa io dia miteraka fanjifana fahatsiarovana mipoaka. Heveriko fa misy ifandraisany amin'ny Go, ny mpanangom-pako azy ary ny fomba ifandraisany amin'ny swap.
Fomba iray hafa mahaliana dia ny manamboatra ny lohan'ny lohany mba ho maina amin'ny kapila amin'ny fotoana iray, fa tsy manisa azy io amin'ny fiandohan'ny dingana.

TSDB Analysis ao amin'ny Prometheus 2

Araka ny hitanao avy amin'ny grafika dia mitranga isaky ny adiny roa ny flushes mankany amin'ny kapila. Raha ovainao amin'ny adiny iray ny mari-pamantarana minitra-block-haretan'ny fotoana, dia hiseho isan'ora ireo famerenana ireo, manomboka aorian'ny antsasak'adiny.
Raha te hampiasa an'ity sy ny grafika hafa amin'ny fametrahana Prometheus ianao dia azonao ampiasaina ity anaty fiara. Izy io dia natao ho an'ny PMM saingy, miaraka amin'ny fanovana kely, mifanaraka amin'ny fametrahana Prometheus.
Manana sakana mavitrika antsoina hoe head block izay voatahiry ao anaty fitadidiana; Ny sakana misy angona taloha dia azo alaina amin'ny mmap(). Izany dia manafoana ny filΓ na manangana ny cache misaraka, fa midika ihany koa fa mila mamela toerana ampy ho an'ny cache rafitra fiasana ianao raha te-hanontany angona tranainy kokoa noho izay azon'ny bloc head.
Midika koa izany fa ny fanjifana fitadidiana virtoaly Prometheus dia hijery avo be, izay tsy tokony hanahy.

TSDB Analysis ao amin'ny Prometheus 2

Hevitry ny famolavolana mahaliana iray hafa dia ny fampiasana ny WAL (soraty diary mialoha). Araka ny hitanao avy amin'ny antontan-taratasy fitehirizana, Prometheus dia mampiasa WAL mba hisorohana ny fianjerana. Indrisy fa tsy voarakitra tsara ny fomba fiasa manokana hiantohana ny fahaveloman'ny angon-drakitra. Ny Prometheus version 2.3.2 dia mametaka ny WAL amin'ny kapila isaky ny 10 segondra ary tsy azo amboarina ity safidy ity.

Compactions

Prometheus TSDB dia natao toy ny tranombarotra LSM (Log Structured Merge): arotsaka tsindraindray mankany amin'ny kapila ny sakana lohany, raha manambatra sakana maromaro kosa ny mekanika famandrihan-toerana mba hialana amin'ny fisavana sakana be loatra mandritra ny fanontaniana. Eto ianao dia afaka mahita ny isan'ny sakana izay nojereko teo amin'ny rafitra fitsapana taorian'ny andro entana.

TSDB Analysis ao amin'ny Prometheus 2

Raha te hianatra bebe kokoa momba ny fivarotana ianao dia azonao atao ny mandinika ny rakitra meta.json, izay misy fampahalalana momba ireo sakana misy sy ny fomba nahatonga azy ireo.

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

Ny fampitandremana ao amin'ny Prometheus dia mifamatotra amin'ny fotoana nandroahana ny lohany amin'ny kapila. Amin'izao fotoana izao dia azo atao ny hetsika maromaro toy izany.

TSDB Analysis ao amin'ny Prometheus 2

Toa tsy voafetra amin'ny fomba rehetra ny compaction ary mety miteraka spikes I/O lehibe mandritra ny famonoana.

TSDB Analysis ao amin'ny Prometheus 2

Ny enta-mavesatra CPU

TSDB Analysis ao amin'ny Prometheus 2

Mazava ho azy fa misy fiantraikany ratsy eo amin'ny hafainganan'ny rafitra izany, ary miteraka fanamby lehibe ho an'ny fitahirizana LSM ihany koa: ahoana ny fomba fanaovana compaction hanohanana ny tahan'ny fangatahana avo lenta nefa tsy miteraka overhead be loatra?
Ny fampiasana ny fahatsiarovana ao amin'ny dingan'ny compaction dia toa mahaliana ihany koa.

TSDB Analysis ao amin'ny Prometheus 2

Hitantsika hoe ahoana, aorian'ny fametahana, ny ankamaroan'ny fitadidiana dia manova ny toetry ny Cached ho Free: midika izany fa nesorina tao ny fampahalalana mety ho sarobidy. Manontany tena raha ampiasaina eto fadvice() na teknika fanamafisam-peo hafa, sa noho ny nahafahan'ny cache tamin'ny sakana rava nandritra ny fametahana?

Famerenana aorian'ny tsy fahombiazana

Mitaky fotoana ny fanarenana ny tsy fahombiazana, ary misy antony tsara. Ho an'ny fikorianan'ny firaketana an-tapitrisany isan-tsegondra, dia tsy maintsy niandry 25 minitra teo ho eo aho raha natao ny fanarenana tamin'ny alΓ lan'ny 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."

Ny olana lehibe amin'ny fizotran'ny fanarenana dia ny fanjifana fahatsiarovana ambony. Na dia eo aza ny zava-misy fa amin'ny toe-javatra mahazatra ny mpizara dia afaka miasa stably amin'ny mitovy habe ny fahatsiarovana, raha nianjera dia mety tsy ho tafarina noho ny OOM. Ny hany vahaolana hitako dia ny manafoana ny fanangonana angon-drakitra, mampiakatra ny mpizara, avelao ho sitrana ary avereno indray miaraka amin'ny fanangonana.

Mangatsiaka

Ny fitondran-tena iray hafa tokony hotadidina mandritra ny fanafanana dia ny fifandraisana misy eo amin'ny fampandehanana ambany sy ny fanjifana loharanon-karena be aorian'ny fanombohana. Nandritra ny sasany, saingy tsy ny rehetra no nanomboka, dia nahita enta-mavesatra lehibe amin'ny CPU sy ny fitadidiana aho.

TSDB Analysis ao amin'ny Prometheus 2

TSDB Analysis ao amin'ny Prometheus 2

Ny banga amin'ny fampiasana fitadidiana dia manondro fa tsy afaka manamboatra ny fanangonana rehetra hatrany am-piandohana i Prometheus, ary very ny fampahalalana sasany.
Tsy hitako ny antony marina mahatonga ny CPU sy ny fitadidiana avo lenta. Miahiahy aho fa izany dia noho ny famoronana andian-potoana vaovao ao amin'ny loha-doha miaraka amin'ny matetika.

Miakatra ny enta-mavesatra CPU

Ho fanampin'ny fametahana, izay mamorona entana I/O avo be, dia nahatsikaritra spikes lehibe amin'ny enta-mavesatra CPU isaky ny roa minitra aho. Lava kokoa ny fipoahana rehefa ambony ny fikorianan'ny fidirana ary toa avy amin'ny mpanangom-pako an'i Go no nahatonga azy, ary misy core sasany efa feno feno.

TSDB Analysis ao amin'ny Prometheus 2

TSDB Analysis ao amin'ny Prometheus 2

Tsy dia misy dikany loatra ireo hitsambikina ireo. Hita fa rehefa mitranga ireo dia lasa tsy misy ny teboka fidirana anatiny sy ny metrik'i Prometheus, ka miteraka fahabangana ny angona mandritra ireo fe-potoana ireo.

TSDB Analysis ao amin'ny Prometheus 2

Azonao atao ihany koa ny manamarika fa mihidy iray segondra ny mpanondrana Prometheus.

TSDB Analysis ao amin'ny Prometheus 2

Hitantsika ny fifandraisana amin'ny fanangonana fako (GC).

TSDB Analysis ao amin'ny Prometheus 2

famaranana

TSDB ao amin'ny Prometheus 2 dia haingana, afaka mitantana andiam-potoana an-tapitrisany ary miaraka amin'ny firaketana an'arivony isan-tsegondra mampiasa fitaovana maotina. Mahavariana ihany koa ny fampiasana CPU sy disk I/O. Ny ohatra nataoko dia nampiseho metrika 200 isan-tsegondra isaky ny fototra ampiasaina.

Mba hanomanana ny fanitarana, dia mila mitadidy momba ny habetsahan'ny fahatsiarovana ampy, ary izany dia tsy maintsy ho tena fahatsiarovana. Ny habetsaky ny fitadidiana nampiasaina izay nojereko dia manodidina ny 5 GB isaky ny rakitsoratra 100 isan-tsegondra amin'ny renirano miditra, izay miaraka amin'ny cache rafitra miasa dia nanome fahatsiarovana 000 GB teo ho eo.

Mazava ho azy fa mbola betsaka ny asa tsy maintsy atao mba hanamaivanana ny CPU sy ny kapila I / O spikes, ary tsy mahagaga izany raha jerena ny fampitahana ny tanora TSDB Prometheus 2 amin'ny InnoDB, TokuDB, RocksDB, WiredTiger, saingy samy nanana nitovy tamin'izany izy ireo. olana eo am-piandohan'ny fiainany.

Source: www.habr.com

Add a comment