PostgreSQL jÀlgimise alused. Aleksei Lesovski

Tutvustan teile Alexey Lesovski raporti "PostgreSQL monitooringu alused" tÔlget.

Selles ettekandes rÀÀgib Alexey Lesovski PostgreSQL statistika peamistest punktidest, mida need tĂ€hendab ja miks need peavad olema monitooringus; millised graafikud peaksid olema monitoorimisel, kuidas neid lisada ja kuidas tĂ”lgendada. Ettekanne on kasulik andmebasede administreerijatele, sĂŒsteemiadministraatoritele ja arendajatele, kes on huvitatud PostgreSQL vigaotsimisest.

MĂ€ngi videot

PostgreSQL jÀlgimise alused. Aleksei Lesovski

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

Veidi enda kohta. Alustasin kunagi ammu sĂŒsteemiadministraatorina.

Hallates erinevaid Linuxi sĂŒsteeme, tegelesin erinevate asjadega, mis olid seotud Linuxiga, st virtualiseerimise, monitoorimisega, töötasin proksidega jne. Kuid mingil hetkel hakkasin rohkem tegelema andmebaasidega, PostgreSQL'iga. See meeldis mulle vĂ€ga. Ja mingil hetkel hakkasin PostgreSQL'le pĂŒhendama suurema osa oma tööajast. Nii ma aeglaselt muutusin PostgreSQL DBA-ks.

Ja kogu oma karjÀÀri jooksul on mind alati huvitanud statistika, monitooringu ja telemeetria teemad. Kui olin sĂŒsteemiadministraator, tegelesin tihedalt Zabbixiga. Kirjutasin vĂ€ikese komplekti skripte nagu zabbix-extensions. See oli omal ajal ĂŒsna populaarne. Seal sai monitoorida vĂ€ga erinevaid olulisi asju, mitte ainult Linuxit, vaid ka teisi komponente.

Praegu tegelema PostgreSQL'iga. Kirjutan teistsugust asja, mis vĂ”imaldab töötada PostgreSQL statistika pealt. See kannab nime pgCenter (artikkel Habr's — PostgreSQL statistika muredeta ja pingeteta).

PostgreSQL jÀlgimise alused. Aleksei Lesovski

LĂŒhike sissejuhatus. Millised olukorrad meie tellijatel, meie klientidel esinevad? Juhtub mĂ”ni hĂ€da, mis on seotud andmebaasiga. Ja kui andmebaas on juba taastatud, tuleb osakonna juht vĂ”i arenduse juht ning ĂŒtleb: „Kallis, peaksime andmebaasi jĂ€lgima, sest juhtus midagi halba ja me peame tagama, et midagi sellist ei juhtuks tulevikus.“ Ja siin algab huvitav valikuprotsess jĂ€lgimissĂŒsteemi valimiseks vĂ”i olemasoleva jĂ€lgimissĂŒsteemi kohandamiseks, et saaksime oma andmebaasi — PostgreSQL, MySQL vĂ”i mĂ”ne muu — jĂ€lgida. Ja kolleegid hakkavad ettepanekuid tegema: „Ma olen kuulnud, et selline andmebaas on olemas. Kas me ei vĂ”iks seda kasutada?“ Kolleegid hakkavad omavahel vaidlema. Tulemuseks on, et valime mĂ”ne andmebaasi, kuid PostgreSQL-i jĂ€lgimine on seal nĂ”rgalt esindatud ja alati peab midagi seadistama. Peame vĂ”tma GitHubist mingeid hoidlaid, need kloonima, skripte kohandama, kuidagi tĂ€iustama. Ja lĂ”puks muutub see kĂ€sitööks.

PostgreSQL jÀlgimise alused. Aleksei Lesovski

SeetĂ”ttu pĂŒĂŒan ma selles ettekandes anda teile teavet, kuidas valida jĂ€lgimist mitte ainult PostgreSQL-i, vaid ka andmebaasi jaoks. Ja anda teadmised, mis aitavad teil teie jĂ€lgimist tĂ€iustada, et saada sellest kasu, et saaksite oma andmebaasi jĂ€lgida kasulikult ning Ă”igeaegselt hoiatada vĂ”imalike probleemide eest, mis vĂ”ivad tekkida.

Ja need ideed, mis selles ettekandes esitatakse, saab otse kohandada igasuguste andmebaaside jaoks, olgu need siis SÜB vĂ”i noSQL. SeetĂ”ttu ei ole siin mitte ainult PostgreSQL, vaid ka palju retsepte, kuidas seda PostgreSQL-is teha. Esitatakse pĂ€ringute nĂ€iteid, nĂ€iteid isenditest, mis on PostgreSQL-is jĂ€lgimiseks olemas. Ja kui teie SÜB-il on sarnased asjad, mis vĂ”imaldavad neid jĂ€lgimisse panna, saate neid samuti kohandada, lisada ja kĂ”ik on hĂ€sti.

PostgreSQL jÀlgimise alused. Aleksei LesovskiEttekandes ei rÀÀgi ma
mÔÔdikute edastamisest ja salvestamisest. Ma ei rÀÀgi midagi andmete töötlemise ja kasutajale esitamise kohta. Ja ma ei rÀÀgi midagi hÀirete seadistamisest.
Kuid loo kĂ€igus hakkan ma nĂ€itama erinevaid olemasolevaid monitooringute ekraanipilte ja mĂ”ningaid neist kritiseerima. Pean siiski silmas, et pĂŒĂŒan brĂ€ndide nimesid mitte mainida, et mitte tekitada neile toodetele reklaami vĂ”i vastureklaami. Seega on kĂ”ik sarnased juhtumid juhuslikud ja jÀÀvad teie fantaasiasse.
PostgreSQL jÀlgimise alused. Aleksei Lesovski
Esiteks mĂ”istame, mis on monitooring. Monitooring on vĂ€ga oluline asi, mida on hĂ€dasti vaja. Seda mĂ”istetakse kĂ”ikjal. Kuid samal ajal ei kuulu monitooring Ă€ri toote hulka ega mĂ”juta otseselt ettevĂ”tte kasumit, seetĂ”ttu pööratakse monitooringule alati aega alles siis, kui muud tööd on tehtud. Kui meil on aega, siis tegeleme monitooringuga, kui aega ei ole, siis OK, paneme selle ootele ja tulevikus tuleme nende ĂŒlesannete juurde tagasi.

SeetÔttu meie praktikast, kui me tuleme klientide juurde, on monitooring sageli puudulik ja ei sisalda huvitavaid elemente, mis aitaksid meil andmebaasidega tööd paremini teha. SeetÔttu on monitooringut alati vaja tÀiendada.

Andmebaasid on keerulised asjad, mida tuleb samuti monitooringu alla vÔtta, sest andmebaasid on teabehoidla. Ja teave on ettevÔtte jaoks vÀga oluline, seda ei tohi mingil juhul kaotada. Kuid samas on andmebaasid ka vÀga keerulised tarkvarakomponendid. Need koosnevad paljusid komponente. Ja paljusid neist komponentidest tuleb monitooringu alla vÔtta.

PostgreSQL jĂ€lgimise alused. Aleksei LesovskiKui rÀÀgime konkreetselt PostgreSQL-ist, siis vĂ”ib seda esitada kui sellist skeemi, mis koosneb paljusid komponente. Need komponendid suhtlevad ĂŒksteisega. Ja samal ajal on PostgreSQL-is nn Stats Collectori alamsĂŒsteem, mis vĂ”imaldab koguda statistikat nende alamsĂŒsteemide töö kohta ja anda administreerijale vĂ”i kasutajale teatud liidese, et ta saaks seda statistikat vaadata.

See statistika on esitatud teatud funktsioonide ja vaadete (view) kogumina. Neid vĂ”ib nimetada ka tabeliteks. See tĂ€hendab, et tavalise psql kliendi abil saate andmebaasiga ĂŒhendada, teha nendele funktsioonidele ja vaadetele SELECT-pĂ€ringu ning saada juba konkreetseid numbreid PostgreSQL alamsĂŒsteemide töö kohta.

Saate lisada need numbrid oma lemmik monitooringusĂŒsteemi, koostada graafikuid, lisada funktsioone ja saada pikaajalist analĂŒĂŒsi.

Kuid ma ei kavatse selles raportis arutada kÔiki neid funktsioone, sest see vÔib vÔtta terve pÀeva. Ma keskendun vaid kahele kuni neljale punktile ja rÀÀgin, kuidas need aitavad jÀlgimist paremaks muuta.
PostgreSQL jÀlgimise alused. Aleksei Lesovski
Ja kui rÀÀkida andmebaasi jÀlgimisest, siis mida tuleks jÀlgida? Esiteks tuleb jÀlgida kÀttesaadavust, kuna andmebaas on teenus, mis pakub klientidele juurdepÀÀsu andmetele, ja peame jÀlgima kÀttesaadavust, samuti mÔningaid selle kvaliteetseid ja kvantitatiivseid omadusi.

PostgreSQL jÀlgimise alused. Aleksei Lesovski

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

PostgreSQL jÀlgimise alused. Aleksei Lesovski

Kui kliendid ĂŒhenduvad andmebaasi, siis on ilmne, et nad hakkavad töötama meie andmetega, seega peame jĂ€lgima ka seda, kuidas kliendid andmetega töötavad: milliste tabelitega, vĂ€hemal mÀÀral milliste indexitega. See tĂ€hendab, et peame hindama töökoormust, mille meie kliendid tekitavad.

PostgreSQL jÀlgimise alused. Aleksei Lesovski

Kuid töökoormus koosneb muidugi pĂ€ringutest. Rakendused ĂŒhenduvad andmebaasiga, kutsuvad andmeid vĂ€lja pĂ€ringute kaudu, seega on oluline hinnata, millised pĂ€ringud meil andmebaasis on, jĂ€lgida nende adekvaatsust, et nad ei oleks valesti kirjutatud, ning mĂ”ningaid valikuid tuleks ĂŒmber kirjutada, et need töötaksid kiiremini ja parema jĂ”udlusega.

PostgreSQL jÀlgimise alused. Aleksei Lesovski

Ja kuna me rÀÀgime andmebaasist, siis andmebaas tÀhendab alati taustprotsesse. Taustprotsessid aitavad sÀilitada andmebaasi jÔudlust heas seisus, seega vajavad nad teatud hulga ressursse enda jaoks. Samuti vÔivad nad kattuda klientide pÀringute ressurssidega, seega vÔivad taustprotsesside intensiivne töö otseselt mÔjutada klientide pÀringute jÔudlust. Seega tuleb neid samuti jÀlgida ja vÀltida tasakaaluhÀireid taustprotsesside osas.

PostgreSQL jÀlgimise alused. Aleksei Lesovski

Ja see kĂ”ik andmebaasi jĂ€lgimise osas jÀÀb sĂŒsteemi meetrika. Kuid arvestades, et meie kogu infrastruktuur liigub peamiselt pilve, jÀÀvad eraldi hosti sĂŒsteemi meetrikad alati tagaplaanile. Kuid andmebaasides on need endiselt olulised ja sĂŒsteemi meetrikate jĂ€lgimine on loomulikult samuti vajalik.

PostgreSQL jÀlgimise alused. Aleksei Lesovski

SĂŒsteemi meetrikate osas on enam-vĂ€hem kĂ”ik hĂ€sti, kĂ”ik kaasaegsed jĂ€lgimissĂŒsteemid toetavad neid meetrikaid, kuid ĂŒldiselt mĂ”ningaid komponente siiski puudub ja mĂ”ned asjad on vajalikud lisada. Nendest rÀÀgin ma samuti, paar slaidi on nende kohta.

PostgreSQL jÀlgimise alused. Aleksei Lesovski
Esimene plaani punkt on kĂ€ttesaadavus. Mis on kĂ€ttesaadavus? KĂ€ttesaadavus minu arusaama kohaselt tĂ€hendab andmebaasi vĂ”imet teenindada ĂŒhendusi, st andmebaas on aktiivne, see, nagu teenus, aktsepteerib klientide ĂŒhendusi. Ja seda kĂ€ttesaadavust saab hinnata teatud omadustega. Need omadused on vĂ€ga mugavad paneelidele vĂ€lja toomiseks.

PostgreSQL jÀlgimise alused. Aleksei Lesovski
KÔik teavad, mis on paneelid. See on siis, kui heidad pilku ekraanile, kus on kokku koondatud vajalik teave. Ja sa saad kohe mÀÀrata - kas andmebaasis on probleem vÔi mitte.
Seega andmebaasi kĂ€ttesaadavus ja teised olulised omadused on alati vajalikud paneelidele vĂ€ljatootmiseks, et see teave oleks kĂ€epĂ€rast ja alati sinu lĂ€hedal. MĂ”ned lisadetailid, mis aitavad juhtumite uurimise, avariiolukordade uurimise puhul, peaksid minema teisejĂ€rgulistele paneelidele vĂ”i olema peidetud drilldown-linkidesse, mis viivad kolmandate osapoolte jĂ€lgimissĂŒsteemidesse.

PostgreSQL jÀlgimise alused. Aleksei Lesovski

Ühe tuntud jĂ€lgimissĂŒsteemi nĂ€ide. See on vĂ€ga Ă€ge jĂ€lgimissĂŒsteem. See kogub vĂ€ga palju andmeid, kuid minu arvates on seal kummaline mĂ”isted paneelide osas. Seal on link "loo paneel". Kuid kui sa lood paneeli, siis lood sa teatud loendi, mis koosneb kahest veerust, mingi graafikute loendi. Ja kui sul on vaja midagi vaadata, siis hakkad hiirega klikkima, kerima, otsima vajalikku graafikut. Ja selleks kulub aega, st tĂ”elisi paneele ei ole. On vaid graafikute loendid.

PostgreSQL jÀlgimise alused. Aleksei Lesovski

Mida tuleks nende juhtpaneelide peale lisada? VĂ”ib alustada sellise nĂ€itajaga nagu reageerimisaeg. PostgreSQL-is on vaade pg_stat_statements. Vaikimisi on see vĂ€lja lĂŒlitatud, kuid see on ĂŒks olulisemaid sĂŒsteemi vaateid, mis tuleks alati sisse lĂŒlitada ja kasutada. See salvestab teavet kĂ”igi kĂ€ideldud pĂ€ringute kohta, mis on andmebaasis teostatud.

Seega, me saame lĂ€htuda sellest, et vĂ”ime vĂ”tta kokku kĂ”igi pĂ€ringute tĂ€itmise aja ja jagada selle pĂ€ringute arvuga, kasutades eespool mainitud vĂ€lju. Kuid see on justkui keskmine temperatuur haiglas. Saame lĂ€htuda teistest vĂ€ljadest – minimaalne pĂ€ringu tĂ€itmise aeg, maksimaalne ja mediaan. Ja isegi saame koostada protsente, PostgreSQL-is on selleks vastavad funktsioonid. Saame vĂ€lja tuua mĂ”ned numbrid, mis iseloomustavad meie andmebaasi reageerimisaega juba teostatud pĂ€ringute pĂ”hjal, s.t. me ei tee vale pĂ€ringut 'select 1' ja vaata reageerimisaega, vaid analĂŒĂŒsime vastuste aegu juba teostatud pĂ€ringute pĂ”hjal ja esitleme kas eraldi numbrina vĂ”i joonistame selle pĂ”hjal graafiku.

Samuti on oluline jĂ€lgida vigu, mida sĂŒsteem praegu genereerib. Selleks saame kasutada vaadet pg_stat_database. Me vaatame vĂ€ljale xact_rollback. See vĂ€li nĂ€itab mitte ainult tabeli tagasivĂ”tmise arvu, vaid arvestab ka vigade arvu. Ütleme nii, et saame selle numbri oma juhtpaneelile vĂ€lja tuua ja vaadata, kui palju vigu meil praegu on. Kui vigu on palju, on see juba hea pĂ”hjus vaadata logisid ja nĂ€ha, millised need vead on ja miks need juhtuvad, ning seejĂ€rel uurida ja lahendada need.

PostgreSQL jÀlgimise alused. Aleksei Lesovski

Saame lisada sellise asja nagu tahhomeeter. See on tehingute arv sekundis ja pĂ€ringute arv sekundis. Ütleme nii, et vĂ”ite neid numbreid kasutada oma andmebaasi praeguse jĂ”udluse indikaatorina ja jĂ€lgida, kas on pĂ€ringute vĂ”i tehingute tippe, vĂ”i vastupidi, et andmebaas on alatalletatud, sest mĂ”ni backend on kokku kukkunud. Seda numbrit on oluline alati 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 on.

Tehingute arvu hindamiseks vÔime jÀlle pöörduda pg_stat_database vaate poole. Saame liita commitide ja rollbackide arvu, et saada tehingute arv sekundis.

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

PÀringute arvu sekundis saab saada pg_stat_statements'ist ning lihtsalt arvutada vÀlja kÔikide tÀidetud pÀringute summa. On selge, et me vÔrdleme praegust vÀÀrtust varasemaga, lahutame selle, saame delta ja saame arvu.

PostgreSQL jÀlgimise alused. Aleksei Lesovski

VÔime soovi korral lisada tÀiendavaid mÔÔdikuid, mis aitavad samuti hinnata meie andmebaasi kÀttesaadavust ja jÀlgida, kas on olnud mingit katkestust.

Üks neist mÔÔdikest on uptime. Kuid uptime PostgreSQL-is on veidi keeruline asi. RÀÀgin, miks. Kui PostgreSQL kĂ€ivitub, algab uptime arvestamine. Kuid kui mĂ”nel hetkel, nĂ€iteks öösel, tĂ€ideti mĂ”ni ĂŒlesanne, tuli OOM-killer ja sundis PostgreSQL-lt alamharu protsessi katkestama, siis sel juhul lĂ”petab PostgreSQL kĂ”igi klientide ĂŒhendused, tĂŒhjendab sharding mĂ€lu ja alustab taastamist viimase kontrollpunkti juures. Ja kuni see taastamine kestab, ei vĂ”ta andmebaas ĂŒhendusi, seega saab seda olukorda hinnata kui katkestust. Kuid samas uptime mÔÔdik ei nulli ennast, sest see arvestab postmaster'i kĂ€ivitamise aega alates esimesest hetkes. SeetĂ”ttu vĂ”ib selliseid olukordi mööda vaadata.

Samuti tuleb jĂ€lgida vakumeerimise töötlusprotsesside arvu. Kas kĂ”ik tunnevad autovacuum'i PostgreSQL-is? See on huvitav alamsĂŒsteem PostgreSQL-is. Selle kohta on kirjutatud palju artikleid, peetud palju ettekandeid. Palju arutelusid vakumeerimise ĂŒle, kuidas see peaks töötama. Paljud peavad seda vĂ€ltimatuks kurjuseks. Ja see on tĂ”si. See on omamoodi prĂŒgikasti koristaja, mis puhastab aegunud ridade versioonid, mis ei ole ĂŒhegi tehingu jaoks vajalikud, ja vabastab ruumi tabelites, indeksites uute ridade jaoks.

Miks tuleb seda jÀlgida? Sest vakumeerimine vÔib vahel olla vÀga valus. See sööb suure hulga ressursse ja kliendipÀringud kannatavad selle tÔttu.

Ja tuleks jĂ€lgida selle aktiivsust pg_stat_activity vaate kaudu, millest ma rÀÀgin jĂ€rgmises osas. See vaade nĂ€itab praegust tegevust andmebaasis. Selle tegevuse kaudu saame jĂ€lgida, kui palju vaakume on hetkel töös. Saame jĂ€lgida vaakume ja nĂ€ha, et kui meil on ĂŒletatud piirang, siis on see pĂ”hjus vaadata PostgreSQL seadeid ja kuidas vaakumi tööd optimeerida.

Teine PostgreSQL omadus on see, et PostgreSQL kannatab vĂ€ga pikkaealiste tehingute all. Eriti tehingute, mis on pikka aega aktiivsed, kuid ei tee midagi. Need on nn stat idle-in-transaction tehingud. Selline tehing hoiab blokeeringuid ja takistab vaakumi tööd. TagajĂ€rjeks on see, et tabelid paisuvad, nende suurus suureneb. Ja pĂ€ringud, mis töötavad nende tabelitega, hakkavad töötama aeglasemalt, sest tuleb vanu ridade versioone mĂ€lust kettale ja tagasi kaevama. SeetĂ”ttu on oluline jĂ€lgida ka pikkade tehingute aega, kĂ”ige pikemate vaakumipĂ€ringute aega. Ja kui me nĂ€eme mingeid protsesse, mis töötavad juba vĂ€ga pikka aega, rohkem kui 10-20-30 minutit OLTP-koormuse jaoks, siis tuleb neile tĂ€helepanu pöörata ja need kas sulgeda sundkorras vĂ”i optimeerida rakendust, et need ei kutsuks ĂŒles ja ei seisaks liiga kaua. Ala-analyytika koormuse jaoks on 10-20-30 minutit normaalne, seal vĂ”ib olla ka veelgi pikemaid.

PostgreSQL jÀlgimise alused. Aleksei Lesovski
JĂ€rgmine on variant ĂŒhendatud klientidega. Kui oleme juba koostanud juhtpaneeli, ja seni, kuni oleme sellele vĂ€lja riputanud vĂ”tmeprotsendid saadavusest, saame sinna lisada ka tĂ€iendavat teavet ĂŒhendatud klientide kohta.

Teave ĂŒhendatud klientide kohta on oluline, sest PostgreSQL vaatepunktist on kliendid erinevad. On hĂ€id kliente ja halbu kliente.

Lihtne nĂ€ide. Klient, mida ma mĂ”istan, on rakendus. Rakendus on ĂŒhendatud andmebaasi ja saadab sinna kohe oma pĂ€ringud, andmebaas töötleb neid ja tĂ€idab, tulemused tagastatakse kliendile. Need on head ja Ă”iged kliendid.

MĂ”nikord juhtub, et klient on ĂŒhendatud, hoiab ĂŒhendust, kuid ei tee selle samal ajal midagi. Ta on idle olekus.

Kuid on ka halbu kliente. NĂ€iteks, kui klient ĂŒhendub, avab tehingu, teeb midagi andmebaasis ja seejĂ€rel liigub koodi, et pöörduda vĂ€lise allika poole vĂ”i teha seal andmete töötlemist. Kuid ta ei sule tehingut. Ja tehing jÀÀb andmebaasi rippuma ja hoiab rida lukus. See on halb olukord. Kui rakendus peaks kuskil eksitama (Exception), siis vĂ”ib tehing jÀÀda avatud vĂ€ga kauaks. Ja see mĂ”jutab otseselt PostgreSQLi jĂ”udlust. PostgreSQL töötab aeglasemalt. SeetĂ”ttu on oluline selliseid kliente Ă”igeaegselt jĂ€lgida ja nende töö lĂ”petada. Samuti on vajalik oma rakendust optimeerida, et sarnaseid olukordi vĂ€ltida.

Teised halvad kliendid on ootel kliendid. Kuid nad muutuvad halbadeks asjaolude tĂ”ttu. NĂ€iteks tavaline seisev tehing: klient vĂ”ib avada tehingu, vĂ”tta lukud mĂ”nele reale, kuid seejĂ€rel kukub see kuskil koodis ja jÀÀb riputama. Kui teine klient kĂŒsib samu andmeid, siis ta seisab silmitsi lukustusega, kuna see rippuv tehing juba hoiab lukke mĂ”nedele vajalikule reale. Ja teine tehing jÀÀb ootama, kuni esimene tehing lĂ”petatakse vĂ”i selle administraator sunniviisiliselt suletakse. Seega, ootavad tehingud vĂ”ivad koguneda ja ĂŒletada andmebaasi ĂŒhenduste piiri. Ja kui piir on ĂŒletatud, ei saa rakendus andmebaasi enam kasutada. See on projekti jaoks juba kriitiline olukord. SeetĂ”ttu tuleb halbu kliente jĂ€lgida ja neile Ă”igeaegselt reageerida.

PostgreSQL jÀlgimise alused. Aleksei Lesovski

Teine nĂ€ide jĂ€lgimisest. Ja siin on korralik armatuurlaud. Ülemises osas on teave ĂŒhenduste kohta. DB connection – 8 tĂŒkki. Ja see on kĂ”ik. Meil ei ole teavet selle kohta, millised kliendid on aktiivsed, millised kliendid lihtsalt ootavad, ei tee midagi. Ei ole teavet riputatud tehingute ja ootavate ĂŒhenduste kohta, st see on lihtsalt number, mis nĂ€itab ĂŒhenduste arvu ja kĂ”ik. Edasi mĂ”elge ise.
PostgreSQL jÀlgimise alused. Aleksei Lesovski
Seega, et lisada see teave jĂ€lgimisele, tuleb pöörduda sĂŒsteemi vaate pg_stat_activity poole. Kui veedate palju aega PostgreSQLis, on see vĂ€ga hea vaade, mis peaks saama teie sĂ”braks, kuna see nĂ€itab hetkeaktiivsust PostgreSQLis, st mis seal toimub. Iga protsessi kohta on eraldi rida, mis nĂ€itab teavet selle protsessi kohta: milliselt hostilt on ĂŒhendus tehtud, kumba kasutajat kasutatakse, millise nimega, millal tehing kĂ€ivitati, mis pĂ€ring hetkel kĂ€ib ja milline pĂ€ring kĂ€idi viimati. Seega saame kliendi seisundit hinnata vĂ€ljaande stat jĂ€rgi. Ütlemisi vĂ”ib selle vĂ€ljaande pĂ”hjal grupeerida ja saada need stat’id, mis andmebaasis on hetkel olemas, ja ĂŒhenduste arvu, mis antud stat’iga andmebaasi siseneb. Saadud numbreid saame edastada meie jĂ€lgimisele ja joonistada neist graafikuid.
Samuti on oluline hinnata tehingu kestvust. Olen juba öelnud, et on oluline hinnata vakumeid, kuid tehinguid hinnatakse samamoodi. On vĂ€ljaanded xact_start ja query_start. Need, ĂŒtleme nii, nĂ€itavad tehingu ja pĂ€ringu kĂ€ivitamise aega. Me vĂ”tame funktsiooni now(), mis nĂ€itab praegust ajamĂ€rki, ja lahutame tehingu ja pĂ€ringu timestamp’id. Nii saame tehingu kestvuse ja pĂ€ringu kestvuse.

Kui nĂ€eme pikki tehinguid, peame need lĂ”petama. OLTP-koormuse korral on pikad tehingud need, mis kestavad ĂŒle 1-2-3 minuti.. OLAP-koormuse korral on pikad tehingud normaalsed, kuid kui need kestavad ĂŒle kahe tunni, siis on see samuti mĂ€rk sellest, et kuskil on meil moonutus.

PostgreSQL jÀlgimise alused. Aleksei Lesovski
Kui kliendid on andmebaasiga ĂŒhendatud, hakkavad nad töötama meie andmetega. Nad pöörduvad tabelite poole, nad pöörduvad indekste poole, et saada andmeid tabelist. On oluline hinnata, kuidas kliendid nende andmetega töötavad.

See on vajalik meie töökoormuse hindamiseks ja selleks, et mĂ”ista, millised tabelid on kĂ”ige "kuumemad". NĂ€iteks on see kasulik olukordades, kus soovime "kuumad" tabelid paigutada kiirele SSD salvestusse. Samas vĂ”ivad vanad arhiivtabelid, mida me enam ei kasuta, minna „kĂŒlmale“ arhiivi SATA-diskidele, kus nad vĂ”ivad jÀÀda ootele, ning nendele juurdepÀÀs toimub vajadusel.

See on samuti kasulik erinevate anomaaliate tuvastamiseks pÀrast uute versioonide ja juurutuste vÀljatoomist. Oleta, et projekt tutvustas uut funktsiooni. NÀiteks lisati uus funktsionaalsus andmebaasiga töötamiseks. Kui me koostame tabelite kasutamise graafikud, saame nende graafikute pealt kergesti tuvastada need anomaaliad, nÀiteks uuenduste (update) vÔi kustutuste (delete) tÔusud. See on vÀga selgelt jÀlgitav.

Samuti saab tuvastada anomaaliaid "kallistatud" statistikast. Mida see tĂ€hendab? PostgreSQL-il on vĂ€ga tugev ja hea pĂ€ringute planeerija. Arendajad pĂŒhendavad palju aega selle arendamisele. Kuidas see töötab? Heade plaanide koostamiseks kogub PostgreSQL teatud ajavahemike jĂ€rel statistikat tabelite andmete jaotuse kohta. See sisaldab kĂ”ige sagedasemaid vÀÀrtusi: unikaalsete vÀÀrtuste arv, teave NULL vÀÀrtuste kohta tabelis ja palju muud teavet.

Selle statistika pÔhjal koostab planeerija mitu pÀringut, valib kÔige optimaalse vÔi sobivama ning kasutab seda pÀringute plaani pÀringu tÀitmiseks ja andmete tagastamiseks.

Kuid vÔib juhtuda, et statistika "ujub". Tabelis on andmete kvaliteet ja hulk muutunud, kuid statistika ei ole selle ajaga uuendatud. Kujundatud plaanid vÔivad osutuda mitte-optimaalseteks. Ja kui meie plaanid osutuvad mitte-optimaalseteks kogutud jÀlgimise pÔhjal, tabelite osas, saame nÀha neid anomaaliaid. NÀiteks on kusagil andmed kvaliteetselt muutunud ja koos indeksi kasutamisega kasutatakse jÀrjestikku tabeli lÀbilugemist, st kui pÀring peab tagastama vaid 100 rida (on seatud piirmÀÀr limit 100), siis selle pÀringu jaoks teostatakse tÀielik lÀbilugemine. Ja see mÔjutab alati tulemuslikkust vÀga negatiivselt.

Ja saame seda jÀlgida monitoorimises. Saame vaadata sellele pÀringule, teostada explain'i, koguda statistikat, luua uue tÀiendava indeksi ja reageerida sellele probleemile. SeetÔttu on see oluline.

PostgreSQL jÀlgimise alused. Aleksei Lesovski

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

PostgreSQL jÀlgimise alused. Aleksei Lesovski

On mitmeid graafikuid. Ja mÔÔtĂŒhikuna on nĂ€idatud baite, st seal on 5 graafikut: Insert data, Update data, Delete data, Fetch data ja Return data. Kuid statistika PostgreSQL-is tagastab andmed tuple'is (rea kujul). SeetĂ”ttu on need graafikud vĂ€ga hea viis teie töökoormuse alahindamiseks mitmekordselt, kĂŒmnetesse kordades, sest tuple ei ole bait, tuple on rida, mis on palju baite ja on alati muutuva pikkusega. Seega, töökoormuse arvutamine baidides kasutades tuplesid on ebarealistlik ĂŒlesanne vĂ”i vĂ€ga keeruline. SeetĂ”ttu, kui kasutate armatuurlauda vĂ”i sisseehitatud monitooringut, on alati oluline mĂ”ista, et see töötab Ă”igesti ja tagastab teile tĂ€pselt hinnatud andmed.

PostgreSQL jÀlgimise alused. Aleksei Lesovski

Kuidas saada statistikat nende tabelite kohta? Selleks on PostgreSQL-is teatud vaate perede rĂŒhm. Peamine vaade on pg_stat_user_tables. User_tables – see tĂ€hendab, et tabelid on loodud kasutaja nimel. Vastandina on sĂŒsteemivaatet, mida kasutab PostgreSQL ise. Ja on kokkuvĂ”tte tabel Alltables, mis hĂ”lmab nii sĂŒsteemis kui ka kasutaja tabelit. Saate tugineda ĂŒkskĂ”ik millisele, mis teile rohkem meeldib.

Ülaltoodud vĂ€ljade pĂ”hjal on vĂ”imalik hinnata insertide, update'ide ja delete'ide arvu. See armatuurlaud, mida ma kasutasin, kasutab just neid vĂ€lju töökoormuse omaduste hindamiseks. SeetĂ”ttu saame ka neid kasutada. Kuid tuleb meeles pidada, et need on tuples, mitte baidid, seega ei saa me lihtsalt vĂ”tta ja teha seda baidideks.

Nende andmete pÔhjal saame luua nn TopN-tabeleid. NÀiteks Top-5, Top-10. Ja saab jÀlgida neid kuumaid tabeleid, mida kasutatakse rohkem kui teisi. NÀiteks 5 "kuuma" tabelit sisestamise osas. Ja nende TopN-tabelite pÔhjal hindame oma töökoormust ja suudame hinnata töökoormuse piike pÀrast erinevaid vÀljalaskmisi, uuendusi ja deploy'e.

Samuti on oluline hinnata tabeli suurust, sest mĂ”nikord arendajad kasutavad uut funktsionaalsust ning meie tabelid hakkavad suurendama oma mahtu, kuna otsustatakse lisada veel andmeid, kuid ei prognoosita, kuidas see mĂ”jutab andmebaasi suurust. Sellised olukorrad vĂ”ivad meie jaoks olla ĂŒllatuseks.

PostgreSQL jÀlgimise alused. Aleksei Lesovski

Ja nĂŒĂŒd on teil ĂŒks vĂ€ike kĂŒsimus. Milline kĂŒsimus tekib, kui mĂ€rkate andmebaasi serveri koormust? Milline jĂ€rgmine kĂŒsimus te tahate esitada?

PostgreSQL jÀlgimise alused. Aleksei Lesovski

Aga tegelikult tekib jĂ€rgnev kĂŒsimus. Millised pĂ€ringud pĂ”hjustavad koormust? Ehk ei ole huvitav vaadata protsesse, mis koormust tekitavad. On selge, et kui host on andmebaasiga, siis seal töötab andmebaas ja seal ongi ainult andmebaasid. Kui me avame Top'i, siis nĂ€eme seal PostgreSQL protsesside nimekirja, mis midagi teevad. Top'ist ei ole selge, mida nad teevad.

PostgreSQL jÀlgimise alused. Aleksei Lesovski

Seega tuleb tuvastada need pĂ€ringud, mis pĂ”hjustavad kĂ”rgeima koormuse, kuna pĂ€ringute hÀÀlestamine toob tavaliselt rohkem kasu kui PostgreSQL vĂ”i operatsioonisĂŒsteemi konfigureerimine vĂ”i isegi riistvara hÀÀlestamine. Minu hinnangul on see umbes 80-85-90%. Ja seda on palju kiiremini teha. Kiirem on parandada pĂ€ringut kui konfigureerida, planeerida taaskĂ€ivitust, eriti kui andmebaasi ei saa taaskĂ€ivitada, vĂ”i lisada riistvara. Lihtsam on kuskil pĂ€ringut ĂŒmber kirjutada vĂ”i lisada indeks, et saada parem tulemus.

PostgreSQL jÀlgimise alused. Aleksei Lesovski
Seega on vajalik jÀlgida pÀringute adekvaatsust. VÔtame teise nÀite jÀlgimisest. Ja siin tundub ka imeline jÀlgimine. On teave replikatsiooni, lÀbilaskevÔime, lukustuste, ressursside kasutamise kohta. KÔik on suurepÀrane, kuid puudub teave pÀringute kohta. Ei ole selge, millised pÀringud meie andmebaasis tÀidetakse, kui kaua nad kestavad ja kui palju neid on. Me peame alati jÀlgimises olema selle teabe olemasolu.

PostgreSQL jÀlgimise alused. Aleksei Lesovski

Ja selle teabe saamiseks saame kasutada pg_stat_statements moodulit. Selle alusel on vÔimalik koostada erinevaid graafikuid. NÀiteks saame saada teavet kÔige sagedasemate pÀringute kohta, st nende pÀringute kohta, mis tÀidetakse kÔige rohkem. Jah, pÀrast juurutamisi on samuti vÀga kasulik sellele pilku heita ja aru saada, kas pÀringutes on toimunud mÔni jÀrsk tÔus.

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

Saame hinnata ja jÀlgida kÔige ressursimahukamaid pÀringuid, mis loevad kettalt, kas kasutavad mÀlu vÔi vastupidi, genereerivad kirjutuskoormust.

Saame hinnata ka kĂ”ige heldemaid pĂ€ringuid. Need on pĂ€ringud, mis tagastavad suurt hulka ridu. NĂ€iteks vĂ”ib see olla mĂ”ni pĂ€ring, millele ei pandud piiri ja see tagastab lihtsalt kogu tabeli sisu vĂ”i pĂ€ringute sisu, mis on kĂŒsitud tabelitest.

Samuti on vÔimalik jÀlgida pÀringuid, mis kasutavad ajutisi faile vÔi ajutisi tabeleid.

PostgreSQL jÀlgimise alused. Aleksei Lesovski
Ja meil on jÀÀnud taustaprotsessid. Taustaprotsessid, eelkÔige kontrollpunktid vÔi neid nimetatakse ka kontrollpunktideks, on autovakuu ja replikatsioon.

PostgreSQL jÀlgimise alused. Aleksei Lesovski

Teine nÀide jÀlgimisest. Vasakul on hooldushulga vahekaart, lÀheme sinna ja loodame nÀha midagi kasulikku. Kuid siin on vaid vakkuumi ja statistika kogumise tööaeg, mitte rohkem. See on vÀga vaene teave, seetÔttu on alati oluline omada teavet selle kohta, kuidas meie andmebaasi taustaprotsessid toimivad ja kas nende töö on tekitanud probleeme.

PostgreSQL jÀlgimise alused. Aleksei Lesovski

Kui vaatame kontrollpunkte, siis tuleb meeles pidada, et kontrollpunktid kirjutavad „rĂ€pased“ lehed killustatud mĂ€lust kettale ja loovad seejĂ€rel kontrollpunkti. Ja see kontrollpunkt vĂ”ib hiljem kasutada punktina taastamiseks, kui PostgreSQL peaks ootamatult sulgema.

Seega, et kĂ”ik "rĂ€past" lehte kettale kirjutada, on vajalik teatud kirjutamise maht. Ja tavaliselt on sĂŒsteemides, kus on suur mĂ€lumaht, see vĂ€ga suur. Ja kui meil on kontrollpunktid vĂ€ga sageli lĂŒhikese aja jooksul, siis kettasuuruse tootlikkus langeb oluliselt. Ja kliendi pĂ€ringud kannatavad ressursside nappuse all. Nad vĂ”itlevad ressursside nimel ja neil puudub tootlikkus.

Seega, kaudu pg_stat_bgwriter saame nimetatud valdkondade kaudu jÀlgida tekkivate kontrollpunktide arvu. Ja kui meil on teatud ajavahemiku jooksul (10-15-20 minuti jooksul, pool tundi) vÀga palju kontrollpunkte, nÀiteks 3-4-5, siis see vÔib juba olla probleem. Ja tuleb vaadata andmebaasi, vaadata konfiguratsiooni, mis pÔhjustab sellist kontrollpunktide hulga. VÔib-olla toimub mingisugune suur kirjutamine. Töökohustuse pÔhjal saame juba hinnata, kuna meil on töökoormuse graafikud juba lisatud. Me saame juba seadistada kontrollpunktide parameetreid ja teha nii, et need ei mÔjuta pÀringute tootlikkust liiga palju.

PostgreSQL jÀlgimise alused. Aleksei Lesovski

Ma tulen taas autovacuum'i juurde, sest see on asi, nagu ma juba ĂŒtlesin, mis vĂ”ib oluliselt mĂ”jutada nii kĂ”vaketaste kui ka pĂ€ringute tootlikkust, seega on alati oluline hinnata autovacuum'i arvu.

Andmebaasis on autovacuum'i töömeeste arv piiratud. Vaikimisi on neid kolm, seega kui meil on kogu aeg kolm töömeest andmebaasis, tĂ€hendab see, et meie autovacuum on vale seadistusega, limiidid tuleb tĂ”sta, autovacuum'i seadeid tuleb ĂŒle vaadata ja minna konfiguratsiooni.
Oluline on hinnata, millised autovacuum'i töötajad meil on. Kas see on kÀivitatud kasutaja poolt, DBA tuli ja kÀivitas kÀsitsi mingisuguse autovacuum'i, ja see tekitas koormuse. Meil tekkis mÔni probleem. VÔi on see autovacuum'i hulk, mis keerab tehingute loendit. MÔnede PostgreSQL versioonide jaoks on need vÀga rasked autovacuum'id. Ja need vÔivad kergesti mÔjutada tootlikkust, kuna nad loevad kogu tabeli tÀielikult, skaneerivad kÔik plokid selles tabelis.

Ja, ja ja vaak vĂ”i jooksul. Kui meil on pikad vaakumid, mis töötavad vĂ€ga kaua, siis see tĂ€hendab, et peaksime uuesti vaatama vaakumi konfiguratsiooni ja vĂ”ib-olla selle seadeid ĂŒle vaatama. Sest vĂ”ib tekkida olukord, kus vaakum töötab tabeli kallal kaua (3-4 tundi), kuid selle töö jooksul on tabelisse kogunenud taas suur hulk surnud ridu. Ja niipea kui vaakum lĂ”petab, peab see tabelit uuesti vaakumeerima. Ja me saame olukorra – lĂ”putu vaakum. Ja sellisel juhul ei suuda vaakum oma tööd tĂ€ita ning tabelid hakkavad jĂ€rk-jĂ€rgult suurenenud mÔÔtmeid omandama, kuigi kasulik andmemaht jÀÀb samaks. SeetĂ”ttu vaatame pikade vaakumite korral alati konfiguratsiooni ja pĂŒĂŒame seda optimeerida, kuid samas mitte kannatada kliendi pĂ€ringute jĂ”udluse all.

PostgreSQL jÀlgimise alused. Aleksei Lesovski

Praegu ei ole praktiliselt ĂŒhtegi PostgreSQL installatsiooni, kus ei oleks voogedastust. Replikatsioon on andmete edastamise protsess meistrilt kopeerimisele.

Replikatsioon PostgreSQL-is on korraldatud lĂ€bi tehinguajaloos. Meister genereerib tehinguajaloo. Tehinguajalugu edastatakse vĂ”rguĂŒhenduse kaudu kopeerimisele, seejĂ€rel kopeerimisel see taastatakse. KĂ”ik on lihtne.

Seega kasutatakse replikatsiooni viivituse jĂ€lgimiseks vaadet pg_stat_replication. Kuid see ei ole nii lihtne. Versioonis 10 on vaade lĂ€bi teinud mitmeid muudatusi. Esiteks, mĂ”ned vĂ€ljad on ĂŒmber nimetatud. Ja mĂ”ned vĂ€ljad on lisatud. 10. versioonis on ilmunud 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Ă€i alles ka 10. versioonis, st saate valida, mis teile mugavam on – hinnata viivitust baitides vĂ”i sekundites. Paljud teevad mĂ”lemat.

Kuid siiski, et hinnata replikatsiooni viivitust, on vaja teada ajalugu tehingus. Ja need tehinguajaloo positsioonid ongi vaates pg_stat_replication. Ütleme, et saame pg_xlog_location_diff() funktsiooni kaudu vĂ”tta kaks punkti tehinguajaloos. 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 asendati kĂ”ikides funktsioonides, vaadatud, utiliitides, kus esines sĂ”na «xlog», see sĂ”naga «wal». See kehtib nii vaadatud kui ka funktsioonide puhul. See on selline uuendus.

10. versioonis lisandus ka rida, mis nÀitab konkreetset viivitust. Need on write lag, flush lag, replay lag. TeisisÔnu, neid asju on oluline jÀlgida. Kui nÀeme replikatsiooni viivitust, tuleb uurida, miks see ilmus, kust see tuli ja probleem lahendada.

PostgreSQL jÀlgimise alused. Aleksei Lesovski

SĂŒsteemi mÔÔdikud on enamasti korras. Iga jĂ€lgimise alguses alustatakse sĂŒsteemi mÔÔdikutega. Need on protsessorite, mĂ€lu, swap, vĂ”rgu ja ketta kasutuse mÀÀr. Siiski ei ole seal palju parameetreid vaikimisi.

Kui protsesside kasutus on korras, siis ketta kasutuses on probleeme. Reeglina lisavad jÀlgimisriistade arendajad teavet lÀbilaskvuse kohta. See vÔib olla iops vÔi baitides. Kuid nad unustavad latentsuse ja ketta seadmete kasutuse. Need on olulisemad parameetrid, mis vÔimaldavad hinnata, kui palju meie kettad on koormatud ja kui palju nad peatumisi tekitavad. Kui meil on kÔrge latentsus, tÀhendab see, et kettaga on mingeid probleeme. Kui meil on kÔrge kasutus, tÀhendab see, et kettad ei suuda hakkama saada. Need on kvaliteetsemad omadused kui lÀbilaskvus.

Kuigi seda statistikat saab ka failisĂŒsteemist /proc, nagu seda tehakse protsessorite kasutuse puhul. Miks seda teavet ei lisata jĂ€lgimistesse, ma ei tea. Siiski on oluline, et see oleks teie jĂ€lgimises.

Sama kehtib vÔrguinterfeisside kohta. VÔrgu lÀbilaskvuse kohta on teavet pakettide ja baitide kaupa, kuid siiski puudub teave latentsuse ja kasutuse kohta, kuigi see on samuti kasulik teave.

PostgreSQL jÀlgimise alused. Aleksei Lesovski

Igal jĂ€lgimisel on puudused. ÜkskĂ”ik millist jĂ€lgimist te vĂ”tate, see ei vasta alati mingitele kriteeriumidele. Siiski arenevad nad, lisatakse uusi funktsioone, uusi asju, seega valige midagi ja tĂ€iustage seda.

Ja et tÀiustada, tuleb alati teada, mida annab antud statistika ja kuidas selle abil probleeme lahendada.

Ja paar vÔtmehetke:

  • Alati on oluline jĂ€lgida saadavust, et teil oleksid juhtpaneelid, kust kiiresti hinnata, kas andmebaas on korras.
  • Alati on oluline teada, kes kliendid töötavad teie andmebaasi kallal, et filtreerida vĂ€lja halvad kliendid ja neist vabaneda.
  • Oluline on hinnata, kuidas need kliendid andmetega töötavad. Tuleb omada arusaama oma töökoormusest.
  • Oluline on hinnata, kuidas see töökoormus tekib, milliste pĂ€ringute kaudu. Te saate hinnata pĂ€ringuid, optimeerida neid, refaktoreerida, luua neile indekseid. See on vĂ€ga oluline.
  • Taustprotsessid vĂ”ivad negatiivselt mĂ”jutada kliendi pĂ€ringuid, seega on oluline jĂ€lgida, et need ei kasutaks liiga palju ressursse.
  • SĂŒsteemilised mÔÔdud vĂ”imaldavad teil koostada plaani skaleerimiseks, suurendades oma serverite vĂ”imsust, seega on oluline ka neid jĂ€lgida ja hinnata.

PostgreSQL jÀlgimise alused. Aleksei Lesovski

Kui see teema teid huvitab, siis vÔite tutvuda nende linkidega.
http://bit.do/stats_collector – see on ametlik dokumentatsioon statistika kogumise kohta. Seal on kirjeldus kĂ”igist statistika vaadetest ja kĂ”igist vĂ€ljadest. Te saate neid lugeda, mĂ”ista ja analĂŒĂŒsida. Ja juba nende pĂ”hjal koostada oma graafikud, lisada oma jĂ€lgimisse.

PÀringute nÀited:
http://bit.do/dataegret_sql
http://bit.do/lesovsky_sql

See on meie ettevĂ”tte repositoorium ja minu isiklik. Neis on nĂ€ited pĂ€ringutest. Seal pole pĂ€ringuid, nagu select* from midagi. Seal on juba valmis pĂ€ringud, kus on kasutatud liiteid ja huvitavaid funktsioone, mis vĂ”imaldavad toorandmetest luua loetavaid ja mugavaid vÀÀrtusi, st need on baitides, ajas. Te saate neid kĂ€sitsi uurida, vaadata, analĂŒĂŒsida, lisada oma jĂ€lgimisse, koostada nende pĂ”hjal oma jĂ€lgimisse.

KĂŒsimused

KĂŒsimus: Te ĂŒtlesite, et te ei reklaami kaubamĂ€rke, aga mind ikkagi huvitab – milliseid juhtpaneele te oma projektides kasutate?
Vastus: Erinevalt. Juhtub, et me tuleme kliendi juurde ja tal on juba oma jĂ€lgimine olemas. Ja me anname kliendile nĂ”u, mida oma jĂ€lgimisele lisada. Halvim on olukord Zabbiхiga. Sest tal pole vĂ”imalust koostada TopN-graafikuid. Me kasutame ise Okmeter, sest me andsime neile nĂ”u jĂ€lgimise osas. Nad koostasid PostgreSQL-i jĂ€lgimise meie spetsifikatsiooni pĂ”hjal. Ma kirjutan oma isiklikku projekti, mis kogub andmeid Prometheuse kaudu ja joonistab need vĂ€lja. Grafana. Mul on ĂŒlesanne luua Prometheus'esse oma eksporter ja hiljem kĂ”ik joonistada Grafanas.

KĂŒsimus: Kas on olemas mingeid AWR-aruannete vĂ”i ... aggregeerimise analooge? Kas olete teadlik millestki sellisest?
Vastus: Jah, ma tean, mis on AWR, see on pĂ€ris Ă€ge asi. Praegusel hetkel on erinevaid lahendusi, mis rakendavad enam-vĂ€hem jĂ€rgmist mudelit. Teatud aja intervallide jĂ€rel kirjutatakse mĂ”ned aluseks olevad andmed samasse PostgreSQL-i vĂ”i eraldi andmehoidlasse. Neid saab internetist otsida, need on olemas. Üks selle asja arendajatest on sql.ru foorumis PostgreSQL teemas, teda vĂ”ib sealt ĂŒles leida. Jah, selliseid lahendusi on, neid saab kasutada. Peale selle pgCenter ma ka kirjutan asja, mis vĂ”imaldab teha sama.

P.S.1 Kui kasutate postgres_exporter'it, siis missugust armatuurlauad te kasutate? Need on mitmed. Need on juba vananenud. Kas kogukond vÔiks luua uuendatud malli?

P.S.2 Eemaldasin pganalyze, kuna see on patenteeritud SaaS, mis keskendub tulemuslikkuse jÀlgimisele ja automaatsetele seadistamise soovitustele.

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

Millist self-hosted PostgreSQL'i jÀlgimist (armatuurlauaga) peate parimaks?

  • 30,0%Zabbix + Alexei Lesovski tĂ€iendused 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 patenteeritud SaaS — ei saa kustutada.

  • 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. Peatus 26 kasutajat.

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster