PostgreSQL jÀlgimise pÔhitÔed. Aleksei Lesovski

Soovitan tutvuda Aleksei Lesovski ettekande kokkuvÔttega Data Egret'ist "PostgreSQL jÀlgimise pÔhitÔed".

Selles ettekandes rÀÀgib Aleksei Lesovski PostgreSQL statistika pĂ”hiaspektidest, nende tĂ€hendusest ja sellest, miks need peaksid olema jĂ€lgimises; millised diagrammid peaksid olema jĂ€lgimises, kuidas neid lisada ja kuidas neid tĂ”lgendada. Ettekanne on kasulik andmebaasiadministraatoritele, sĂŒsteemiadministraatoritele ja arendajatele, kes on huvitatunud Postgres'i tĂ”rkeotsingust.

Vaata videot

PostgreSQL jÀlgimise pÔhitÔed. Aleksei Lesovski

Minu nimi on Aleksei Lesovski, esindan ettevÔtet Data Egret.

Natuke sĂ”nu enda kohta. Alustasin kunagi ammu sĂŒsteemiadministraatorina.

Haldasin erinevaid Linuxe, tegelesin erinevate Linuxiga seotud asjadega, st virtualiseerimise, jĂ€lgimisega, töötasin proksiga jne. Kuid mingil hetkel hakkasin rohkem tegelema andmebaasidega, PostgreSQLiga. See meeldis mulle vĂ€ga. Ja mingil hetkel hakkasin PostgreSQLile pĂŒhendama oma tööajast suurema osa. Nii ma slowly muutusin PostgreSQL DBA-ks.

Ja on olnud minu karjÀÀri vĂ€ltel pidev huvi statistika, jĂ€lgimise ja telemeetriaga seotud teemade ĂŒle. Kui olin sĂŒsteemiadministraator, tegelesin ma Zabbixiga vĂ€ga pĂ”hjalikult. Kirjutasin ka vĂ€ikese komplekti skripte, mis zabbix-extensions. See oli oma ajal ĂŒsna populaarne. Seal sai jĂ€lgida vĂ€ga erinevaid olulisi asju, mitte ainult Linuxit, vaid ka muid komponente.

Praegu tegeleme PostgreSQL-iga. Kirjutan juba midagi muud, mis vĂ”imaldab töötada PostgreSQL-i statistikaga. Selle nimi on pgCenter (artikkel Habrisse — PostgreSQL statistika ilma nĂ€rvide ja pingeteta).

PostgreSQL jÀlgimise pÔhitÔed. Aleksei Lesovski

LĂŒhike sissejuhatus. Millised on meie tellijate ja klientide olukorrad? Juhtunud on mĂ”ni probleem, mis on seotud andmebaasiga. Ja kui andmebaas on juba taastatud, tuleb osakonnajuhataja vĂ”i arenduse juhataja ja ĂŒtleb: «SĂ”brad, peaksime andmebaasi jĂ€lgima, sest midagi halba juhtus ja tulevikus ei tohi sellist asja juhtuda». Siit algab huvitav protsess jĂ€lgimissĂŒsteemi valimise vĂ”i olemasoleva jĂ€lgimissĂŒsteemi kohandamise osas, et saaksime jĂ€lgida oma andmebaasi – PostgreSQL, MySQL vĂ”i mĂ”ni muu. Ja kolleegid hakkavad ĂŒksteisele soovitama: «Olen kuulnud, et on olemas selline andmebaas. Kasutame seda». Kolleegid hakkavad omavahel vaidlema. Ja lĂ”ppkokkuvĂ”ttes selgub, et valime mĂ”ne andmebaasi, aga PostgreSQL jĂ€lgimine on selles ĂŒsna nĂ”rk ja peame ikkagi midagi kohandama. Korjame GitHubist mĂ”ningaid hoidlaid, kloonime neid, kohandame skripte, seadistame neid veelgi. Ja lĂ”puks osutub see kĂ€sitööks.

PostgreSQL jÀlgimise pÔhitÔed. Aleksei Lesovski

SeetĂ”ttu pĂŒĂŒan selles ettekandes anda mĂ”ned teadmised, kuidas valida monitooring mitte ainult PostgreSQL-i, vaid ka teiste andmebaaside jaoks. Samuti pakun teadmisi, mis vĂ”imaldavad teil tĂ€iustada oma monitooringut, et saada sellest tĂ”eliselt kasu, vĂ”imaldades oma andmebaasi jĂ€lgida ja ennetada vĂ”imalikke avariisid, mis vĂ”ivad tekkida.

Ja need ideed, mis ettekandes kÀsitleme, on otse tÔlgendatavad igasuguste andmebaaside, olgu need relatsioonilised andmebaasid vÔi noSQL, jaoks. SeetÔttu ei kÀsitle me siin ainult PostgreSQL-i, vaid pakume ka palju retsepte, kuidas seda PostgreSQL-is rakendada. Olemas on pÀringute nÀited, nÀited entiteetidest, mis on PostgreSQL-is monitooringuks olemas. Ja kui teie andmebaasis on sarnaseid komponente, mida saab monitooringusse lisada, saate neid ka kohandada ja see on hea.

PostgreSQL jÀlgimise pÔhitÔed. Aleksei LesovskiEttekandes ma ei hakka
rÀÀkima sellest, kuidas saata ja salvestada mÔÔdikuid. Ma ei rÀÀgi midagi andmete jĂ€rel töötlemisest ja nende kasutajale esitamisest. Samuti ei kĂ€sitle ma midagi hĂ€iresĂŒsteemidest.
Kuna ma rÀÀgin, nĂ€itan ma erinevaid olemasolevaid jĂ€lgimise ekraanipilte ja kritiseerime neid. Siiski pĂŒĂŒan ma mitte nimetada brĂ€nde, et mitte luua reklaame ega vastureklaame nendele toodetele. Seega kĂ”ik kokkusattumised on juhuslikud ja jÀÀvad teie fantaasiale.
PostgreSQL jÀlgimise pÔhitÔed. Aleksei Lesovski
Alustame sellest, mis on jĂ€lgimine. JĂ€lgimine on vĂ€ga oluline asi, mis peab olema olemas. Seda mĂ”istavad kĂ”ik. Kuid samas ei kuulu jĂ€lgimine Ă€riproduktsi hulka ega mĂ”juta otseselt ettevĂ”tte kasumit, mistĂ”ttu pööratakse jĂ€lgimisele alati tĂ€helepanu alles siis, kui aega jÀÀb. Kui meil on aega, tegeleme jĂ€lgimisega, kui aega ei ole, siis OK, paneme selle backlogi ja tuleb kunagi tagasi nende ĂŒlesannete juurde.

SeetÔttu on meie praktikas, kui me tuleme klientide juurde, jÀlgimine sageli alahinnatud ja tal puuduvad huvitavad asjad, mis aitaksid meil andmebaasiga paremini töötada. SeepÀrast tuleb jÀlgimist alati tÀiustada.

Andmebaasid on keerulised asjad, mida tuleb ka jĂ€lgida, sest andmebaasid on teabehoidlad. Teave on ettevĂ”tte jaoks vĂ€ga oluline ja seda ei tohi mingil juhul kaotada. Samas on andmebaasid vĂ€ga keerulised tarkvara tĂŒkid, mis koosnevad paljusid komponente. Paljusid neist komponentidest tuleb jĂ€lgida.

PostgreSQL jĂ€lgimise pĂ”hitĂ”ed. Aleksei LesovskiKui rÀÀgime konkreetselt PostgreSQL-ist, siis seda vĂ”ib kujutada nagu skeemi, mis koosneb paljusid komponente, mis omavahel suhtlevad. Samuti on PostgreSQL-is nn Stats Collector allĂŒksus, mis vĂ”imaldab koguda statistikat nende allĂŒksuste töö kohta ja pakkuda administraatorile vĂ”i kasutajale liidest, mille abil nad saavad seda statistikat vaadata.

See statistika on esitatud teatud funktsioonide ja vaadete (view) kogumina. Neid vĂ”ib ka tabeliteks nimetada. See tĂ€hendab, et tavapĂ€rase psql kliendi kaudu saate ĂŒhendust luua andmebaasiga, teha nende funktsioonide ja vaadete suhtes valiku ning saada juba konkreetseid numbreid PostgreSQL allĂŒksuste töö kohta.

Saate need numbrid lisada oma lemmik jĂ€lgimissĂŒsteemi, joonistada graafikud, lisada funktsioone ja saada pikaajalist analĂŒĂŒsi.

Kuid sel teema ma ei kÀsitle kÔiki neid funktsioone, sest see vÔiks vÔtta terve pÀeva. RÀÀgin vaid paarist-kolmest-neljast asjast ja sellest, kuidas need aitavad jÀlgimist paremaks muuta.
PostgreSQL jÀlgimise pÔhitÔed. Aleksei Lesovski
Ja kui rÀÀkida andmebaasi jÀlgimisest, siis mida tuleb jÀlgida? Esiteks tuleb jÀlgida kÀttesaadavust, sest andmebaas on teenus, mis pakkub klientidele juurdepÀÀsu andmetele, ning peame jÀlgima selle kÀttesaadavust, samuti mÔningaid selle kvaliteedi- ja kvantitatiive omadusi.

PostgreSQL jÀlgimise pÔhitÔed. Aleksei Lesovski

Samuti tuleb jĂ€lgida kliente, kes meie andmebaasiga ĂŒhendust vĂ”tavad, sest nad vĂ”ivad olla nii normaalsed kui ka kahjulikud kliendid, kes vĂ”ivad andmebaasile kahju teha. Neid tuleb samuti jĂ€lgida ja nende tegevust jĂ€lgida.

PostgreSQL jÀlgimise pÔhitÔed. Aleksei Lesovski

Kui kliendid liituvad andmebaasiga, on selge, et nad hakkavad töötama meie andmete kallal, seega peame jÀlgima ka seda, kuidas kliendid andmetega töötavad: milliste tabelitega, vÀhemal mÀÀral milliste indeksitega. See tÀhendab, et me peame hindama koormust, mida meie kliendid tekitavad.

PostgreSQL jÀlgimise pÔhitÔed. Aleksei Lesovski

Aga ka koormus koosneb muidugi pĂ€ringutest. Rakendused ĂŒhenduvad andmebaasi, pöördudes andmete poole pĂ€ringute kaudu, seega on oluline hinnata, millised pĂ€ringud meil andmebaasis on, jĂ€lgida nende adekvaatsust, et need ei oleks halvasti kirjutatud ning et mĂ”ned valikud tuleks ĂŒmber kirjutada ja muuta nii, et need töötaksid kiiremini ja parema tootlikkusega.

PostgreSQL jÀlgimise pÔhitÔed. Aleksei Lesovski

Ja kui me rÀÀgime andmebaasist, siis andmebaas – see on alati taustaprotsessid. Taustaprotsessid aitavad hoida andmebaasi jĂ”udlust heas seisundis, seetĂ”ttu vajavad nad oma tööks teatud hulga ressursse. Samuti vĂ”ivad nad kattuda kliendi pĂ€ringute ressurssidega, seetĂ”ttu vĂ”ib taustaprotsesside ahne töö otseselt mĂ”jutada kliendi pĂ€ringute jĂ”udlust. SeetĂ”ttu tuleb neid samuti jĂ€lgida ja jĂ€lgida, et taustaprotsesside osas ei tekiks mingisuguseid ebatĂ€psusi.

PostgreSQL jÀlgimise pÔhitÔed. Aleksei Lesovski

Ja kĂ”ik see, mis puudutab andmebaasi jĂ€lgimist, jÀÀb sĂŒsteemse metrikaga seotuks. Kuid arvestades, et suurem osa meie infrastruktuurist liigub pilve, jÀÀvad ĂŒksiku hosti sĂŒsteemsed metrikad alati teisejĂ€rgulisteks. Kuid andmebaasides on need endiselt olulised ja sĂŒsteemsete metrikate jĂ€lgimine on muidugi samuti vajalik.

PostgreSQL jÀlgimise pÔhitÔed. Aleksei Lesovski

SĂŒsteemsete metrikatega on enam-vĂ€hem kĂ”ik hĂ€sti, kĂ”ik tĂ€napĂ€eva jĂ€lgimisse sĂŒsteemid toetavad neid meetrikaid, kuid ĂŒldiselt on ikka veel mĂ”ningaid komponente puudu ning teatud asju tuleb lisada. Nendest rÀÀgin ka, mĂ”ned slaidid on nende kohta.

PostgreSQL jÀlgimise pÔhitÔed. Aleksei Lesovski
Esimese plaani punkt on kĂ€ttesaadavus. Mis on kĂ€ttesaadavus? KĂ€ttesaadavus minu mĂ”istes tĂ€hendab, et andmebaas suudab teenindada ĂŒhendusi, st andmebaas on ĂŒles tĂ”stetud ja see aktsepteerib ĂŒhendusi klientidelt. Ja seda kĂ€ttesaadavust saab hinnata mitmete omadustega. Need omadused on vĂ€ga mugav tuua juhtpaneelidele.

PostgreSQL jÀlgimise pÔhitÔed. Aleksei Lesovski
KĂ”ik teavad, mis on juhtpaneelid. See on siis, kui sa heidad ĂŒhe pilgu ekraanile, kus on koondatud vajalik teave. Ja sa saad kohe mÀÀrata – kas andmebaasis on probleem vĂ”i mitte.
Seega tuleb andmebaasi kĂ€ttesaadavus ja teised vĂ”tmeomadused alati tuua juhtpaneelidele, et see teave oleks kĂ€epĂ€rast, alati lĂ€hedal. MĂ”ned tĂ€iendavad ĂŒksikasjad, mis aitavad Ă”nnetuste uurimisel, tuleks juba tuua sekundaarsetele juhtpaneelidele vĂ”i peita drilldown-linkidesse, mis viivad vĂ€liste jĂ€lgimisse sĂŒsteemidesse.

PostgreSQL jÀlgimise pÔhitÔed. Aleksei Lesovski

Üks tuntud seire sĂŒsteemide nĂ€ide. See on tĂ”eliselt vinged seire sĂŒsteem. See kogub palju andmeid, kuid minu arvates on sellel kummaline arusaam juhtpaneelidest. Seal on link "loo juhtpaneel". Kuid kui te loote juhtpaneeli, siis loote te teatud loendi, mis koosneb kahest veerust, teatud graafikute loendi. Ja kui peate midagi vaatama, hakkate hiirega klĂ”psima, kerima, otsima vajalikku graafikut. Sellele kulub aega, st juhtpaneele, nagu selliseid, ei ole. On ainult graafikute loendid.

PostgreSQL jÀlgimise pÔhitÔed. Aleksei Lesovski

Mida tuleks nendele juhtpaneelidele lisada? VĂ”ib alustada sellisest omadusest nagu reageerimisaeg. PostgreSQL-is on vaade pg_stat_statements. Vaikimisi on see keelatud, kuid see on ĂŒks tĂ€htsamaid sĂŒsteemivaateid, mida tuleb alati lubada ja kasutada. See salvestab teavet kĂ”ikide toimingus olevate pĂ€ringute kohta, mis andmebaasis on tĂ€idetud.

Seega saame alustada sellest, et vĂ”ime vĂ”tta kĂ”igi pĂ€ringute tĂ€itmise koguaega ja jagada selle pĂ€ringute arvuga, kasutades eeltoodud vĂ€ljade andmeid. Kuid see on vaid keskmine temperatuur haiglas. Saame lĂ€htuda ka muudest vĂ€ljadest – minimaalne, maksimaalne ja mediaan pĂ€ringute tĂ€itmise aeg. Oleme vĂ”imelised looma isegi persentiile, PostgreSQL-is on selleks vastavad funktsioonid. Saame hankida mingid numbrid, mis iseloomustavad meie andmebaasi vastamise aega juba tehtud pĂ€ringute pĂ”hjal, st me ei tee vale pĂ€ringut 'select 1' ja ei vaata vastusaega, vaid analĂŒĂŒsime vastuste aegu juba tehtud pĂ€ringute jĂ€rgi ning esitleme neid kas individuaalse numbrina vĂ”i joonistame nende pĂ”hjal graafiku.

Samuti on oluline jĂ€lgida sĂŒsteemi genereeritavate vigade arvu hetkel. Selleks saab kasutada pg_stat_database vaadet. Me jĂ€lgime xact_rollback vĂ€lja. See vĂ€li nĂ€itab mitte ainult tagasivĂ”tmiste arvu, mis andmebaasis toimub, vaid arvestab ka vigade arvu. Ütleme, et saame selle numbri meie juhtpaneelile kuvada ja jĂ€lgida, kui palju vigu meil hetkel on. Kui vigu on palju, on see juba hea pĂ”hjus vaadata logisid ja uurida, millised need vead on ja miks need esinevad, ning seejĂ€rel juba uurida ja lahendada need.

PostgreSQL jÀlgimise pÔhitÔed. Aleksei Lesovski

Saame lisada sellise asja nagu tahhograaf. See on tehingute arv sekundis ja pĂ€ringute arv sekundis. Ütleme nii, et saate neid numbreid kasutada oma andmebaasi praeguse jĂ”udluse jĂ€lgimiseks ja vaadata, kas on pĂ€ringute, tehingute tippe, vĂ”i vastupidi, andmebaas on alakoormatud, kuna mĂ”ni taustaprogramm on vĂ€ljas. Seda numbrit on oluline pidevalt jĂ€lgida ja meeles pidada, et meie projekti jaoks on selline jĂ”udlus normaalne, samas kui kĂ”rgemad ja madalamad vÀÀrtused on probleemsed ja arusaamatud, seega tuleb vaadata, miks sellised numbrid.

Kuna me peame hindama tehingute arvu, saame taas pöörduda pg_stat_database vaate poole. Saame liita commit arvu ja rollback arvu ning saada tehingute arvu sekundis.

KĂ”ik mĂ”istavad, et ĂŒhte tehingusse vĂ”ib mahtuda mitmeid pĂ€ringuid? SeetĂ”ttu on TPS ja QPS veidi erinevad.

PÀringute arvu sekundis saab hankida pg_stat_statements'i kaudu ja lihtsalt arvutada kÔigi tehtud pÀringute summa. On selge, et me vÔrdleme praegust vÀÀrtust eelmisega, lahutame, saame delfi ja saame arvu.

PostgreSQL jÀlgimise pÔhitÔed. Aleksei Lesovski

Soovides on vÔimalik lisada ka tÀiendavaid mÔÔdikuid, mis aitavad hinnata meie andmebaasi kÀttesaadavust ja jÀlgida, kas on olnud mÔningaid seisu aegu.

Üks selline mÔÔdik on kĂ€ttesaadavus (uptime). Kuid PostgreSQL-i kĂ€ttesaadavus on veidi petlik. Selgitan, miks. Kui PostgreSQL kĂ€ivitatakse, algab kĂ€ttesaadavuse arvestamine. Kuid kui nĂ€iteks öösel toimub mingi protsess ja OOM-killer lĂ”petab PostgreSQL-i alamprotsessi, siis PostgreSQL katkestab kĂ”igi klientide ĂŒhendused, nullib jagatud mĂ€lu ja alustab taastamist viimase kontrollpunkti pĂ”hjal. Ja kuni see taastamine kestab, ei aktsepteeri andmebaas uusi ĂŒhendusi, nii et seda olukorda saab hinnata kui seisu aega. Kuid kĂ€ttesaadavuse arvestus ei nulli, sest see arvestab postmasteri kĂ€ivitamisest alates esimesest hetkest. SeetĂ”ttu vĂ”ib selliseid olukordi ĂŒle vaadata.

Samuti tuleks jĂ€lgida tĂŒhjendajate (vacuum) arvu. Kas kĂ”ik teavad, mis on autovacuum PostgreSQL-is? See on huvitav alamsĂŒsteem PostgreSQL-is. Selle kohta on kirjutatud palju artikleid, palju on tehtud ettekandeid. TĂŒhjendamise kohta on palju arutelusid, kuidas see peaks töötama. Paljud peavad seda vĂ€ltimatuks kurjuseks. Kuid see on tĂ”si. See on mingis mĂ”ttes prĂŒgikorjamise analoog, mis puhastab aegunud rea versioonid, mis ei ole enam ĂŒhegi tehingu jaoks vajalikud, ja vabastab ruumi tabelites, indeksites uute ridade jaoks.

Miks on vaja seda jĂ€lgida? Sest tĂŒhjendamine vĂ”ib mĂ”nikord teha suure kahju. See sööb palju ressursse ja kliendi pĂ€ringud kannatavad selle tĂ”ttu.

Ja seda tuleks jĂ€lgida pg_stat_activity vaate kaudu, millest ma rÀÀgin jĂ€rgmises osas. See vaade nĂ€itab praegust aktiivsust andmebaasis. Selle aktiivsuse kaudu saame jĂ€lgida, kui palju tĂŒhjendusi on praegu töös. Me saame jĂ€lgida tĂŒhjendusi ja nĂ€ha, et kui meie limiit on ĂŒletatud, siis see on pĂ”hjus, miks uurida PostgreSQL seadeid ja proovida tĂŒhjendamise tööd optimeerida.

Teine PostgreSQL-i omadus on see, et PostgreSQL kannatab pikaajaliste tehingute all. Eriti tehingute, mis kauem pĂŒsivad ja midagi ei tee. Need on nn stat idle-in-transaction. Selline tehing hoiab kinni lukud, takistab vakuumi tööd. Ja tagajĂ€rjena - tabelid paisuvad, nende suurus suureneneb. Ja pĂ€ringud, mis töötavad nende tabelitega, hakkavad aeglasemalt töötama, sest tuleb igasuguseid vanu rea versioone mĂ€lust kettale ja tagasi eksponeerida. SeetĂ”ttu tuleb jĂ€lgida ka kĂ”ige pikemaid tehingute ja vakuumi pĂ€ringute aega. Ja kui me nĂ€eme mĂ”ningaid protsesse, mis on juba vĂ€ga kaua töötanud, rohkem kui 10-20-30 minutit OLTP koormuse korral, siis tuleks neile tĂ€helepanu pöörata ja nad sundida lĂ”petama vĂ”i optimeerida rakendust, et neid ei kutsutaks esile ja nad ei ripuks nii kaua. AnalĂŒĂŒtilise koormuse puhul on 10-20-30 minutit normaalne, seal on mĂ”nikord isegi pikemaid.

PostgreSQL jÀlgimise pÔhitÔed. Aleksei Lesovski
Edasi liigume variandi juurde, kus on ĂŒhendatud kliendid. Kui oleme juba koostanud juhtpaneeli ja avaldanud seal olulised kĂ€ttesaadavuse meetrid, vĂ”ime sinna lisada ka tĂ€iendavat teavet ĂŒhendatud klientide kohta.

Teave ĂŒhendatud klientide kohta on oluline, kuna PostgreSQLi vaatepunktist on kliendid erinevad. On head kliente ja on ka halbu kliente.

Lihtne nĂ€ide. Klienti mĂ”istan rakendusena. Rakendus on ĂŒhendatud andmebaasiga ja hakkab kohe saatma sinna oma pĂ€ringuid, andmebaas töötleb neid ja tĂ€idab, tulemused saadetakse kliendile tagasi. Need on head ja Ă”iged kliendid.

On olukordi, kus klient on ĂŒhendatud, hoiab ĂŒhendust, kuid ei tee samas midagi. Ta on idle olekus.

Kuid on ka halbu kliente. NĂ€iteks, sama klient ĂŒhendas end, avas tehingu, tegi andmebaasis midagi ja seejĂ€rel lĂ€ks koodi, et pöörduda vĂ€lise allika poole vĂ”i andmete töötlemiseks. Kuid ta ei sulgenud tehingut. Ja tehing jÀÀb andmebaasi ja hoiab rida lukus. See on halb olukord. Ja kui Ă€kki rakendus kuskil oma sees katkeb erandi (Exception) tĂ”ttu, vĂ”ib tehing jÀÀda avatuks vĂ€ga pikaks ajaks. Ja see mĂ”jutab otseselt PostgreSQL-i jĂ”udlust. PostgreSQL töötab aeglasemalt. SeetĂ”ttu on selliseid kliente oluline Ă”igeaegselt jĂ€lgida ja sundida nende töö lĂ”petamist. Samuti tuleb optimeerida oma rakendusest, et selliseid olukordi ei tekiks.

Teised halvad kliendid on ootejĂ€rjekorras olevad kliendid. Kuid nad muutuvad halbadeks olukordade tĂ”ttu. NĂ€iteks lihtsalt seisev tehing: vĂ”ib avada tehingu, lukustada mĂ”ned read ja siis kuskil koodi sees see katkeb, jĂ€ttes rippuma tehingu. Tuleb teine klient, kes kĂŒsib samu andmeid, kuid ta peab silmitsi seisma lukustusega, sest see rippuv tehing hoiab juba lukustusi mĂ”nes vajalikus reaas. Ja teine tehing jÀÀb ootele, kuni esimene tehing lĂ”petatakse vĂ”i selle administraator sunnib seda sulgema. Nii vĂ”ivad ootavad tehingud koguneda ja ĂŒletada andmebaasi ĂŒhenduste limiiti. Ja kui limiit ĂŒletatakse, siis rakendus ei saa enam andmebaasiga töötada. See on juba kriitiline olukord projekti jaoks. SeetĂ”ttu on halbu kliente vaja jĂ€lgida ja nendele Ă”igeaegselt reageerida.

PostgreSQL jÀlgimise pÔhitÔed. Aleksei Lesovski

Teine nĂ€ide jĂ€lgimisest. Siin on juba korralik armatuurlaud. Ülal on teavet ĂŒhenduste kohta. DB-ĂŒhendused – 8 tĂŒkki. Ja see on kĂ”ik. Meil pole teavet selle kohta, millised kliendid on aktiivsed, millised kliendid lihtsalt ootavad, mitte midagi ei tee. Pole teavet ummistunud tehingute ja ooteĂŒhenduste kohta, st see nĂ€it on lihtsalt numbrina, mis nĂ€itab ĂŒhenduste arvu ja see on kĂ”ik. Edasi mĂ”elge ise.
PostgreSQL jÀlgimise pÔhitÔed. Aleksei Lesovski
SeetĂ”ttu, et seda teavet jĂ€lgimisele lisada, tuleb pöörduda sĂŒsteemi vaate pg_stat_activity poole. Kui veedate palju aega PostgreSQL-is, siis see vaade on tĂ”eliselt vÀÀrtuslik ning see peaks muutuma teie sĂ”braks, kuna see nĂ€itab praegust aktiivsust PostgreSQL-is, st mis seal toimub. Iga protsessi kohta on eraldi rida, mis nĂ€itab teavet selle protsessi kohta: milliselt hostilt ĂŒhendus on loodud, millise kasutaja all, millise nimega, millal tehing kĂ€ivitati, milline on praegu kĂ€ivitatav pĂ€ring ja milline pĂ€ring oli eelmine. Seega saame kliendi olekut hinnata stat vĂ€lja jĂ€rgi. TeisisĂ”nu, saame selle vĂ€lja alusel grupeerida ja saada need statsid, mis praegu andmebaasis on ning ĂŒhenduste arvu, mis on sellega statsiga andmebaasis. Ja juba saadud numbrid saame saata meie jĂ€lgimisele ja nende pĂ”hjal graafikuid joonistada.
Samuti on oluline hinnata tehingu kestust. Olen juba rÀÀkinud, et on tĂ€htis hinnata vaakumite kestust, kuid tehingud on samuti tĂ€pselt nii hinnatavad. On vĂ€ljad xact_start ja query_start. Need nĂ€itavad, ĂŒtleme nii, tehingu algus- ja pĂ€ringu algusaega. Me vĂ”tame funktsiooni now(), mis nĂ€itab praegust ajamĂ€rki ja lahutame sellest tehingu ja pĂ€ringu ajatempli. Ja saame tehingu kestuse, pĂ€ringu kestuse.

Kui nĂ€eme pikki tehinguid, peame need juba lĂ”petama. OLTP-koormuse jaoks peetakse pikki tehinguid selliseks, mis kestab ĂŒle 1-2-3 minuti.. OLAP-koormuse puhul on pikad tehingud normaalsed, kuid kui need kestavad rohkem kui kaks tundi, siis on see samuti mĂ€rk sellest, et kuskil on meil tasakaaluhĂ€ire.

PostgreSQL jÀlgimise pÔhitÔed. Aleksei Lesovski
Kui kliendid on andmebaasi sisse loginud, hakkavad nad meie andmetega tööd tegema. Nad pöörduvad tabelite poole, nad pöörduvad indeksite poole, et saada andmeid tabelist. Oluline on hinnata, kuidas kliendid nende andmetega töötavad.

See on vajalik, et hinnata meie töökoormust ja umbkaudu mĂ”ista, millised tabelid on meie jaoks kĂ”ige «kuumemad». NĂ€iteks vajame seda olukordades, kus soovime «kuumad» tabelid paigutada kiiresti SSD-salvestusse. NĂ€iteks vĂ”ime arhiivi tabelid, mida me juba ammu ei kasuta, viia «kĂŒlma» arhiivi SATA-kettale ja lasta neil seal elada, nendele pÀÀsemine toimub vastavalt vajadusele.

Samuti on see kasulik anomaaliate avastamiseks erinevate vÀljaandmiste ja juurutamiste jÀrel. Oletame, et projekt kÀivitas uue funktsiooni. NÀiteks lisati uus funktsionaalsus andmebaasi haldamiseks. Ja kui me joonistame vÀlja tabelite kasutamise graafikud, saame nendel graafikutel kergesti avastada neid anomaaliaid. NÀiteks uuenduste vÔi kustutuste Àkilised tÔusud. See on vÀga hÀsti nÀhtav.

Samuti on vÔimalik avastada "sulgunud" statistika anomaaliaid. Mida see tÀhendab? PostgreSQL-l on vÀga tugev ja hea pÀringute planeerija. Arendajad kulutavad palju aega selle arendamisele. Kuidas see töötab? Heade plaanide koostamiseks kogub PostgreSQL teatud ajavahemike jÀrel statistikat tabelites andmete jaotumise kohta. Need on kÔige sagedasemad vÀÀrtused: ainulaadsete vÀÀrtuste arv, teave NULL-e kohta tabelis, palju teavet.

Selle statistika pÔhjal koostab planeerija mitu pÀringut, valib kÔige optimaalsema ja kasutab seda pÀringu plaani pÀringu tÀitmiseks ja andmete tagastamiseks.

Kord, kui statistika "ujub". Andmete kvaliteet ja hulk on mingil moel tabelis muutunud, kuid statistika ei kogunenud. Ja loodud plaanid vÔivad osutuda mitteoptimaalseteks. Kui meie plaanid osutuvad kogutud jÀlgimise ja tabelite jÀrgi mitteoptimaalseteks, saame neid anomaaliaid nÀha. NÀiteks, kui andmed on kvaliteetselt muutunud ja koondindeks hakkas kasutama jÀrjestikust lÀbitöötamist tabelis, st kui pÀringul on vaja tagastada vaid 100 rida (piirang on limit 100), siis selle pÀringu jaoks tehakse tÀiuslik lÀbimine. Ja see avaldab alati vÀga halba mÔju jÔudlusele.

Ja me saame seda nÀha jÀlgimises. VÔime juba vaadata seda pÀringut, sooritada explain, koguda statistikat, ehitada uus tÀiendav indeks. Ja juba reageerida sellele probleemile. SeetÔttu on see oluline.

PostgreSQL jÀlgimise pÔhitÔed. Aleksei Lesovski

Teine nĂ€ide jĂ€lgimisest. Ma arvan, et paljud on selle Ă€ra tundnud, kuna see on vĂ€ga populaarne. Kes kasutab seda oma projektides Prometheus? А ĐșŃ‚ĐŸ ĐžŃĐżĐŸĐ»ŃŒĐ·ŃƒĐ”Ń‚ ŃŃ‚ĐŸŃ‚ ĐżŃ€ĐŸĐŽŃƒĐșт ŃĐŸĐČĐŒĐ”ŃŃ‚ĐœĐŸ с Prometheus? Đ”Đ”Đ»ĐŸ ĐČ Ń‚ĐŸĐŒ, Ń‡Ń‚ĐŸ ĐČ ŃŃ‚Đ°ĐœĐŽĐ°Ń€Ń‚ĐœĐŸĐŒ Ń€Đ”ĐżĐŸĐ·ĐžŃ‚ĐŸŃ€ĐžĐž ŃŃ‚ĐŸĐłĐŸ ĐŒĐŸĐœĐžŃ‚ĐŸŃ€ĐžĐœĐłĐ° Đ”ŃŃ‚ŃŒ ĐŽĐ°ŃˆĐ±ĐŸŃ€ĐŽ ĐŽĐ»Ń Ń€Đ°Đ±ĐŸŃ‚Ń‹ с PostgreSQL – postgres_exporter Prometheus. Kuid siin on ĂŒks halb detail.

PostgreSQL jÀlgimise pÔhitÔed. Aleksei Lesovski

On mitmeid graafikuid. Ühtsuse mÔÔtmena on nĂ€idatud baidid, st seal on 5 graafikut: Insert data, Update data, Delete data, Fetch data ja Return data. Kuid mÔÔtĂŒhikute puhul on nĂ€idatud baidid. Probleem seisneb aga selles, et PostgreSQL statsitikast tagastavad andmed tuple'itena (rea kujul). Seega on need graafikud vĂ€ga hea viis teie töökoormuse vĂ€hendamiseks mitme korra vĂ”rra, kĂŒmnete kordade vĂ”rra, kuna tuple ei ole bait, tuple on rida, see on palju baite ja see on alati muutuva pikkusega. Seega, koormuse arvutamine baidides kasutades tuple'e on pea vĂ”imatu ĂŒlesanne vĂ”i vĂ€ga keeruline. SeetĂ”ttu on alati oluline mĂ”ista, et kui kasutate armatuurlauda vĂ”i sisseehitatud jĂ€lgimist, teeb see seda Ă”igesti ja tagastab teile Ă”igesti hinnatud andmed.

PostgreSQL jÀlgimise pÔhitÔed. Aleksei Lesovski

Kuidas saada statistikat nende tabelite kohta? Selleks on PostgreSQL-s olemas teatud hulk vaateid. Ja peamine vaade on pg_stat_user_tables. User_tables – see tĂ€hendab, et tabelid, mis on loodud kasutaja nimel. Vastupidiselt on sĂŒsteemi vaated, mida PostgreSQL ise kasutab. Ja on kokkuvĂ”tte tabel Alltables, mis sisaldab nii sĂŒsteemi- kui ka kasutajate tabeleid. Saate tugineda ĂŒkskĂ”ik kummale, mis teile rohkem meeldib.

Ülaltoodud vĂ€ljade pĂ”hjal on vĂ”imalik hinnata sisestuste, vĂ€rskenduste ja kustutuste arvu. See paneel, mida ma kasutasin, kasutab neid vĂ€lju töökoormuse omaduste hindamiseks. SeetĂ”ttu saame samuti neile tugineda. Kuid tasub meeles pidada, et need on tuples, mitte baitid, seega ei saa me lihtsalt vĂ”tta ja muuta neid baitideks.

Nende andmete pÔhjal saame koostada nn TopN-tabeleid. NÀiteks Top-5, Top-10. Ja on vÔimalik jÀlgida neid kuumi tabeleid, mida kasutatakse rohkem kui teisi. NÀiteks 5 «kuuma» tabelit sisestamise osas. Ja nende TopN-tabelite pÔhjal hindame meie töökoormust ning saame jÀlgida töökoormuse piike pÀrast igasuguseid avalikustamisi, vÀrskendusi ja juurdepÀÀse.

Samuti on oluline hinnata tabeli suurusi, kuna mĂ”nikord arendajad lisavad uut funktsiooni ja meie tabelid hakkavad suurendama oma suuri mÔÔtmeid, kuna otsustatakse lisada tĂ€iendav andmemaht, kuid ei prognoosita, kuidas see mĂ”jutab andmebaasi suurust. Sellised juhud vĂ”ivad samuti olla meie jaoks ĂŒllatuseks.

PostgreSQL jÀlgimise pÔhitÔed. Aleksei Lesovski

Ja nĂŒĂŒd vĂ€ike kĂŒsimus teile. Milline kĂŒsimus tekib, kui mĂ€rkate andmebaasi serveris koormust? Milline on jĂ€rgmine kĂŒsimus, mis teil tekib?

PostgreSQL jÀlgimise pÔhitÔed. Aleksei Lesovski

Kuid tegelikult tekib jĂ€rgmine kĂŒsimus. Milliseid pĂ€ringuid koormus kutsub esile? St ei ole huvitav vaadata protsesse, mis koormust pĂ”hjustavad. On selge, et kui host on andmebaas, siis seal töötab andmebaas ja on selge, et ainult andmebaasid seal ka töötavad. Kui avame Topi, nĂ€eme seal PostgreSQL protsesside nimekirja, mis midagi teevad. Topist ei selgu, mida nad teevad.

PostgreSQL jÀlgimise pÔhitÔed. Aleksei Lesovski

Seega on vaja tuvastada need pĂ€ringud, mis pĂ”hjustavad suurima koormuse, sest pĂ€ringute hÀÀlestamine toob tavaliselt rohkem kasu kui PostgreSQL vĂ”i operatsioonisĂŒsteemi hÀÀlestamine vĂ”i isegi riistvara hÀÀlestamine. Minu hinnangul on see umbes 80-85-90%. Ja seda tehakse palju kiiremini. PĂ€ringu parandamine vĂ”tab vĂ€hem aega kui konfiguratsiooni korrigeerimine, taaskĂ€ivitamise planeerimine, eriti juhul, kui andmebaasi ei saa taaskĂ€ivitada vĂ”i riistvara lisada. Lihtsam on kuskil pĂ€ringut ĂŒmber kirjutada vĂ”i lisada indeks, et saada juba paremat tulemust sellest pĂ€ringust.

PostgreSQL jÀlgimise pÔhitÔed. Aleksei Lesovski
Seega tuleb jÀlgida pÀringute sisu ja nende adekvaatsust. Vaatame teisi jÀlgimise nÀiteid. Siin on samuti nÀiliselt suurepÀrane jÀlgimine. On teavet replikatsiooni, lÀbilaskevÔime, lukustuste ja ressursside kasutamise kohta. KÔik on suurepÀrane, kuid puudub teave pÀringute kohta. Pole selge, millised pÀringud meie andmebaasis kÀivitatakse, kui kaua need kestavad ja kui palju neid on. Me peame jÀlgimisel alati seda teavet omama.

PostgreSQL jÀlgimise pÔhitÔed. Aleksei Lesovski

Ja selle teabe saamiseks saame kasutada pg_stat_statements moodulit. Selle alusel saab koostada erinevaid diagramme. NÀiteks saame saada teavet kÔige sagedamini esitatavate pÀringute kohta, s.t. nende pÀringute kohta, mis tÀidetakse kÔige rohkem. Jah, ka pÀrast vÀljatÔmmete tegemist on vÀga kasulik sellele pilk heita ja mÔista, kas pÀringute arv on suurenenud.

Saame jÀlgida kÔige aeglasemaid pÀringuid, s.t. neid pÀringuid, mis tÀidetakse kÔige kauem. Need kasutavad protsessorit, nad tarbivad sisendi-vÀljundi ressursse. Saame seda hinnata ka total_time, mean_time, blk_write_time ja blk_read_time vÀljade kaudu.

Saame hinnata ja jÀlgida kÔige ressursimahukamaid pÀringuid, neid, mis loevad kettalt, töötavad mÀluga vÔi vastupidi, genereerivad kirjutamiskoormust.

Saame hinnata kÔige arvukamaid pÀringuid. Need on pÀringud, mis tagastavad suure hulga ridu. NÀiteks vÔib see olla pÀring, kus unustati limiit panna. Ja see tagastab lihtsalt kogu tabeli sisu vÔi midagi, mis on nÔutud tabelite kohta.

Saame ka jÀlgida pÀringuid, mis kasutavad ajutisi faile vÔi ajutisi tabeleid.

PostgreSQL jÀlgimise pÔhitÔed. Aleksei Lesovski
Meil on ka taustaprosessid. Taustaprosessid on eelkÔige kontrollpunktid, mida nimetatakse ka kontrollpunktideks, autovacuum ja replikatsioon.

PostgreSQL jÀlgimise pÔhitÔed. Aleksei Lesovski

Teine nÀide jÀlgimisest. Vasakul on vahekaart Maintenance, liikuge sinna ja loodame nÀha midagi kasulikku. Kuid siin on ainult vakumite ja statistika kogumise tööaeg, rohkem mitte midagi. See on vÀga napp teave, seetÔttu on alati oluline teada, kuidas meie andmebaasis taustaprosessid töötavad ja kas nende tegevusest on probleeme.

PostgreSQL jÀlgimise pÔhitÔed. Aleksei Lesovski

Kontrollpunkte kÀsitledes tasub meeles pidada, et kontrollpunktid kustutavad 'rÀpaseid' lehti sharded mÀlu piirkonnast kÔvakettale, seejÀrel luuakse kontrollpunkt. See kontrollpunkt vÔib hiljem olla kasutatav taastamise kohana, kui PostgreSQL peaks Àkki kokku kukkuma.

Seega, et kĂ”ik "rĂ€pased" lehed kettale lĂ€htestada, tuleb teha teatud kogus kirjutamist. Ja tavaliselt on sĂŒsteemides, kus on palju mĂ€lu, seda vĂ€ga palju. Ja kui meil on kontrollpunkte vĂ€ga sageli lĂŒhikese aja jooksul, siis kettasĂŒsteemi jĂ”udlus kannatab tĂ”siselt. Kliendi pĂ€ringud kannatavad ressursside puuduse all. Nad vĂ”itlevad ressursside pĂ€rast ning neil jÀÀb jĂ”udlusest puudu.

Seega, pg_stat_bgwriter kaudu vÔivad antud vÀljade jÀrgi jÀlgida kontrollpunktide arvu. Ja kui mingis ajavahemikus (nÀiteks 10-15-20 minuti, pool tunni jooksul) on kontrollpunkte vÀga palju, nÀiteks 3-4-5, siis see vÔib juba olla probleem. Ja tuleb vaadata andmebaasi, vaadata konfiguratsiooni, mis sellist kontrollpunktide rohkust pÔhjustab. VÔib-olla toimub mingi suur kirjutamine. Workload'i pÔhjal saame juba hinnata, kuna meil on töökoormuse graafikud juba lisatud. Saame kohandada kontrollpunktide parameetreid nii, et need ei mÔjuta pÀringute jÔudlust.

PostgreSQL jÀlgimise pÔhitÔed. Aleksei Lesovski

Ma tulen jĂ€lle autovacuum’i juurde, sest see on asi, mis nagu juba mainisin, vĂ”ib kergesti mĂ”jutada nii kettahaarde kui ka pĂ€ringute jĂ”udlust, seetĂ”ttu on alati oluline hinnata autovacuum’i mÀÀra.

Autovacuum’i tööde arv andmebaasis on piiratud. Vaikimisi on neid kolm, seega kui meil on pidevalt töötamas kolm töölist, tĂ€hendab see, et meie autovacuum on alakonfigureeritud, tuleb tĂ”sta limite, ĂŒle vaadata autovacuum’i seaded ja minna juba konfiguratsiooni.
On oluline hinnata, millised autovacuum’i töölised meil töötavad. Kas see on kasutaja kĂ€ivitatud, DBA on tulnud ja kĂ€sitsi kĂ€ivitanud mingi vacuum’i, ning see on tekitanud koormuse. Meil on tekkinud mingi probleem. VĂ”i on see autovacuum’ide arv, mis arvestavad tehingute arvutust. MĂ”nedes PostgreSQL versioonides on need vĂ€ga koormavad vacuum’id. Need vĂ”ivad kergesti mĂ”jutada jĂ”udlust, sest need loevad kogu tabelit tĂ€iesti lĂ€bi, skaneerides kĂ”ik plokid selles tabelis.

Ja muidugi, ka vaakumi kestus. Kui meil on pikad vaakumid, mis töötavad vĂ€ga pikka aega, siis see tĂ€hendab, et peaksime taas tĂ€helepanu pöörama vaakumi konfiguratsioonile ja vĂ”ib-olla kaaluma selle seadete ĂŒlevaatamist. Sest vĂ”ib tekkida olukord, kus vaakum töötab tabelis kaua (3-4 tundi), kuid selle töötamise ajal on tabelis jĂ€lle kogunenud suur hulk surnud ridu. Ja nii pea, kui vaakum lĂ”ppeb, peab see tabelit uuesti vaakumeerima. Nii jĂ”uame olukorda – lĂ”putu vaakum. Ja sellisel juhul ei tule vaakum oma tööga toime ning tabelid hakkavad jĂ€rk-jĂ€rgult suurendama oma mahtu, kuigi selles olevate kasulike andmete hulk jÀÀb endiseks. SeetĂ”ttu vaatame alati pikal vaakumite ajal konfiguratsiooni ja pĂŒĂŒame seda optimeerida, kuid samas, et klientide pĂ€ringute jĂ”udlus ei kannataks.

PostgreSQL jÀlgimise pÔhitÔed. Aleksei Lesovski

Praegu ei leidu praktiliselt ĂŒhtegi PostgreSQL-i installatsiooni, kus ei oleks voogedastust. Replikatsioon on andmete edastamise protsess peamehelt kopeerimisprotsessile.

PostgreSQL-is replikatsioon toimub tehingu logi kaudu. Master genereerib tehingu logi. Tehingu logi saadetakse replikale ĂŒle vĂ”rgus ja seal see taastatakse. KĂ”ik on lihtne.

SeetĂ”ttu kasutatakse replikatsiooni viivituse jĂ€lgimiseks vaadet pg_stat_replication. Kuid sellega ei ole kĂ”ik lihtne. Versioonis 10 on vaates toimunud mitmeid muudatusi. Esiteks, mĂ”ned vĂ€ljad on ĂŒmber nimetatud. Ja mĂ”ned vĂ€ljad on lisatud. Versioonis 10 lisandusid vĂ€ljad, mis vĂ”imaldavad hinnata replikatsiooni viivitust sekundites. See on vĂ€ga mugav. Enne versiooni 10 oli vĂ”imalik hinnata replikatsiooni viivitust baitides. See vĂ”imalus jÀÀb alles ka versioonis 10, st saate valida, kumba teile sobib – hinnata viivitust baitides vĂ”i sekundites. Paljud teevad mĂ”lemat.

Kuid siiski, et hinnata replikatsiooni viivitust, tuleb teada tehingu logi positsiooni. Need tehingu logi positsioonid ongi pg_stat_replication vaates. Ütleme nii, et saame funktsiooni pg_xlog_location_diff() abil vĂ”tta kaks punkti tehingu logis. Arvutada nende vahelise erinevuse ja saada replikatsiooni viivitus baitides. See on vĂ€ga mugav ja lihtne.

10. versioonis nimetati see funktsioon ĂŒmber pg_wal_lsn_diff(). Üldiselt, kĂ”ikides funktsioonides, vaadetes, utiliitides, kus ilmus sĂ”na "xlog", asendati see sĂ”naga "wal". See kehtib nii vaadete kui ka funktsioonide kohta. See on selline uuendus.

Pluss, 10. versioonis lisandusid read, mis nÀitavad konkreetselt viivitust. Need on write lag, flush lag ja replay lag. St neid asju on oluline jÀlgida. Kui nÀeme, et meil on replikatsiooni viivitus, tuleb uurida, miks see tekkis, kust see tuli ning probleeme lahendada.

PostgreSQL jÀlgimise pÔhitÔed. Aleksei Lesovski

SĂŒsteemsete mÔÔdikute osas on peaaegu kĂ”ik korras. Kui iga monitoringu loomine algab sĂŒsteemsetest mÔÔdikutest. Need on protsessorite, mĂ€lu, vahetuse, vĂ”rgu ja ketta kasutamine. Kuid paljusid parameetreid ei ole seal vaikimisi olemas.

Kui protsessi utilizeerimisega on kĂ”ik korras, siis ketta utilizeerimisega on probleeme. TĂŒĂŒpiliselt lisavad jĂ€lgimisriistade arendajad teavet lĂ€bilaskevĂ”ime kohta. See vĂ”ib olla iops vĂ”i baitides. Kuid nad unustavad latentsuse ja kettaseadmete utilizeerimise. Need on olulisemad parameetrid, mis aitavad hinnata, kui koormatud meie kettad on ja kui palju nad peavad pidurdama. Kui meil on kĂ”rge latentsus, siis tĂ€hendab see, et kettastega on mingid probleemid. Kui meil on kĂ”rge utilizeerimine, siis tĂ€hendab see, et kettad ei tule toime. Need on kvaliteetsemad omadused kui lĂ€bilaskevĂ”ime.

Kuigi neid statistilisi andmeid saab ka failisĂŒsteemist /proc, nagu tehakse protsessorite utilizeerimise puhul. Miks seda teavet jĂ€lgimistesse ei lisata, ei tea ma. Kuid sellegipoolest on oluline, et see oleks teie jĂ€lgimises.

Sama kehtib ka vÔrguliideste kohta. VÔrgu lÀbilaskevÔime kohta on teavet pakettide, baitide kaupa, kuid siiski puudub teave latentsuse ja utilizeerimise kohta, kuigi see oleks samuti kasulik teave.

PostgreSQL jÀlgimise pÔhitÔed. Aleksei Lesovski

Iga monitooringul on omad puudused. ÜkskĂ”ik millist monitooringut te valite, see ei vasta alati teatud kriteeriumidele. Siiski nad arenevad, lisanduvad uued funktsioonid ja asjad, seega valige midagi ja viige see lĂ”pule.

Ja et edendada, on oluline alati mÔista, mida edastatud statistika tÀhendab ning kuidas seda saab probleemide lahendamiseks kasutada.

Ja mÔned peamised punktid:

  • Alati on vajalik jĂ€lgida kĂ€ttesaadavust, omada armatuurlaudu, et saaksite kiiresti hinnata, kas andmebaas on korras.
  • Alati on oluline teada, millised kliendid töötavad teie andmebaasiga, et saaks halbade kliendi seitsime kĂ”rvaldada.
  • Oluline on hinnata, kuidas need kliendid andmetega töötavad. Tuleb olla teadlik oma töökoormusest.
  • Oluline on hinnata, kuidas see töökoormus luuakse, milliste pĂ€ringute kaudu. Te saate hinnata pĂ€ringuid, optimeerida neid, refaktoreerida, ehitada neile indekseid. See on vĂ€ga oluline.
  • Taustprotsessid vĂ”ivad negatiivselt mĂ”jutada kliendipĂ€ringute töötlemist, seega on oluline jĂ€lgida, et nad ei kasutaks liiga palju ressursse.
  • SĂŒsteemimetriikide abil saate koostada plaanid skaleerimiseks ja oma serverite mahutavuse suurendamiseks, seetĂ”ttu on oluline neid jĂ€lgida ja hinnata.

PostgreSQL jÀlgimise pÔhitÔed. Aleksei Lesovski

Kui see teema teid huvitab, siis vÔite tutvuda nende linkidega.
http://bit.do/stats_collector — see on ametlik dokumentatsioon statistika kogumise jaoks. Seal on kirjeldatud kĂ”iki statistilisi vaateid ja kĂ”iki vĂ€lju. Saate neid lugeda, mĂ”ista ja analĂŒĂŒsida. Ja juba nende pĂ”hjal koostada oma graafikud ning lisada oma jĂ€lgimistesse.

NĂ€idiskeerud:
http://bit.do/dataegret_sql
http://bit.do/lesovsky_sql

See on meie ettevĂ”tte repos ja minu isiklik. Seal on nĂ€idiskeerud. Seal ei ole keerud, mis algavad fraasiga select* from midagi. Need on juba valminud keerud koos ĂŒhendumistega, kasutades huvitavaid funktsioone, mis vĂ”imaldavad tooreid numbreid muuta loetavateks ja mugavateks vÀÀrtusteks, st need on baitide ja aja nĂ€itajad. Saate neid uurida, vaadata, analĂŒĂŒsida, lisada oma jĂ€lgimistesse ning koostada nende pĂ”hjal oma jĂ€lgimised.

KĂŒsimused

KĂŒsimus: Te ĂŒtlesite, et te ei reklaami brĂ€nde, aga minul on siiski huvi - milliseid armatuurlaudu te oma projektides kasutate?
Vastus: Erinevalt. On juhtumeid, kus kĂŒlastame klienti ja tal on juba oma monitorimine. Me anname kliendile nĂ”u, mida tema monitorimisse lisada. Halvem on olukord Zabbiхiga. Sest tal pole vĂ”imalust koostada TopN-graafikuid. Meie kasutame Okmeter, sest me konsulteerisime nende poistega monitorimise osas. Nad tegid PostgreSQL monitorimist meie tĂ€psustatud nĂ”uete pĂ”hjal. Ma kirjutan oma pet-projekti, mis kogub andmeid lĂ€bi Prometheuse ja joonistab neid Grafana. Mul on eesmĂ€rk teha Prometheuses oma eksportija ja seejĂ€rel joonistada kĂ”ik Grafanas.

KĂŒsimus: Kas on olemas AWR-aruannete vĂ”i ... agregatsioonide analooge? Kas te olete millegi taolisega kursis?
Vastus: Jah, ma tean, mis on AWR, see on Ă€ge asi. Praegu on olemas vĂ€ga erinevaid lahendusi, mis rakendavad umbes jĂ€rgmist mudelit. Teatud ajaintervali jĂ€rel kirjutatakse mĂ”ningaid aluseid PostgreSQL-i vĂ”i eraldi andmehoidlasse. Neid saab internetis otsida, need on olemas. Üks sellise lahenduse arendaja istub sql.ru foorumis PostgreSQLi teemas. Teda saab sealt kinni pĂŒĂŒda. Jah, selliseid asju on olemas, neid saab kasutada. Pluss enda pgCenter Ma kirjutangi asja, mis vĂ”imaldab teha sama.

P.S.1 Kui kasutate postgres_exporter'i, siis millist juhtpaneeli te kasutate? Seal on mitu. Need on juba aegunud. Kas vÔib-olla loob kogukond uuendatud mall?

P.S.2 Eemaldasime pganalyze, kuna tegemist on pruugitava SaaS-pakkumisega, mis keskendub sooritusanalĂŒĂŒsile ja automatiseeritud hÀÀlestusettepanekutele.

Ainult registreeritud kasutajad saavad kĂŒsitluses osaleda. Logige sisse, palun.

Milline self-hosted PostgreSQL monitooring (juhtpaneeliga) on teie arvates parim?

  • 30,0%Zabbix + Alexei Lesovskyi lisandused vĂ”i zabbix 4.4 vĂ”i libzbxpgsql + zabbix libzbxpgsql + zabbix3

  • 0,0%https://github.com/lesovsky/pgcenter0

  • 0,0%https://github.com/pg-monz/pg_monz0

  • 20,0%https://github.com/cybertec-postgresql/pgwatch22

  • 20,0%https://github.com/postgrespro/mamonsu2

  • 0,0%https://www.percona.com/doc/percona-monitoring-and-management/conf-postgres.html0

  • 10,0%pganalyze on pruugitav SaaS — ei saa eemaldada1

  • 10,0%https://github.com/powa-team/powa1

  • 0,0%https://github.com/darold/pgbadger0

  • 0,0%https://github.com/darold/pgcluu0

  • 0,0%https://github.com/zalando/PGObserver0

  • 10,0%https://github.com/spotify/postgresql-metrics1

HÀÀletas 10 kasutajat. 26 kasutajat hoidusid.

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster