Soovitan teil tutvuda Alexey Lesovski raporti Àrakirjaga Data Egretist "PostgreSQL-i jÀlgimise alused"
KĂ€esolevas aruandes rÀÀgib Aleksei Lesovski postgresi statistika pĂ”hipunktidest, mida need tĂ€hendavad ja miks neid seiresse kaasata; millised diagrammid peaksid olema seires, kuidas neid lisada ja kuidas tĂ”lgendada. Aruanne on kasulik andmebaasi administraatoritele, sĂŒsteemiadministraatoritele ja arendajatele, kes on huvitatud Postgresi tĂ”rkeotsingust.


Minu nimi on Aleksei Lesovski, esindan Data Egret.
Paar sĂ”na endast. Alustasin tĂŒkk aega tagasi sĂŒsteemiadministraatorina.
Manustas igasuguseid erinevaid asju Linux, oli seotud mitmesuguste asjadega, mis olid seotud Linux, st virtualiseerimine, jÀlgimine, puhverserveritega töötamine jne. Aga mingil hetkel hakkasin rohkem tegelema andmebaasidega, PostgreSQL-iga. See meeldis mulle vÀga. Ja mingil hetkel hakkasin suurema osa ajast veetma PostgreSQL-iga töötades. Ja nii saingi tasapisi PostgreSQL-i andmebaasijuhiks.
Ja kogu oma karjÀÀri jooksul on mind alati huvitanud statistika, monitooringu, telemeetria teemad. Ja kui olin sĂŒsteemiadministraator, töötasin ma Zabbixi kallal kĂ”vasti. Ja kirjutas vĂ€ikese komplekti skripte nagu See oli omal ajal ĂŒsna populaarne. Ja seal sai jĂ€lgida mitmesuguseid olulisi asju, mitte ainult Linux, aga ka erinevaid komponente.
NĂŒĂŒd teen juba PostgreSQL-i. Kirjutan juba teist asja, mis vĂ”imaldab töötada PostgreSQL statistikaga. Seda nimetatakse (artikkel HabrĂ© kohta - ).

VĂ€ike sissejuhatus. Millised on olukorrad meie klientidega, meie klientidega? Andmebaasiga on seotud mingisugune Ă”nnetus. Ja kui andmebaas on juba taastatud, tuleb osakonnajuhataja vĂ”i arendusjuht ja ĂŒtleb: "SĂ”brad, me peaksime andmebaasi jĂ€lgima, sest juhtus midagi halba ja on vaja, et seda ei juhtuks tulevikus." Ja siit algab huvitav seiresĂŒsteemi valimise vĂ”i olemasoleva jĂ€lgimissĂŒsteemi kohandamise protsess, et saaksite jĂ€lgida oma andmebaasi â PostgreSQL, MySQL vĂ”i mĂ”ni muu. Ja kolleegid hakkavad pakkuma: âKuulsin, et on olemas selline ja selline andmebaas. Kasutame Ă€ra." Kolleegid hakkavad omavahel vaidlema. Ja lĂ”puks selgub, et me valime mingisuguse andmebaasi, aga PostgreSQL monitooring on selles ĂŒsna kehvasti esindatud ja alati tuleb midagi lĂ”petada. VĂ”tke GitHubist mĂ”ned hoidlad, kloonige need, kohandage skripte, hÀÀlestage neid kuidagi. Ja lĂ”puks kukub see vĂ€lja mingisuguseks kĂ€sitsitööks.

SeetĂ”ttu pĂŒĂŒan selles aruandes anda teile teadmisi selle kohta, kuidas valida monitooringut mitte ainult PostgreSQL-i, vaid ka andmebaasi jaoks. Ja anda teadmisi, mis vĂ”imaldavad teil oma monitooringu lĂ”petada, et sellest kasu saada, et saaksite oma andmebaasi kasulikult jĂ€lgida, et ennetada Ă”igel ajal ettetulevaid hĂ€daolukordi.
Ja need ideed, mis selles aruandes on, saab neid otse kohandada mis tahes andmebaasiga, olgu see siis DBMS vÔi noSQL. SeetÔttu pole siin mitte ainult PostgreSQL, vaid ka palju retsepte, kuidas seda PostgreSQL-is teha. Seal on nÀiteid pÀringutest, nÀiteid olemitest, mida PostgreSQL jÀlgib. Ja kui teie DBMS-is on samad asjad, mis vÔimaldavad teil neid jÀlgida, saate neid ka kohandada, lisada ja kÔik on korras.
Ma ei teata
rÀÀgime, kuidas mÔÔdikuid edastada ja talletada. Andmete jĂ€reltöötluse ja kasutajale edastamise kohta ma midagi ei ĂŒtle. Ja hoiatamise kohta ei ĂŒtle ma midagi.
Aga loo kĂ€igus nĂ€itan erinevaid ekraanipilte olemasolevatest monitooringutest, kuidagi kritiseerin neid. Sellegipoolest pĂŒĂŒan ma kaubamĂ€rke mitte nimetada, et mitte tekitada nendele toodetele reklaami vĂ”i antireklaami. SeetĂ”ttu on kĂ”ik kokkusattumused juhuslikud ja jÀÀvad teie kujutlusvĂ”imesse.

Esiteks mĂ”istame, mis on jĂ€lgimine. JĂ€relevalve on vĂ€ga oluline. KĂ”ik saavad sellest aru. Kuid samas ei ole monitooring seotud Ă€ritootega ega mĂ”juta otseselt ettevĂ”tte kasumit, seega antakse jĂ€lgimisele alati aega jÀÀkpĂ”hiselt. Kui aega on, siis tegeleme jĂ€lgimisega, kui aega pole, siis OK, paneme selle mahajÀÀmusse ja millalgi tuleme nende ĂŒlesannete juurde tagasi.
SeetĂ”ttu on meie praktikast lĂ€htudes nii, et klientide juurde tulles on monitooring sageli vĂ€hearenenud ega sisalda ĂŒhtegi huvitavat, mis aitaks meil andmebaasiga paremini tööd teha. SeetĂ”ttu tuleb seire alati lĂ”petada.
Andmebaasid on nii keerulised asjad, mida tuleb ka jÀlgida, sest andmebaasid on infohoidla. Ja info on ettevÔtte jaoks vÀga oluline, see ei saa kuidagi kaduma minna. Kuid samal ajal on andmebaasid vÀga keerulised tarkvara osad. Need koosnevad paljudest komponentidest. Ja paljusid neist komponentidest tuleb jÀlgida.
Kui me rÀÀgime konkreetselt PostgreSQL-ist, siis vĂ”ib seda kujutada sellise skeemina, mis koosneb suurest hulgast komponentidest. Need komponendid suhtlevad ĂŒksteisega. Ja samas on PostgreSQL-is nn Stats Collectori alamsĂŒsteem, mis vĂ”imaldab koguda statistikat nende alamsĂŒsteemide toimimise kohta ja pakkuda administraatorile vĂ”i kasutajale liidest, et ta saaks seda statistikat vaadata.
See statistika on esitatud teatud funktsioonide ja vaadete (vaate) kujul. Neid vĂ”ib nimetada ka tabeliteks. See tĂ€hendab, et tavalist psql-klienti kasutades saate luua ĂŒhenduse andmebaasiga, valida need funktsioonid ja vaated ning saada mĂ”ned konkreetsed numbrid PostgreSQL-i alamsĂŒsteemide toimimise kohta.
Saate need numbrid lisada oma lemmikseiresĂŒsteemi, joonistada graafikuid, lisada funktsioone ja saada pikemas perspektiivis analĂŒĂŒsi.
Kuid selles aruandes ei kÀsitle ma eranditult kÔiki neid funktsioone, sest selleks vÔib kuluda terve pÀev. Viitan sÔna otseses mÔttes kahele, kolmele vÔi neljale asjale ja rÀÀgin teile, kuidas need aitavad jÀlgimist paremaks muuta.

Ja kui me rÀÀgime andmebaasi jÀlgimisest, siis mida on vaja jÀlgida? Esiteks peame jÀlgima saadavust, kuna andmebaas on teenus, mis tagab klientidele juurdepÀÀsu andmetele ja me peame jÀlgima saadavust ning esitama ka mÔned selle kvalitatiivsed ja kvantitatiivsed omadused.

Samuti peame jĂ€lgima meie andmebaasiga ĂŒhenduvaid kliente, sest need vĂ”ivad olla nii tavalised kliendid kui ka kahjulikud kliendid, kes vĂ”ivad andmebaasi kahjustada. Neid tuleb ka jĂ€lgida ja jĂ€lgida.

Kui kliendid ĂŒhenduvad andmebaasiga, on ilmne, et nad hakkavad meie andmetega töötama, seega peame jĂ€lgima, kuidas kliendid andmetega töötavad: milliste tabelitega, vĂ€hemal mÀÀral milliste indeksitega. See tĂ€hendab, et peame hindama klientide loodud töökoormust.

Aga töökoormus koosneb loomulikult ka taotlustest. Rakendused ĂŒhenduvad andmebaasiga, pÀÀsevad andmetele pĂ€ringute abil, seega on oluline hinnata, millised pĂ€ringud meil andmebaasis on, jĂ€lgida nende adekvaatsust, et need poleks kĂ”verad, et mĂ”ned valikud tuleks ĂŒmber kirjutada ja muuta nii, et need kiiremini töötaksid ja parema jĂ”udlusega.

Ja kuna me rÀÀgime andmebaasist, on andmebaas alati taustaprotsessid. Taustaprotsessid hoiavad andmebaasi jÔudluse heal tasemel, seega nÔuavad nende kÀitamiseks teatud hulga ressursse. Ja samal ajal vÔivad need kattuda kliendi pÀringu ressurssidega, nii et taustaprotsesside ahne töö vÔib otseselt mÔjutada kliendi pÀringute toimimist. SeetÔttu tuleb ka neid jÀlgida ja jÀlgida, et taustaprotsessides ei tekiks moonutusi.

Ja see on kĂ”ik, mis puudutab andmebaasi jĂ€lgimist, mis jÀÀb sĂŒsteemi mÔÔdikusse. Kuid arvestades, et enamasti lĂ€heb kogu meie infrastruktuur pilvedesse, jÀÀvad ĂŒksiku hosti sĂŒsteemimÔÔdikud alati tagaplaanile. Aga andmebaasides on need siiski aktuaalsed ja loomulikult on vaja jĂ€lgida ka sĂŒsteemimÔÔdikuid.

SĂŒsteemi mÔÔdikutega on kĂ”ik enam-vĂ€hem korras, kĂ”ik kaasaegsed monitooringusĂŒsteemid juba toetavad neid mÔÔdikuid, aga ĂŒldiselt ikka ei piisa mĂ”nest komponendist ja osa asju tuleb lisada. Puudutan ka neid, nendest tuleb mitu slaidi.

Plaani esimene punkt on juurdepÀÀsetavus. Mis on juurdepÀÀsetavus? KĂ€ttesaadavus on minu arusaamises baasi vĂ”imekus ĂŒhendusi teenindada, st baasi tĂ”stetakse, see vĂ”tab teenusena vastu klientidelt ĂŒhendusi. Ja seda ligipÀÀsetavust saab hinnata mĂ”ne tunnuse jĂ€rgi. Neid omadusi on armatuurlaual vĂ€ga mugav kuvada.

KĂ”ik teavad, mis on armatuurlauad. See on siis, kui heitsite ĂŒhe pilgu ekraanile, mis vĂ”ttis kokku vajaliku teabe. Ja juba saab kohe kindlaks teha, kas andmebaasis on probleem vĂ”i mitte.
Sellest lĂ€htuvalt tuleks andmebaasi kĂ€ttesaadavus ja muud pĂ”hinĂ€itajad alati armatuurlauale panna, et see teave oleks alati teiega kĂ€epĂ€rast. MĂ”ned lisadetailid, mis aitavad juba intsidentide uurimisel, mĂ”ne hĂ€daolukorra uurimisel, tuleb need juba paigutada sekundaarsetele armatuurlaudadele vĂ”i peidetud drilldown linkidesse, mis viivad kolmandate osapoolte seiresĂŒsteemideni.

NĂ€ide ĂŒhest teadaolevast seiresĂŒsteemist. See on vĂ€ga lahe jĂ€lgimissĂŒsteem. See kogub palju andmeid, kuid minu vaatenurgast on sellel armatuurlaudade kummaline kontseptsioon. Seal on link "Loo armatuurlaud". Kui aga loote armatuurlaua, loote kaheveerulise loendi ehk diagrammide loendi. Ja kui on vaja midagi vaadata, hakkad klĂ”psama, kerima, otsima hiirega soovitud diagrammi. Ja see vĂ”tab aega, st armatuurlaudu kui selliseid pole. Seal on ainult diagrammide loendid.

Mida tuleks nendele armatuurlaudadele lisada? VĂ”ite alustada sellisest tunnusest nagu reaktsiooniaeg. PostgreSQL-il on vaade pg_stat_statements. See on vaikimisi keelatud, kuid see on ĂŒks olulisi sĂŒsteemivaateid, mis tuleks alati lubada ja kasutada. See salvestab teabe kĂ”igi andmebaasis kĂ€ivitatud pĂ€ringute kohta.
Sellest lĂ€htuvalt saame lĂ€htuda sellest, et saame vĂ”tta kĂ”igi pĂ€ringute tĂ€itmisaja kokku ja jagada pĂ€ringute arvuga, kasutades ĂŒlaltoodud vĂ€lju. Aga see on haiglas selline keskmine temperatuur. Saame tugineda teistele vĂ€ljadele â minimaalne pĂ€ringu tĂ€itmise aeg, maksimaalne ja mediaan. Ja saame isegi protsentiile ehitada, PostgreSQL-il on selleks vastavad funktsioonid. Ja me saame mĂ”ned numbrid, mis iseloomustavad meie andmebaasi reageerimisaega juba tĂ€idetud pĂ€ringutele, st me ei tĂ€ida vĂ”ltsitud 'vali 1' pĂ€ringut ja jĂ€lgime reageerimisaega, vaid analĂŒĂŒsime juba tĂ€idetud pĂ€ringute reageerimisaega ja loosisime kas eraldi joonis vĂ”i koostame selle pĂ”hjal graafiku.
Samuti on oluline jĂ€lgida sĂŒsteemi hetkel tekitatavate vigade arvu. Ja selleks saate kasutada pg_stat_andmebaasi vaadet. Me sihime vĂ€lja xact_rollback. See vĂ€li ei nĂ€ita mitte ainult andmebaasis esinevate tagasipööramiste arvu, vaid vĂ”tab arvesse ka vigade arvu. Suhteliselt saame selle nĂ€itaja kuvada oma armatuurlaual ja nĂ€ha, kui palju vigu meil hetkel on. Kui vigu on palju, siis on see juba hea pĂ”hjus logidesse sisse vaadata ja vaadata, mis vead need on ja miks need tekivad ning seejĂ€rel investeerida ja need lahendada.

Saate lisada sellise asja nagu tahhomeeter. Need on tehingute arv sekundis ja pĂ€ringute arv sekundis. Suhteliselt öeldes saate neid numbreid kasutada oma andmebaasi praeguse jĂ”udlusena ja jĂ€lgida, kas taotlustes on tippe, tehinguid vĂ”i vastupidi, andmebaas on alakoormatud, kuna mingi taustaprogramm kukkus Ă€ra. Oluline on alati seda joonist vaadata ja meeles pidada, et meie projekti jaoks on selline jĂ”udlus normaalne ning ĂŒlalt ja all olevad vÀÀrtused on juba omamoodi problemaatilised ja arusaamatud, mis tĂ€hendab, et peame vaatama, miks sellised numbrid .
Tehingute arvu hindamiseks vÔime taas viidata pg_stat_andmebaasi vaatele. Tehingute arvu sekundis saamiseks saame lisada sissekannete arvu ja tagasipööramiste arvu.
KĂ”ik saavad aru, et ĂŒhte tehingusse mahub mitu pĂ€ringut? SeetĂ”ttu on TPS ja QPS veidi erinevad.
PÀringute arvu sekundis saab pg_stat_statements ja lihtsalt arvutada kÔigi tÀidetud pÀringute summa. Selge see, et me vÔrdleme praegust vÀÀrtust eelmisega, lahutame, saame delta, saame summa.

Soovi korral saate lisada tÀiendavaid mÔÔdikuid, mis aitavad samuti hinnata meie andmebaasi saadavust ja jÀlgida, kas seisakuid esines.
Ăks neist mÔÔdikutest on tööaeg. Kuid PostgreSQL-i tööaeg on pisut keeruline. Ma ĂŒtlen teile, miks. Kui PostgreSQL kĂ€ivitub, alustab see tööaja aruandlust. Aga kui mingi hetk töötas nĂ€iteks öösel mingi ĂŒlesanne, tuli OOM-killer ja lĂ”petas sunniviisiliselt PostgreSQL alamprotsessi, siis sel juhul lĂ”petab PostgreSQL kĂ”ikide klientide ĂŒhenduse, lĂ€htestab killustatud mĂ€luala ja alustab taastamist viimane kontrollpunkt. Ja kuni see kontrollpunktist taastumine kestab, ei aktsepteeri andmebaas ĂŒhendusi, st seda olukorda saab hinnata seisakuks. Kuid see ei lĂ€htesta tööaja loendurit, sest see vĂ”tab postmasteri kĂ€ivitamise aja arvesse juba esimesest hetkest. SeetĂ”ttu vĂ”ib sellised olukorrad vahele jĂ€tta.
Samuti peaksite jĂ€lgima vaakumtöötajate arvu. KĂ”ik teavad, mis on PostgreSQL-is autovaakum? See on huvitav PostgreSQL-i alamsĂŒsteem. Sellest on kirjutatud palju artikleid, tehtud palju raporteid. Palju arutelu vaakumi ĂŒle, kuidas see peaks töötama. Paljud peavad seda vajalikuks kurjaks. Aga see on. See on mingi prĂŒgikoguja, mis puhastab ridade vananenud versioonid, mida ĂŒkski tehing ei vaja, ning vabastab tabelites ja indeksites ruumi uute ridade jaoks.
Miks peaks seda jÀlgima? Sest vaakum teeb vahel vÀga haiget. See kulutab palju ressursse ja klientide nÔudmised hakkavad selle all kannatama.
Ja seda tuleks jĂ€lgida pg_stat_activity vaate kaudu, millest rÀÀgin jĂ€rgmises osas. See vaade nĂ€itab praegust tegevust andmebaasis. Ja selle tegevuse kaudu saame jĂ€lgida praegu töötavate tolmuimejate arvu. Saame jĂ€lgida vaakumit ja nĂ€ha, et kui oleme piiri ĂŒletanud, siis on vĂ”imalus uurida PostgreSQL-i seadeid ja kuidagi optimeerida vaakumi tööd.
Teine PostgreSQL-i omadus on see, et PostgreSQL on pikkadest tehingutest vĂ€ga haige. Eriti tehingutest, mis pikalt rippuvad ja mitte midagi ei tee. Need on nn stat idle-in-transaction. Selline tehing hoiab lukke, see ei lase vaakumil töötada. Ja selle tulemusena - lauad paisuvad, nende suurus suureneb. Ja pĂ€ringud, mis nende tabelitega töötavad, hakkavad töötama aeglasemalt, sest peate kĂŒhveldada kĂ”ik vanad ridade versioonid mĂ€lust kettale ja tagasi. SeetĂ”ttu tuleb jĂ€lgida ka aega, pikimate tehingute kestust, pikimaid vaakumitaotlusi. Ja kui nĂ€eme mĂ”nda protsessi, mis on OLTP-koormuse puhul töötanud vĂ€ga pikka aega, rohkem kui 10-20-30 minutit, siis peame neile tĂ€helepanu pöörama ja sundima need lĂ”petama vĂ”i optimeerima rakendust nii, et neid ei kutsuta ja nad ei ripu nii kaua. AnalĂŒĂŒtilise koormuse puhul on 10-20-30 minutit normaalne, on ka pikemaid.

JĂ€rgmisena on meil vĂ”imalus ĂŒhendatud klientidega. Kui oleme juba moodustanud armatuurlaua ja postitanud sellele peamised juurdepÀÀsetavuse mÔÔdikud, saame sinna lisada ka lisateavet ĂŒhendatud klientide kohta.
Teave ĂŒhendatud klientide kohta on oluline, sest PostgreSQL-i seisukohast on kliente erinevat tĂŒĂŒpi. On hĂ€id kliente ja on halbu kliente.
Lihtne nĂ€ide. Kliendi all pean silmas rakendust. Rakendus on andmebaasiga ĂŒhenduse loonud ja hakkab sinna kohe oma pĂ€ringuid saatma, andmebaas töötleb ja tĂ€idab need ning tagastab tulemused kliendile. Need on head ja Ă”iged kliendid.
On olukordi, et klient on ĂŒhenduses, hoiab ĂŒhendust, aga ei tee midagi. See on jĂ”udeolekus.
Kuid on halbu kliente. NĂ€iteks ĂŒhendas sama klient, avas tehingu, tegi midagi andmebaasis ja lĂ€ks siis koodi sisse, et nĂ€iteks pÀÀseda juurde vĂ€lisele allikale vĂ”i töödelda seal saadud andmeid. Kuid samal ajal ta tehingut ei lĂ”petanud. Ja tehing ripub andmebaasis ja hoiab lukku liinil. See on halb seisund. Ja kui Ă€kki kuskil selle sees olev rakendus erandiga (Erand) kukub, siis vĂ”ib tehing vĂ€ga pikaks ajaks avatuks jÀÀda. Ja see mĂ”jutab otseselt PostgreSQL-i jĂ”udlust. PostgreSQL töötab aeglasemalt. SeetĂ”ttu on oluline selliseid kliente Ă”igeaegselt jĂ€lgida ja nende töö sunniviisiliselt lĂ”petada. Ja peate oma rakendust optimeerima, et selliseid olukordi ei tekiks.
Teised halvad kliendid ootavad kliente. Kuid olude sunnil muutuvad nad halvaks. NĂ€iteks lihtne tĂŒhitehing: vĂ”ib tehingu avada, mĂ”nele reale lukud vĂ”tta, siis kukub kuhugi koodi sisse, jĂ€ttes rippuva tehingu. Tuleb teine ââklient, kes kĂŒsib samu andmeid, kuid ta satub lukku, kuna sellel rippuval tehingul on juba mĂ”ned vajalikud read lukud. Ja teine ââtehing jÀÀb ootusĂ€revalt rippuma, kui esimene tehing on tehtud vĂ”i selle administraator selle sunniviisiliselt sulgeb. Seega vĂ”ivad pooleliolevad tehingud koguneda ja ĂŒletada andmebaasi ĂŒhenduse limiidi. Ja kui limiit on tĂ€is, ei saa rakendus enam andmebaasiga töötada. See on projekti jaoks juba eriolukord. SeetĂ”ttu tuleb halbu kliente jĂ€lgida ja neile Ă”igeaegselt reageerida.

JĂ€lle ĂŒks nĂ€ide jĂ€lgimisest. Ja siin on korralik armatuurlaud. Ălevalt on info ĂŒhenduste kohta. DB ĂŒhendus - 8 tk. Ja ongi kĂ”ik. Meil puudub teave selle kohta, millised kliendid on aktiivsed, millised kliendid on lihtsalt jĂ”ude, mitte midagi ei tee. Rippuvate tehingute ja pooleliolevate ĂŒhenduste kohta info puudub ehk see on selline arv, mis nĂ€itab ĂŒhenduste arvu ja kĂ”ik. Ja siis arvake ise.

SeetĂ”ttu peate selle teabe jĂ€lgimisse lisamiseks kasutama sĂŒsteemivaadet pg_stat_activity. Kui veedate palju aega PostgreSQL-is, siis see on vĂ€ga hea vaade, millest peaks saama teie sĂ”ber, sest see nĂ€itab hetketegevust PostgreSQL-is, st selles, mis toimub. Iga protsessi jaoks on eraldi rida, mis nĂ€itab selle protsessi infot: millisest hostist ĂŒhendus loodi, millise kasutaja all, mis nime all, millal tehingut alustati, millist pĂ€ringut parasjagu tĂ€idetakse, millist pĂ€ringut viimati tĂ€ideti. Ja vastavalt sellele saame hinnata kliendi seisundit statistikavĂ€lja jĂ€rgi. Suhteliselt saame selle vĂ€lja jĂ€rgi rĂŒhmitada ja saada need statistikad, mis praegu andmebaasis on, ja ĂŒhenduste arvu, mis selle statistikaga andmebaasis on. Ja juba saabunud numbrid saame saata oma monitooringule ja joonistada neile graafikud.
Samuti on oluline hinnata tehingu kestust. Olen juba öelnud, et oluline on hinnata vaakumide kestvust, aga samamoodi hinnatakse ka tehinguid. Seal on vÀljad xact_start ja query_start. Suhteliselt nÀitavad need tehingu algusaega ja pÀringu algusaega. VÔtame funktsiooni now(), mis nÀitab praegust ajatemplit, ning lahutame tehingu ja pÀringu ajatemplid. Ja saame tehingu kestuse, pÀringu kestuse.
Kui nĂ€eme pikki tehinguid, peaksime need juba lĂ”pule viima. OLTP-koormuse puhul on pikad tehingud juba pikemad kui 1-2-3 minutit. OLAP-i koormuse puhul on pikad tehingud normaalsed, aga kui need kestavad ĂŒle kahe tunni, siis on ka see mĂ€rk, et meil on kuskil viltu.

Kui kliendid on andmebaasiga ĂŒhenduse loonud, hakkavad nad meie andmetega töötama. Nad pÀÀsevad juurde tabelitele, pÀÀsevad juurde indeksitele, et tabelist andmeid hankida. Ja oluline on hinnata, kuidas kliendid nende andmetega töötavad.
See on vajalik selleks, et hinnata meie töökoormust ja umbkaudselt mĂ”ista, millised tabelid meil on âkĂ”ige kuumemadâ. NĂ€iteks on see vajalik olukordades, kus tahame paigutada "kuumad" lauad mingisugusele kiirele SSD-mĂ€luseadmele. NĂ€iteks mĂ”ned arhiivitabelid, mida me pole pikka aega kasutanud, vĂ”ib kanda mingisse âkĂŒlmaâ arhiivi, SATA ketastele ja lasta neil seal elada, neile pÀÀseb ligi vastavalt vajadusele.
See on kasulik ka anomaaliate tuvastamiseks pÀrast mis tahes vÀljalaseid ja juurutamist. Oletame, et projekt tÔi vÀlja mÔne uue funktsiooni. NÀiteks lisasime andmebaasiga töötamiseks uusi funktsioone. Ja kui koostame tabelite kasutamiseks graafikud, saame need anomaaliad nendel graafikutel hÔlpsasti tuvastada. NÀiteks vÀrskendage sarivÔtte vÔi kustutage sarivÔtte. See saab olema vÀga nÀhtav.
Samuti on vĂ”imalik tuvastada "ujuva" statistika anomaaliaid. Mida see tĂ€hendab? PostgreSQL-il on vĂ€ga tugev ja vĂ€ga hea pĂ€ringuplaneerija. Ja arendajad pĂŒhendavad selle arendamisele palju aega. Kuidas ta töötab? Heade plaanide koostamiseks kogub PostgreSQL teatud ajavahemike ja teatud perioodilisusega statistikat andmete jaotuse kohta tabelitesse. Need on kĂ”ige sagedasemad vÀÀrtused: unikaalsete vÀÀrtuste arv, teave NULL-i kohta tabelis, palju teavet.
Selle statistika pÔhjal koostab planeerija mitu pÀringut, valib optimaalseima ja kasutab seda pÀringuplaani pÀringu enda tÀitmiseks ja andmete tagastamiseks.
Ja juhtub, et statistika "ujub". Kvaliteedi ja kvantiteedi andmed tabelis kuidagi muutusid, aga statistikat ei kogutud. Ja moodustatud plaanid ei pruugi olla optimaalsed. Ja kui meie plaanid osutuvad kogutava seire osas ebaoptimaalseteks, on tabelite jÀrgi vÔimalik neid kÔrvalekaldeid nÀha. NÀiteks kuskil muutusid andmed kvalitatiivselt ja indeksi asemel hakati kasutama jÀrjestikust tabelit lÀbimist, s.t. kui pÀring peab tagastama ainult 100 rida (piirang on 100), siis tehakse selle pÀringu jaoks tÀielik loend. Ja see mÔjub tulemuslikkusele alati vÀga halvasti.
Ja me nÀeme seda seires. Ja juba vaadake seda pÀringut, tehke selle jaoks selgitus, koguge statistikat, koostage uus lisaindeks. Ja sellele probleemile juba vastata. SeetÔttu on oluline.

JĂ€lle ĂŒks nĂ€ide jĂ€lgimisest. Ma arvan, et paljud inimesed tunnevad ta Ă€ra, sest ta on vĂ€ga populaarne. Kes oma projektides kasutab ? Ja kes kasutab seda toodet koos Prometheusega? Fakt on see, et selle seire standardhoidlas on PostgreSQL-iga töötamiseks armatuurlaud - Prometheus. Kuid siin on ĂŒks halb detail.

Tabeleid on mitu. Ja baidid on mÀÀratud ĂŒhikuna, st graafikuid on 5. Need on andmete sisestamine, andmete vĂ€rskendamine, andmete kustutamine, andmete toomine ja andmete tagastamine. Baitid on mÀÀratud ĂŒhiku mÔÔtmena. Kuid tĂ”siasi on see, et PostgreSQL-i statistika tagastab andmed korteeĆŸi (ridadena). Ja vastavalt sellele on need graafikud vĂ€ga hea viis oma töökoormust mitu korda, kĂŒmneid kordi alahinnata, sest korteeĆŸ ei ole bait, korteeĆŸ on string, see on palju baite ja see on alati muutuva pikkusega. See tĂ€hendab, et töökoormuse arvutamine baitides korteeĆŸide abil on ebareaalne vĂ”i vĂ€ga keeruline ĂŒlesanne. SeetĂ”ttu on armatuurlaua vĂ”i sisseehitatud jĂ€lgimise kasutamisel alati oluline mĂ”ista, et see töötab Ă”igesti ja tagastab teile Ă”igesti hinnatud andmed.

Kuidas saada nende tabelite kohta statistikat? Selleks on PostgreSQL-il vaadete perekond. Ja pĂ”hivaade on . User_tables â see tĂ€hendab, et tabelid luuakse kasutaja nimel. Seevastu on sĂŒsteemivaateid, mida kasutab PostgreSQL ise. Ja seal on kokkuvĂ”tlik tabel Alltables, mis sisaldab nii sĂŒsteemi kui ka kasutajat. VĂ”ite alustada ĂŒkskĂ”ik millisest neist, mis teile kĂ”ige rohkem meeldivad.
Ălaltoodud vĂ€lju saab kasutada lisamiste, vĂ€rskenduste ja kustutamiste arvu hindamiseks. NĂ€idisarmatuurlaud, mida kasutasin, kasutab neid vĂ€lju töökoormuse omaduste hindamiseks. SeetĂ”ttu saame ka neile tugineda. Kuid tasub meeles pidada, et need on kordused, mitte baitid, nii et me ei saa seda vĂ”tta ja baitideks muuta.
Nende andmete pÔhjal saame koostada nn TopN-tabelid. NÀiteks Top-5, Top-10. Ja saate jÀlgida neid kuumi laudu, mida kasutatakse rohkem kui teisi. NÀiteks 5 "kuuma" tabelit sisestamiseks. Ja nende TopN-tabelite jÀrgi hindame oma töökoormust ja saame hinnata töökoormuse puhanguid pÀrast mis tahes vÀljalaseid ja vÀrskendusi ning juurutamist.
Samuti on oluline hinnata tabeli suurust, sest mĂ”nikord vĂ”tavad arendajad kasutusele uue funktsiooni ja meie tabelid hakkavad oma suurtes suurustes paisuma, kuna nad otsustasid lisada tĂ€iendava koguse andmeid, kuid ei ennustanud, kuidas see juhtuks. mĂ”jutada andmebaasi suurust. Sellised juhtumid tulevad meilegi ĂŒllatusena.

Ja nĂŒĂŒd vĂ€ike kĂŒsimus teile. Mis on kĂŒsimus, kui mĂ€rkate andmebaasiserveri koormust? Mis on teie jĂ€rgmine kĂŒsimus?

Kuid tegelik kĂŒsimus on jĂ€rgmine. Milliseid taotlusi koormus pĂ”hjustab? See tĂ€hendab, et pole huvitav jĂ€lgida protsesse, mida koormus pĂ”hjustab. Selge on see, et kui host on andmebaasiga, siis andmebaas töötab seal ja on selge, et seal hĂ€vitatakse ainult andmebaasid. Kui avate Top, nĂ€eme seal nimekirja PostgreSQL-i protsessidest, mis midagi teevad. Ălevalt pole selge, mida nad teevad.

Sellest lĂ€htuvalt peate leidma need pĂ€ringud, mis pĂ”hjustavad kĂ”ige rohkem koormust, sest pĂ€ringu hÀÀlestamine annab reeglina rohkem kasumit kui PostgreSQL-i konfigureerimine 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. Taotluse parandamine on kiirem kui konfiguratsiooni parandamine, taaskĂ€ivitamise ajastamine, eriti kui andmebaasi ei saa taaskĂ€ivitada, vĂ”i riistvara lisamine. Lihtsam on pĂ€ring kuhugi ĂŒmber kirjutada vĂ”i indeks lisada, et sellest pĂ€ringust parem tulemus saada.

Sellest lĂ€htuvalt on vaja jĂ€lgida taotlusi ja nende piisavust. VĂ”tame veel ĂŒhe nĂ€ite jĂ€lgimisest. Ja ka siin nĂ€ib olevat suurepĂ€rane jĂ€lgimine. Seal on info replikatsiooni kohta, on info lĂ€bilaskevĂ”ime, blokeerimise, ressursside kasutamise kohta. KĂ”ik on korras, aga taotluste kohta info puudub. Pole selge, millised pĂ€ringud meie andmebaasis töötavad, kui kaua need töötavad, kui palju neid pĂ€ringuid on. Meil peab see teave jĂ€lgimisel alati olema.

Ja selle teabe saamiseks saame kasutada moodulit pg_stat_statements. Selle pÔhjal saate luua erinevat graafikat. NÀiteks saate teavet kÔige sagedasemate pÀringute kohta, st nende pÀringute kohta, mida kÔige sagedamini tÀidetakse. Jah, pÀrast juurutamist on ka vÀga kasulik seda vaadata ja aru saada, kas taotluste arv on tÔusnud.
Saate jÀlgida kÔige pikemaid taotlusi, st neid, mille tÀitmine vÔtab kÔige kauem aega. Need töötavad protsessoril, tarbivad I/O-d. Seda saame hinnata ka vÀljade total_time, mean_time, blk_write_time ja blk_read_time jÀrgi.
Saame hinnata ja jÀlgida kÔige raskemaid ressursikasutuse taotlusi, neid, mis loevad kettalt, neid, mis töötavad mÀluga vÔi, vastupidi, tekitavad mingisuguse kirjutuskoormuse.
Saame hinnata kÔige heldemaid taotlusi. Need on pÀringud, mis tagastavad suure hulga ridu. NÀiteks vÔib see olla mingi taotlus, kus nad unustasid limiidi seada. Ja see lihtsalt tagastab kogu tabeli sisu vÔi pÀringu soovitud tabelites.
Samuti saate jÀlgida pÀringuid, mis kasutavad ajutisi faile vÔi ajutisi tabeleid.

Ja meil on veel taustaprotsessid. Taustaprotsessid on peamiselt kontrollpunktid vÔi neid nimetatakse ka kontrollpunktideks, need on autovaakum ja replikatsioon.

JĂ€lle ĂŒks nĂ€ide jĂ€lgimisest. Vasakul on vahekaart Hooldus, minge sellele ja loodetavasti nĂ€ete midagi kasulikku. Aga siin on ainult vaakumi aeg ja statistika kogumine, ei midagi muud. See on vĂ€ga kehv info, seega peab alati olema infot selle kohta, kuidas meie andmebaasis taustprotsessid töötavad ja kas nende töös on probleeme.

Kui vaatame kontrollpunkte, tuleb meeles pidada, et meie kontrollpunktid loputavad "mÀÀrdunud" lehti killustatud mÀlualast kettale ja loovad seejÀrel kontrollpunkti. Ja seda kontrollpunkti saab juba taastamise ajal kohana kasutada, kui PostgreSQL hÀdaolukorras ootamatult lÔpetati.
SeetĂ”ttu peate kĂ”igi "mÀÀrdunud" lehtede kettale loputamiseks tegema teatud koguse kirjutamist. Ja reeglina on see suure mĂ€lumahuga sĂŒsteemides palju. Ja kui me teeme kontrollpunkte vĂ€ga sageli mĂ”ne lĂŒhikese intervalliga, siis ketta jĂ”udlus langeb vĂ€ga palju. Ja klientide taotlused kannatavad ressursside puudumise tĂ”ttu. Nad vĂ”istlevad ressursside pĂ€rast ja neil puudub tootlikkus.
Vastavalt sellele saame kindlaksmÀÀratud vÀljadel oleva pg_stat_bgwriteri kaudu jÀlgida tekkivate kontrollpunktide arvu. Ja kui meil on teatud aja jooksul (10-15-20 minutiks, pooleks tunniks) palju kontrollpunkte, nÀiteks 3-4-5, siis vÔib see juba probleem olla. Ja juba tuleb vaadata andmebaasist, vaadata konfiguratsioonist, mis pÔhjustab sellise kontrollpunktide rohkuse. VÔib-olla on tulemas mÔni suur rekord. Koormust saame juba hinnata, sest oleme juba lisanud töökoormuse graafikud. VÔime juba murdepunkti parameetreid muuta ja veenduda, et need pÀringu jÔudlust oluliselt ei mÔjuta.

Ma lĂ€hen uuesti autovaakumi juurde tagasi, sest see on selline asi, nagu ma ĂŒtlesin, mis vĂ”ib hĂ”lpsasti liita nii ketta kui ka pĂ€ringu jĂ”udluse, seega on alati oluline mÔÔta automaatvaakumi kogust.
Autovaakumtööliste arv andmebaasis on piiratud. Vaikimisi on neid kolm, nii et kui meil töötab andmebaasis kogu aeg kolm töötajat, siis see tĂ€hendab, et meie autovaakum on alakonfigureeritud, peame limiite tĂ”stma, autovaakumi seaded ĂŒle vaatama ja juba konfiguratsiooni sisse ronima.
Oluline on hinnata, millised vaakumtöötajad meil töötavad. Kas kÀivitati kasutaja poolt, DBA tuli sisse ja kÀivitas kÀtega mingi vaakumi ja see tekitas koormuse. Meil on probleem. VÔi see on vaakumite arv, mis tehinguloendurit lahti keeravad. MÔne PostgreSQL-i versiooni puhul on need vÀga suured vaakumid. Ja nad saavad hÔlpsasti jÔudlust lisada, kuna nad lahutavad kogu tabeli ja skannivad kÔiki selle tabeli plokke.
Ja muidugi vaakumide kestus. Kui meil on pikad vaakumid, mis töötavad vĂ€ga kaua, siis see tĂ€hendab, et peaksime taas tĂ€helepanu pöörama vaakumi konfiguratsioonile ja vĂ”ib-olla selle seaded uuesti lĂ€bi vaatama. Kuna vĂ”ib tekkida olukord, kui vaakum töötab laual pikka aega (3-4 tundi), kuid vaakumi töötamise ajal Ă”nnestus tabelisse koguneda taas suur hulk surnud ridu. Ja niipea, kui vaakum lĂ€bi saab, on tal vaja see laud uuesti tolmuimejaga Ă€ra imeda. Ja jĂ”uame olukorrani â lĂ”pmatu vaakum. Ja sel juhul ei tule vaakum oma tööga toime ja tabelid hakkavad jĂ€rk-jĂ€rgult paisuma, kuigi kasulike andmete hulk selles jÀÀb samaks. SeetĂ”ttu vaatame pikkades vaakumites alati konfiguratsiooni ja proovime seda optimeerida, kuid samal ajal, et kliendi soovide toimimine ei kannataks.

NĂŒĂŒd pole praktiliselt ĂŒhtegi PostgreSQL-i installi, kus poleks voogesituse replikatsiooni. Replikatsioon on andmete ĂŒlekandmine pĂ”hiseadmest koopiasse.
Replikatsioon PostgreSQL-is on korraldatud tehingulogi kaudu. Ălem genereerib tehingulogi. VĂ”rguĂŒhenduse tehingulogi lĂ€heb koopiasse, seejĂ€rel reprodutseeritakse see koopial. KĂ”ik on lihtne.
Sellest lĂ€htuvalt kasutatakse replikatsiooni viivituse jĂ€lgimiseks vaadet pg_stat_replication. Kuid see pole tema jaoks lihtne. Versioonis 10 on vaade lĂ€binud mitmeid muudatusi. Esiteks on mĂ”ned vĂ€ljad ĂŒmber nimetatud. Ja mĂ”ned vĂ€ljad on lisatud. 10. versioonis ilmusid vĂ€ljad, mis vĂ”imaldavad teil hinnata replikatsiooni viivitust sekundites. See on vĂ€ga mugav. Enne versiooni 10 oli replikatsiooni viivitust vĂ”imalik hinnata baitides. See funktsioon jĂ€i 10. versiooni, st saate valida, mis on teile mugavam - hinnata viivitust baitides vĂ”i hinnata viivitust sekundites. Paljud teevad mĂ”lemat.
Replikatsiooni viivituse hindamiseks peate aga teadma logi asukohta tehingus. Ja need tehingulogi asukohad on lihtsalt pg_stat_replication vaates. Suhteliselt öeldes saame kasutada funktsiooni pg_xlog_location_diff(), et vÔtta tehingulogis kaks punkti. Arvutage nendevaheline delta ja mÀÀrake replikatsiooni viivitus baitides. See on vÀga mugav ja lihtne.
Versioonis 10 nimetati see funktsioon ĂŒmber pg_wal_lsn_diff(). Ăldiselt asendati see kĂ”igis funktsioonides, vaadetes, utiliitides, kus sĂ”na "xlog" kohtas, vÀÀrtusega "wal". Seda nii vaadetes kui ka funktsioonides. See on selline uuendus.
Lisaks lisati 10. versioonile read, mis nÀitavad konkreetselt viivitust. Need on kirjutamisviivitus, loputusviivitus, taasesituse viivitus. See tÀhendab, et neid asju on oluline jÀlgida. Kui nÀeme, et meil on replikatsiooniviivitus, peame uurima, miks see ilmus, kust see tuli ja probleem lahendama.

SĂŒsteemi mÔÔdikutega on peaaegu kĂ”ik korras. Kui mis tahes monitooring sĂŒnnib, algab see sĂŒsteemi mÔÔdikutest. See on protsessorite, mĂ€lu, swapi, vĂ”rgu ja ketta kasutamine. Kuid sellegipoolest pole vaikimisi palju parameetreid seal.
Kui protsessi utiliseerimisega on kÔik korras, siis on probleeme ketta utiliseerimisega. Reeglina lisavad seirearendajad ribalaiuse teavet. See vÔib olla iops vÔi baitides. Kuid nad unustavad latentsusaja ja kettaseadmete kasutamise. Need on olulisemad parameetrid, mis vÔimaldavad meil hinnata, kui koormatud on meie kettad ja kui palju need aeglustuvad. Kui meil on kÔrge latentsusaeg, tÀhendab see, et ketastega on probleeme. Kui meil on kÔrge kasutusaste, tÀhendab see, et kettad ei saa hakkama. Need on pigem kvalitatiivsed omadused kui ribalaius.
Seda statistikat saab aga ka /proc failisĂŒsteemist, nagu seda tehakse protsessori taaskasutuse puhul. Miks seda infot monitooringule ei lisata, ma ei tea. Kuid ikkagi on oluline, et see oleks teie jĂ€lgimises.
Sama kehtib ka vÔrguliideste kohta. VÔrgu ribalaiuse kohta on teavet pakettidena, baitides, kuid sellest hoolimata puudub teave latentsuse ja kasutamise kohta, kuigi see on samuti kasulik teave.

Igal jÀlgimisel on oma puudused. Ja olenemata sellest, millist jÀrelevalvet te kasutate, ei vasta see alati teatud kriteeriumidele. Kuid sellegipoolest need arenevad, lisatakse uusi funktsioone, uusi asju, nii et valige midagi ja lÔpetage see.
Ja selleks, et lÔpetada, peab alati olema ettekujutus, mida antud statistika tÀhendab ja kuidas sellega probleeme lahendada.
Ja mÔned pÔhipunktid:
- Alati on vaja jÀlgida saadavust, omada armatuurlaudu, et saaks kiiresti hinnata, et baasiga on kÔik korras.
- Halbade klientide vÀljarookimiseks ja nende tulistamiseks peab teil alati olema ettekujutus sellest, millised kliendid teie andmebaasiga töötavad.
- Oluline on hinnata, kuidas need kliendid andmetega töötavad. Teil peab olema ettekujutus oma töökoormusest.
- Oluline on hinnata, kuidas see töökoormus kujuneb, milliste pĂ€ringute abil. Saate pĂ€ringuid hinnata, neid optimeerida, ĂŒmber kujundada, nende jaoks indekseid koostada. See on vĂ€ga tĂ€htis.
- Taustprotsessid vÔivad klientide taotlusi negatiivselt mÔjutada, mistÔttu on oluline tagada, et nad ei kasutaks liiga palju ressursse.
- SĂŒsteemi mÔÔdikud vĂ”imaldavad teil teha plaane skaleerimiseks ja serverite vĂ”imsuse suurendamiseks, seega on oluline ka neid jĂ€lgida ja hinnata.

Kui olete sellest teemast huvitatud, vÔite jÀrgida neid linke.
on statistika koguja ametlik dokumentatsioon. Seal on kĂ”igi statistiliste vaadete kirjeldus ja kĂ”igi vĂ€ljade kirjeldus. Saate neid lugeda, mĂ”ista ja analĂŒĂŒsida. Ja nende pĂ”hjal koostage oma diagrammid, lisage oma monitooringut.
Taotlege nÀiteid:
See on meie ettevĂ”tte hoidla ja minu oma. Neil on nĂ€idistaotlused. PĂ€ringuid valida* sarjast pole, midagi seal. Juba on olemas liitumistega valmispĂ€ringud, mis kasutavad huvitavaid funktsioone, mis vĂ”imaldavad toorarvudest teha loetavaid, mugavaid vÀÀrtusi, st need on baitid, aeg. Saate neid valida, vaadata, analĂŒĂŒsida, lisada oma monitooringutesse, koostada nende pĂ”hjal oma monitooringud.
kĂŒsimused
KĂŒsimus: Ătlesite, et ei hakka brĂ€nde reklaamima, aga ma ikka mĂ”tlen â milliseid armatuurlaudu te oma projektides kasutate?
Vastus: Erinevatel viisidel. Juhtub, et tuleme kliendi juurde ja tal on juba oma monitooring. Ja nĂ”ustame klienti, mida on vaja tema jĂ€lgimisse lisada. KĂ”ige hullem on olukord Zabbixiga. Kuna sellel pole TopN-graafika koostamise vĂ”imalust. Me ise kasutame sest me konsulteerisime nende meestega jĂ€lgimise osas. Nad tegid meie TOR-i pĂ”hjal PostgreSQL-i jĂ€lgimist. Kirjutan oma lemmikloomaprojekti, mis kogub Prometheuse kaudu andmeid ja tĂ”mbab need sisse . Minu ĂŒlesandeks on teha Prometheuses oma eksportija ja seejĂ€rel kĂ”ik Grafanasse joonistada.
KĂŒsimus: Kas AWR-i aruannetel vĂ”i ... liitmikel on analooge? Kas olete millestki sellisest teadlik?
Vastus: Jah, ma tean, mis on AWR, see on lahe asi. Praegu on saadaval mitmesuguseid jalgrattaid, mis rakendavad ligikaudu jĂ€rgmist mudelit. Teatud ajavahemike jĂ€rel kirjutatakse mĂ”ned lĂ€htejooned samasse PostgreSQL-i vĂ”i eraldi salvestusruumi. Internetist vĂ”id googeldada, on. Ăks sellise asja arendajatest istub sql.ru foorumis PostgreSQL-i lĂ”imes. Seal saate ta kinni pĂŒĂŒda. Jah, selliseid asju on, neid saab kasutada. pluss selles Kirjutan ka asja, mis vĂ”imaldab sul sama teha.
PS1 Kui kasutate postgres_exporterit, siis millist juhtpaneeli te kasutate? Neid on mitu. Need on juba aegunud. Kas kogukond saab luua vÀrskendatud malli?
PS2 eemaldatud pganalyze, kuna see on patenteeritud SaaS-i pakkumine, mis keskendub jÔudluse jÀlgimisele ja automatiseeritud hÀÀlestamise soovitustele.
KĂŒsitluses saavad osaleda ainult registreerunud kasutajad. palun.
Milline isehostitav postgresql-i jÀlgimine (koos armatuurlauaga) on teie arvates parim?
30,0%Zabbix + tÀiendused Aleksei Lesovskilt 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 kustutada1
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
10 kasutajat hÀÀletas. 26 kasutajat jÀi erapooletuks.
Allikas: www.habr.com
