PostgreSQL uzraudzības pamati. Aleksejs Ļesovskis

Iesaku izlasÄ«t Alekseja Ä»esovska ziņojuma atÅ”ifrējumu no Data Egret ā€œPostgreSQL monitoringa pamatiā€

Å ajā ziņojumā Aleksejs Ä»esovskis runās par galvenajiem post-sacensÄ«bu statistikas punktiem, ko tie nozÄ«mē un kāpēc tiem vajadzētu bÅ«t klāt monitoringā; par to, kādiem grafikiem jābÅ«t monitoringā, kā tos pievienot un kā tos interpretēt. Pārskats bÅ«s noderÄ«gs datu bāzu administratoriem, sistēmu administratoriem un izstrādātājiem, kuri interesējas par Postgres problēmu novērÅ”anu.

PostgreSQL uzraudzības pamati. Aleksejs Ļesovskis

Mani sauc Aleksejs Ļesovskis, es pārstāvu uzņēmumu Data Egret.

Daži vārdi par sevi. Es jau sen sāku strādāt kā sistēmas administrators.

Administrēju visdažādākās Linux sistēmas, strādāju pie dažādām ar Linux saistÄ«tām lietām, t.i., virtualizācijas, monitoringa, strādāju ar starpniekserveriem utt. Bet kādā brÄ«dÄ« sāku vairāk strādāt ar datu bāzēm, PostgreSQL. Man viņŔ ļoti patika. Un kādā brÄ«dÄ« es sāku strādāt ar PostgreSQL lielāko daļu sava darba laika. Un tā pakāpeniski es kļuvu par PostgreSQL DBA.

Un visas savas karjeras laikā mani vienmēr ir interesējuÅ”as statistikas, monitoringa un telemetrijas tēmas. Un, kad es biju sistēmas administrators, es ļoti cieÅ”i sadarbojos ar Zabbix. Un es uzrakstÄ«ju nelielu skriptu komplektu, piemēram zabbix-paplaÅ”inājumi. Savā laikā viņŔ bija diezgan populārs. Un tur varēja uzraudzÄ«t ļoti dažādas svarÄ«gas lietas, ne tikai Linux, bet arÄ« dažādus komponentus.

Tagad es strādāju pie PostgreSQL. Es jau rakstu vēl vienu lietu, kas ļauj strādāt ar PostgreSQL statistiku. Tas tiek saukts pgCenter (raksts par Habrē - Statistika pēc progresa bez nerviem un spriedzes).

PostgreSQL uzraudzības pamati. Aleksejs Ļesovskis

Neliela ievada piezÄ«me. Kādas situācijas ir mÅ«su klientiem, mÅ«su klientiem? Ir kaut kāds negadÄ«jums saistÄ«bā ar datu bāzi. Un, kad datu bāze jau ir atjaunota, nāk nodaļas vadÄ«tājs vai attÄ«stÄ«bas vadÄ«tājs un saka: "Draugi, mums ir jāuzrauga datu bāze, jo ir noticis kaut kas slikts un ir nepiecieÅ”ams, lai tas nenotiktu nākotnē." Un Å”eit sākas interesantais process, izvēloties monitoringa sistēmu vai pielāgojot esoÅ”o uzraudzÄ«bas sistēmu, lai jÅ«s varētu uzraudzÄ«t savu datu bāzi - PostgreSQL, MySQL vai dažas citas. Un kolēģi sāk ieteikt: ā€œEs dzirdēju, ka ir tāda un tāda datubāze. Izmantosim." Kolēģi sāk strÄ«dēties savā starpā. Un beigās izrādās, ka mēs atlasām kaut kādu datu bāzi, bet PostgreSQL monitorings tajā ir diezgan vāji attēlots un vienmēr kaut kas jāpievieno. Paņemiet dažas repozitorijas no GitHub, klonējiet tās, pielāgojiet skriptus un kaut kā pielāgojiet tos. Un galu galā tas ir kaut kāds roku darbs.

PostgreSQL uzraudzības pamati. Aleksejs Ļesovskis

Tāpēc Å”ajā runā es mēģināŔu sniegt jums zināŔanas par to, kā izvēlēties monitoringu ne tikai PostgreSQL, bet arÄ« datubāzei. Un dos jums zināŔanas, kas ļaus pabeigt uzraudzÄ«bu, lai no tā gÅ«tu kādu labumu, lai jÅ«s varētu ar labumu uzraudzÄ«t savu datubāzi, lai operatÄ«vi novērstu iespējamās ārkārtas situācijas.

Un idejas, kas bÅ«s Å”ajā pārskatā, var tieÅ”i pielāgot jebkurai datubāzei, vai tā bÅ«tu DBVS vai noSQL. Tāpēc ir ne tikai PostgreSQL, bet bÅ«s daudz recepÅ”u, kā to izdarÄ«t PostgreSQL. BÅ«s vaicājumu piemēri, entÄ«tiju piemēri, kas PostgreSQL ir paredzētas uzraudzÄ«bai. Un, ja jÅ«su DBVS ir tās paÅ”as lietas, kas ļauj tās ievietot uzraudzÄ«bā, varat arÄ« tās pielāgot, pievienot un bÅ«s labi.

PostgreSQL uzraudzÄ«bas pamati. Aleksejs Ä»esovskisEs nepiedalÄ«Å”os ziņojumā
runāt par to, kā piegādāt un uzglabāt metriku. Par datu pēcapstrādi un pasniegÅ”anu lietotājam neko neteikÅ”u. Un es neko neteikÅ”u par brÄ«dināŔanu.
Bet stāstam turpinoties, es rādÄ«Å”u dažādus esoŔā monitoringa ekrānuzņēmumus un kaut kā tos kritizÄ“Å”u. Bet tomēr es centÄ«Å”os nenosaukt zÄ«molus, lai neradÄ«tu Å”iem produktiem reklāmu vai antireklāmu. Tāpēc visas sakritÄ«bas ir nejauÅ”as un ir atstātas jÅ«su iztēlei.
PostgreSQL uzraudzības pamati. Aleksejs Ļesovskis
Pirmkārt, izdomāsim, kas ir uzraudzÄ«ba. UzraudzÄ«ba ir ļoti svarÄ«ga lieta. Visi to saprot. Taču tajā paŔā laikā uzraudzÄ«ba neattiecas uz biznesa produktu un tieÅ”i neietekmē uzņēmuma peļņu, tāpēc uzraudzÄ«bai laiks vienmēr tiek atvēlēts uz atlikumu. Ja mums ir laiks, tad veicam uzraudzÄ«bu; ja nav laika, tad labi, iekļausim to atlikumos un kādreiz atgriezÄ«simies pie Å”iem uzdevumiem.

Tāpēc no mūsu prakses, kad mēs nonākam pie klientiem, uzraudzība bieži ir nepilnīga un tajā nav nekādu interesantu lietu, kas palīdzētu mums labāk strādāt ar datu bāzi. Un tāpēc uzraudzība vienmēr ir jāpabeidz.

Datu bāzes ir tik sarežģītas lietas, kas arÄ« jāuzrauga, jo datu bāzes ir informācijas krātuve. Un informācija uzņēmumam ir ļoti svarÄ«ga, to nekādā veidā nevar pazaudēt. Taču tajā paŔā laikā datu bāzes ir ļoti sarežģītas programmatÅ«ras daļas. Tie sastāv no liela skaita sastāvdaļu. Un daudzas no Ŕīm sastāvdaļām ir jāuzrauga.

PostgreSQL uzraudzÄ«bas pamati. Aleksejs Ä»esovskisJa mēs runājam tieÅ”i par PostgreSQL, tad to var attēlot shēmas veidā, kas sastāv no liela skaita komponentu. Å Ä«s sastāvdaļas mijiedarbojas viena ar otru. Un tajā paŔā laikā PostgreSQL ir tā saucamā Stats Collector apakÅ”sistēma, kas ļauj apkopot statistiku par Å”o apakÅ”sistēmu darbÄ«bu un nodroÅ”ināt kaut kādu saskarni administratoram vai lietotājam, lai viņŔ varētu apskatÄ«t Å”o statistiku.

Å Ä« statistika tiek parādÄ«ta noteikta funkciju un skatu veidā. Tos var saukt arÄ« par galdiem. Tas ir, izmantojot parasto psql klientu, varat izveidot savienojumu ar datu bāzi, atlasÄ«t Ŕīs funkcijas un skatus un iegÅ«t dažus konkrētus skaitļus par PostgreSQL apakÅ”sistēmu darbÄ«bu.

Varat pievienot Å”os skaitļus savai iecienÄ«tajai uzraudzÄ«bas sistēmai, zÄ«mēt grafikus, pievienot funkcijas un iegÅ«t analÄ«zi ilgtermiņā.

Bet Å”ajā ziņojumā es neaptvēru visas Ŕīs funkcijas pilnÄ«bā, jo tas varētu aizņemt visu dienu. Es burtiski pievērsÄ«Å”os divām, trim vai četrām lietām un pastāstÄ«Å”u, kā tās palÄ«dz uzlabot uzraudzÄ«bu.
PostgreSQL uzraudzības pamati. Aleksejs Ļesovskis
Un, ja mēs runājam par datu bāzes uzraudzÄ«bu, tad kas ir jāuzrauga? Pirmkārt, mums ir jāuzrauga pieejamÄ«ba, jo datubāze ir pakalpojums, kas nodroÅ”ina piekļuvi datiem klientiem, un mums ir jāuzrauga pieejamÄ«ba, kā arÄ« jānodroÅ”ina daži tās kvalitatÄ«vie un kvantitatÄ«vie raksturlielumi.

PostgreSQL uzraudzības pamati. Aleksejs Ļesovskis

Mums ir arī jāuzrauga klienti, kas pieslēdzas mūsu datubāzei, jo tie var būt gan parasti klienti, gan kaitīgi klienti, kas var kaitēt datubāzei. Viņi arī ir jāuzrauga un jāseko viņu darbībai.

PostgreSQL uzraudzības pamati. Aleksejs Ļesovskis

Kad klienti pieslēdzas datu bāzei, ir acīmredzams, ka viņi sāk strādāt ar mūsu datiem, tāpēc mums ir jāuzrauga, kā klienti strādā ar datiem: ar kādām tabulām un mazākā mērā ar kādiem indeksiem. Tas ir, mums ir jāizvērtē mūsu klientu radītā darba slodze.

PostgreSQL uzraudzības pamati. Aleksejs Ļesovskis

Taču darba slodzi, protams, veido arī pieprasījumi. Lietojumprogrammas pieslēdzas datu bāzei, piekļūst datiem, izmantojot vaicājumus, tāpēc ir svarīgi izvērtēt, kādi vaicājumi mums ir datu bāzē, sekot līdzi to atbilstībai, lai tie nebūtu rakstīti greizi, ka dažas opcijas ir jāpārraksta un jāpadara tā, lai tās strādātu ātrāk un ar labāku veiktspēju.

PostgreSQL uzraudzības pamati. Aleksejs Ļesovskis

Un tā kā mēs runājam par datu bāzi, datu bāze vienmēr ir fona procesi. Fona procesi palÄ«dz uzturēt datu bāzes veiktspēju labā lÄ«menÄ«, tāpēc to darbÄ«bai ir nepiecieÅ”ams noteikts resursu daudzums. Un tajā paŔā laikā tie var pārklāties ar klientu pieprasÄ«jumu resursiem, tāpēc mantkārÄ«gi fona procesi var tieÅ”i ietekmēt klientu pieprasÄ«jumu izpildi. Tāpēc arÄ« tie ir jāuzrauga un jāseko lÄ«dzi, lai nebÅ«tu nekādu traucējumu fona procesos.

PostgreSQL uzraudzības pamati. Aleksejs Ļesovskis

Un tas viss datu bāzes uzraudzÄ«bas ziņā paliek sistēmas metrikā. Taču, ņemot vērā, ka lielākā daļa mÅ«su infrastruktÅ«ras tiek pārvietota uz mākoņiem, atseviŔķa resursdatora sistēmas rādÄ«tāji vienmēr izgaist fonā. Bet datu bāzēs tie joprojām ir aktuāli, un, protams, ir arÄ« jāuzrauga sistēmas rādÄ«tāji.

PostgreSQL uzraudzības pamati. Aleksejs Ļesovskis

Ar sistēmas metriku viss ir vairāk vai mazāk kārtÄ«bā, visas mÅ«sdienu uzraudzÄ«bas sistēmas jau atbalsta Å”os rādÄ«tājus, bet kopumā ar dažiem komponentiem joprojām nepietiek un dažas lietas ir jāpievieno. PieskarÅ”os arÄ« tiem, par tiem bÅ«s vairāki slaidi.

PostgreSQL uzraudzības pamati. Aleksejs Ļesovskis
Pirmais plāna punkts ir pieejamÄ«ba. Kas ir pieejamÄ«ba? PieejamÄ«ba manā izpratnē ir bāzes spēja apkalpot savienojumus, t.i., bāze ir pacelta, tā kā pakalpojums pieņem pieslēgumus no klientiem. Un Å”o pieejamÄ«bu var novērtēt pēc noteiktiem raksturlielumiem. Å os raksturlielumus ir ļoti ērti parādÄ«t informācijas paneļos.

PostgreSQL uzraudzības pamati. Aleksejs Ļesovskis
Ikviens zina, kas ir informācijas paneļi. Tas ir tad, kad vienu reizi apskatÄ«jāt ekrānu, kurā ir apkopota nepiecieÅ”amā informācija. Un jÅ«s varat uzreiz noteikt, vai datu bāzē ir problēma vai nē.
AttiecÄ«gi informācijas paneļos vienmēr ir jāparāda datu bāzes pieejamÄ«ba un citi galvenie raksturlielumi, lai Ŕī informācija bÅ«tu jums vienmēr pieejama un pieejama. Dažas papildu detaļas, kas jau palÄ«dz incidentu izmeklÄ“Å”anā, izmeklējot dažas ārkārtas situācijas, tās jau ir jāievieto sekundārajos informācijas paneļos vai jāpaslēpj detalizētajās saitēs, kas ved uz treÅ”o puÅ”u uzraudzÄ«bas sistēmām.

PostgreSQL uzraudzības pamati. Aleksejs Ļesovskis

Vienas labi zināmas uzraudzÄ«bas sistēmas piemērs. Å Ä« ir ļoti forÅ”a uzraudzÄ«bas sistēma. Viņa vāc daudz datu, taču no mana viedokļa viņai ir dÄ«vains informācijas paneļu jēdziens. Ir saite uz "izveidot informācijas paneli". Bet, veidojot informācijas paneli, tiek izveidots divu kolonnu saraksts, grafiku saraksts. Un, kad vajag kaut ko apskatÄ«t, sāc klikŔķināt ar peli, ritināt, meklēt vajadzÄ«go diagrammu. Un tas prasa laiku, t.i., nav informācijas paneļu kā tādu. Ir tikai diagrammu saraksti.

PostgreSQL uzraudzības pamati. Aleksejs Ļesovskis

Kas jums jāpievieno Å”iem informācijas paneļiem? Varat sākt ar tādu raksturlielumu kā reakcijas laiks. PostgreSQL ir pg_stat_statements skats. Pēc noklusējuma tas ir atspējots, taču tas ir viens no svarÄ«gajiem sistēmas skatiem, kas vienmēr ir jāiespējo un jāizmanto. Tas saglabā informāciju par visiem esoÅ”ajiem vaicājumiem, kas ir izpildÄ«ti datu bāzē.

AttiecÄ«gi mēs varam sākt no tā, ka mēs varam ņemt visu pieprasÄ«jumu kopējo izpildes laiku un dalÄ«t to ar pieprasÄ«jumu skaitu, izmantojot iepriekÅ” minētos laukus. Bet tāda ir vidējā temperatÅ«ra slimnÄ«cā. Varam sākt no citiem laukiem ā€“ minimālais vaicājuma izpildes laiks, maksimālais un mediāna. Un mēs pat varam izveidot procentiles; PostgreSQL Å”im nolÅ«kam ir atbilstoÅ”as ā€‹ā€‹funkcijas. Un mēs varam iegÅ«t dažus skaitļus, kas raksturo mÅ«su datubāzes atbildes laiku jau izpildÄ«tiem pieprasÄ«jumiem, t.i., mēs neizpildām viltus pieprasÄ«jumu 'izvēlēties 1' un neskatāmies atbildes laiku, bet mēs analizējam atbildes laiku jau izpildÄ«tiem pieprasÄ«jumiem un izlozējam vai nu atseviŔķu figÅ«ru, vai arÄ« veidojam grafiku, pamatojoties uz to.

Ir arÄ« svarÄ«gi uzraudzÄ«t sistēmas paÅ”laik Ä£enerēto kļūdu skaitu. Un Å”im nolÅ«kam varat izmantot pg_stat_database skatu. Mēs koncentrējamies uz lauku xact_rollback. Å ajā laukā tiek parādÄ«ts ne tikai datubāzē notikuÅ”o atcelÅ”anas gadÄ«jumu skaits, bet arÄ« tiek ņemts vērā kļūdu skaits. RelatÄ«vi runājot, mēs varam parādÄ«t Å”o skaitli mÅ«su informācijas panelÄ« un redzēt, cik daudz kļūdu mums paÅ”laik ir. Ja kļūdu ir daudz, tas ir labs iemesls, lai izpētÄ«tu žurnālus un noskaidrotu, kāda veida kļūdas tās ir un kāpēc tās rodas, un pēc tam ieguldÄ«t un atrisināt tās.

PostgreSQL uzraudzības pamati. Aleksejs Ļesovskis

Varat pievienot tādu lietu kā tahometrs. Tie ir darÄ«jumu skaits sekundē un pieprasÄ«jumu skaits sekundē. NosacÄ«ti runājot, varat izmantot Å”os skaitļus kā savas datubāzes paÅ”reizējo veiktspēju un novērot, vai ir pieprasÄ«jumu maksimumi, darÄ«jumu maksimumi vai, gluži pretēji, vai datu bāze ir nepietiekami noslogota, jo kāda aizmugursistēma ir neizdevusies. Ir svarÄ«gi vienmēr skatÄ«ties uz Å”o skaitli un atcerēties, ka mÅ«su projektam Ŕāda veida veiktspēja ir normāla, taču vērtÄ«bas virs un zemāk jau ir kaut kādas problemātiskas un nesaprotamas, kas nozÄ«mē, ka mums ir jāskatās, kāpēc Å”ie skaitļi ir tik augstu.

Lai novērtētu darÄ«jumu skaitu, mēs atkal varam atsaukties uz pg_stat_database skatu. Mēs varam pievienot apņemÅ”anos skaitu un atcelÅ”anu skaitu un iegÅ«t darÄ«jumu skaitu sekundē.

Vai visi saprot, ka vienā darÄ«jumā var ietilpt vairāki pieprasÄ«jumi? Tāpēc TPS un QPS nedaudz atŔķiras.

PieprasÄ«jumu skaitu sekundē var iegÅ«t no pg_stat_statements un vienkārÅ”i aprēķināt visu izpildÄ«to pieprasÄ«jumu summu. Ir skaidrs, ka mēs salÄ«dzinām paÅ”reizējo vērtÄ«bu ar iepriekŔējo, atņemam to, iegÅ«stam delta un iegÅ«stam daudzumu.

PostgreSQL uzraudzības pamati. Aleksejs Ļesovskis

Ja vēlaties, varat pievienot papildu rādÄ«tājus, kas arÄ« palÄ«dz novērtēt mÅ«su datu bāzes pieejamÄ«bu un pārraudzÄ«t, vai nav bijuÅ”as dÄ«kstāves.

Viens no Å”iem rādÄ«tājiem ir darbspējas laiks. Taču PostgreSQL darbspējas laiks ir nedaudz grÅ«ts. Es jums pastāstÄ«Å”u, kāpēc. Kad PostgreSQL ir palaists, darbspējas laiks sāk ziņot. Bet, ja kādā brÄ«dÄ«, piemēram, kāds uzdevums darbojās naktÄ«, atnāca OOM-killer un piespiedu kārtā pārtrauca PostgreSQL bērnprocesu, tad Å”ajā gadÄ«jumā PostgreSQL pārtrauc visu klientu savienojumu, atiestata Ŕķelto atmiņas apgabalu un sāk atkopÅ”anu no pēdējais kontrolpunkts. Un, kamēr Ŕī atkopÅ”anās no kontrolpunkta ilgst, datu bāze savienojumus nepieņem, t.i., Ŕī situācija ir vērtējama kā dÄ«kstāve. Bet darbÄ«bas laika skaitÄ«tājs netiks atiestatÄ«ts, jo tas ņem vērā postmaster palaiÅ”anas laiku no paÅ”a pirmā brīža. Tāpēc Ŕādas situācijas var izlaist.

Jums arÄ« jāuzrauga vakuuma darbinieku skaits. Vai visi zina, kas ir autovakuums programmā PostgreSQL? Å Ä« ir interesanta PostgreSQL apakÅ”sistēma. Par viņu ir rakstÄ«ti daudzi raksti, tapuÅ”i daudzi ziņojumi. Ir daudz diskusiju par vakuumu un to, kā tam vajadzētu darboties. Daudzi to uzskata par nepiecieÅ”amu ļaunumu. Bet tā tas ir. Å is ir sava veida atkritumu savācēja analogs, kas attÄ«ra novecojuÅ”as rindu versijas, kuras nav vajadzÄ«gas nevienam darÄ«jumam, un atbrÄ«vo vietu tabulās un indeksos jaunām rindām.

Kāpēc jums tas jāuzrauga? Jo vakuums dažreiz ļoti sāp. Tas patērē lielu daudzumu resursu, un rezultātā sāk ciest klientu pieprasījumi.

Un tas jāuzrauga caur pg_stat_activity skatu, par kuru es runāŔu nākamajā sadaļā. Å is skats parāda paÅ”reizējo darbÄ«bu datu bāzē. Izmantojot Å”o darbÄ«bu, mēs varam izsekot paÅ”laik strādājoÅ”o putekļu sÅ«cēju skaitam. Mēs varam izsekot vakuumiem un redzēt, ka, ja esam pārsnieguÅ”i limitu, tad tas ir iemesls ieskatÄ«ties PostgreSQL iestatÄ«jumos un kaut kā optimizēt vakuuma darbÄ«bu.

Vēl viena lieta saistÄ«bā ar PostgreSQL ir tāda, ka PostgreSQL ir ļoti slims ar garām transakcijām. ÄŖpaÅ”i no darÄ«jumiem, kas ilgi klÄ«st un neko nedara. Tas ir tā sauktais stat dÄ«kstāves darÄ«jums. Šāds darÄ«jums notur slēdzenes un neļauj vakuumam darboties. Un tā rezultātā galdi uzbriest un palielinās. Un vaicājumi, kas darbojas ar Ŕīm tabulām, sāk darboties lēnāk, jo jums ir jāsavāc visas vecās rindu versijas no atmiņas uz disku un atpakaļ. Tāpēc ir jāuzrauga arÄ« laiks, ilgāko darÄ«jumu ilgums, visilgākie vakuuma pieprasÄ«jumi. Un, ja mēs redzam dažus procesus, kas darbojas ļoti ilgu laiku, jau vairāk nekā 10-20-30 minÅ«tes OLTP slodzei, tad mums ir jāpievērÅ” tiem uzmanÄ«ba un jāpiespiež tie jāpārtrauc vai jāoptimizē lietojumprogramma, lai tie netiek saukti un tik ilgi nekarājas. AnalÄ«tiskajai slodzei 10-20-30 minÅ«tes ir normālas, ir arÄ« garākas.

PostgreSQL uzraudzības pamati. Aleksejs Ļesovskis
Tālāk mums ir iespēja ar savienotiem klientiem. Kad esam jau izveidojuÅ”i informācijas paneli un ievietojuÅ”i tajā galvenos pieejamÄ«bas rādÄ«tājus, varam tajā pievienot arÄ« papildu informāciju par saistÄ«tajiem klientiem.

Informācija par savienotajiem klientiem ir svarīga, jo no PostgreSQL viedokļa klienti ir atŔķirīgi. Ir labi klienti un ir slikti klienti.

VienkārÅ”s piemērs. Pēc klienta vārdiem es saprotu pieteikumu. Lietojumprogramma ir izveidojusi savienojumu ar datu bāzi un nekavējoties sāk sÅ«tÄ«t uz turieni savus pieprasÄ«jumus, datu bāze tos apstrādā un izpilda, un rezultātus atgriež klientam. Tie ir labi un pareizi klienti.

Ir situācijas, kad klients ir pieslēdzies, tas notur savienojumu, bet neko nedara. Tas ir dīkstāves stāvoklī.

Bet ir slikti klienti. Piemēram, tas pats klients pieslēdzās, atvēra darÄ«jumu, izdarÄ«ja kaut ko datu bāzē un pēc tam iegāja kodā, piemēram, lai piekļūtu ārējam avotam vai apstrādātu tur saņemtos datus. Bet viņŔ darÄ«jumu nenoslēdza. Un darÄ«jums karājas datu bāzē un tiek turēts lÄ«nijas slēdzenē. Tas ir slikts stāvoklis. Un, ja pēkŔņi kāda lietojumprogramma kaut kur sevÄ« neizdodas ar izņēmumu, tad darÄ«jums var palikt atvērts ļoti ilgu laiku. Un tas tieÅ”i ietekmē PostgreSQL veiktspēju. PostgreSQL bÅ«s lēnāks. Tāpēc ir svarÄ«gi Ŕādus klientus savlaicÄ«gi izsekot un piespiedu kārtā pārtraukt viņu darbu. Un jums ir jāoptimizē sava lietojumprogramma, lai Ŕādas situācijas nerastos.

Citi slikti klienti gaida klientus. Bet viņi kļūst slikti apstākļu dēļ. Piemēram, vienkārÅ”s dÄ«kstāves darÄ«jums: tas var atvērt darÄ«jumu, bloķēt dažas rindas, tad kaut kur kodā tas neizdosies, atstājot karājoÅ”u darÄ«jumu. Cits klients atnāks un pieprasÄ«s tos paÅ”us datus, taču viņŔ saskarsies ar bloÄ·Ä“Å”anu, jo Å”ajā pakarinātajā darÄ«jumā jau ir bloķējumi dažās nepiecieÅ”amajās rindās. Un otrais darÄ«jums turpināsies, gaidot, kad pirmais darÄ«jums tiks pabeigts vai administrators to piespiedu kārtā aizvērs. Tāpēc neapstiprinātie darÄ«jumi var uzkrāties un aizpildÄ«t datu bāzes savienojuma ierobežojumu. Un, kad limits ir pilns, lietojumprogramma vairs nevar strādāt ar datu bāzi. Tā jau ir projekta ārkārtas situācija. Tāpēc sliktie klienti ir jāseko lÄ«dzi un uz tiem ir jāreaģē savlaicÄ«gi.

PostgreSQL uzraudzības pamati. Aleksejs Ļesovskis

Vēl viens uzraudzÄ«bas piemērs. Un Å”eit jau ir pienācÄ«gs informācijas panelis. IepriekÅ” ir informācija par savienojumiem. DB pieslēgums ā€“ 8gab. Un viss. Mums nav informācijas par to, kuri klienti ir aktÄ«vi, kuri ir tikai dÄ«kā, neko nedarot. Nav informācijas par nepabeigtajiem darÄ«jumiem un neapstiprinātajiem savienojumiem, t.i., Å”is ir skaitlis, kas parāda savienojumu skaitu, un tas arÄ« viss. Un tad uzminiet paÅ”i.
PostgreSQL uzraudzības pamati. Aleksejs Ļesovskis
AttiecÄ«gi, lai pievienotu Å”o informāciju uzraudzÄ«bai, jums ir jāpiekļūst pg_stat_activity sistēmas skatam. Ja jÅ«s pavadāt daudz laika PostgreSQL, tad Å”is ir ļoti labs skats, kam vajadzētu kļūt par jÅ«su draugu, jo tas parāda paÅ”reizējo darbÄ«bu PostgreSQL, t.i., kas tajā notiek. Katram procesam ir atseviŔķa rindiņa, kas parāda informāciju par Å”o procesu: no kura resursdatora tika izveidots savienojums, ar kādu lietotāju, ar kādu vārdu, kad transakcija tika sākta, kāds pieprasÄ«jums paÅ”laik tiek izpildÄ«ts, kāds pieprasÄ«jums tika izpildÄ«ts pēdējo reizi. Un attiecÄ«gi varam novērtēt klienta stāvokli, izmantojot stat lauku. RelatÄ«vi runājot, mēs varam grupēt pēc Ŕī lauka un iegÅ«t to statistiku, kas paÅ”laik ir datu bāzē, un savienojumu skaitu, kuriem Ŕī statistika ir datu bāzē. Un jau saņemtos skaitļus varam nosÅ«tÄ«t uz mÅ«su monitoringu un pēc tiem uzzÄ«mēt grafikus.
SvarÄ«gi ir arÄ« izvērtēt darÄ«juma ilgumu. Jau teicu, ka svarÄ«gi ir izvērtēt vakuumu ilgumu, bet darÄ«jumus vērtē tāpat. Ir lauki xact_start un query_start. Tie, nosacÄ«ti runājot, parāda darÄ«juma sākuma laiku un pieprasÄ«juma sākuma laiku. Mēs ņemam funkciju now(), kas parāda paÅ”reizējo laikspiedolu, un atņemam darÄ«jumu un pieprasām laikspiedolu. Un mēs iegÅ«stam darÄ«juma ilgumu, pieprasÄ«juma ilgumu.

Ja mēs redzam ilgus darÄ«jumus, mums tie jau jāpabeidz. OLTP slodzei ilgi darÄ«jumi jau ir vairāk nekā 1-2-3 minÅ«tes. OLAP darba slodzei ilgstoÅ”as ā€‹ā€‹transakcijas ir normāla parādÄ«ba, taču, ja to pabeigÅ”ana prasa vairāk nekā divas stundas, tas arÄ« liecina, ka mums kaut kur ir Ŕķībs.

PostgreSQL uzraudzības pamati. Aleksejs Ļesovskis
Kad klienti ir izveidojuÅ”i savienojumu ar datu bāzi, viņi sāk strādāt ar mÅ«su datiem. Viņi piekļūst tabulām, viņi piekļūst indeksiem, lai iegÅ«tu datus no tabulas. Un ir svarÄ«gi novērtēt, kā klienti mijiedarbojas ar Å”iem datiem.

Tas ir nepiecieÅ”ams, lai novērtētu mÅ«su darba slodzi un aptuveni saprastu, kuras tabulas mums ir ā€œkarstākāsā€. Piemēram, tas ir nepiecieÅ”ams situācijās, kad mēs vēlamies novietot ā€œkarstāsā€ tabulas uz kāda veida ātras SSD atmiņas. Piemēram, dažas sen neizmantotas arhÄ«va tabulas var pārvietot uz kaut kādu ā€œaukstoā€ arhÄ«vu, uz SATA diskdziņiem un ļaut viņiem tur dzÄ«vot, tām piekļūs pēc vajadzÄ«bas.

Tas ir noderÄ«gi arÄ«, lai noteiktu anomālijas pēc izlaidumiem un izvietoÅ”anas. Pieņemsim, ka projekts ir izlaidis kādu jaunu funkciju. Piemēram, mēs pievienojām jaunu funkcionalitāti darbam ar datu bāzi. Un, ja mēs uzzÄ«mējam tabulu lietojuma grafikus, mēs varam viegli noteikt Ŕīs anomālijas Å”ajos grafikos. Piemēram, atjauniniet sērijveidu vai dzēsiet sērijas. Tas bÅ«s ļoti redzams.

Varat arÄ« atklāt anomālijas ā€œpeldoÅ”ajāā€ statistikā. Ko tas nozÄ«mē? PostgreSQL ir ļoti spēcÄ«gs un ļoti labs vaicājumu plānotājs. Un izstrādātāji velta daudz laika tā izstrādei. Kā viņŔ strādā? Lai izveidotu labus plānus, PostgreSQL apkopo statistiku par datu sadalÄ«jumu tabulās noteiktā laika intervālā un ar noteiktu biežumu. Å Ä«s ir visizplatÄ«tākās vērtÄ«bas: unikālo vērtÄ«bu skaits, informācija par NULL tabulā, daudz informācijas.

Pamatojoties uz Å”o statistiku, plānotājs konstruē vairākus vaicājumus, izvēlas optimālāko un izmanto Å”o vaicājumu plānu, lai izpildÄ«tu paÅ”u vaicājumu un atgrieztu datus.

Un gadās, ka statistika ā€œuzpeldā€. Kvalitātes un kvantitātes dati tabulā kaut kā mainÄ«jās, bet statistika netika apkopota. Un izveidotie plāni var nebÅ«t optimāli. Un, ja mÅ«su plāni izrādÄ«sies neoptimāli, pamatojoties uz savākto monitoringu, pamatojoties uz tabulām, mēs varēsim redzēt Ŕīs anomālijas. Piemēram, kaut kur dati mainÄ«jās kvalitatÄ«vi un indeksa vietā sāka izmantot secÄ«gu izeju caur tabulu, t.i. ja vaicājumam ir jāatgriež tikai 100 rindas (ir ierobežojums 100), tad Å”im vaicājumam tiks veikta pilnÄ«ga meklÄ“Å”ana. Un tas vienmēr ļoti slikti ietekmē veiktspēju.

Un mēs to varam redzēt monitoringā. Un jau apskatiet Å”o vaicājumu, palaidiet paskaidrojumu, apkopojiet statistiku, izveidojiet jaunu papildu indeksu. Un jau reaģē uz Å”o problēmu. Tāpēc tas ir svarÄ«gi.

PostgreSQL uzraudzības pamati. Aleksejs Ļesovskis

Vēl viens uzraudzÄ«bas piemērs. Domāju, ka daudzi viņu atpazina, jo viņŔ ir ļoti populārs. Kas to izmanto savos projektos Prometejs? Kas lieto Å”o produktu kopā ar Prometheus? Fakts ir tāds, ka Ŕī uzraudzÄ«bas standarta repozitorijā ir informācijas panelis darbam ar PostgreSQL - postgres_eksportētājs Prometejs. Bet ir viena slikta detaļa.

PostgreSQL uzraudzības pamati. Aleksejs Ļesovskis

Ir vairāki grafiki. Un baiti ir norādÄ«ti kā vienotÄ«ba, t.i., ir 5 grafiki. Tie ir datu ievietoÅ”ana, datu atjaunināŔana, datu dzÄ“Å”ana, datu iegÅ«Å”ana un datu atgrieÅ”ana. MērvienÄ«ba ir baiti. Bet lieta ir tāda, ka PostgreSQL statistika atgriež datus korejā (rindās). Un attiecÄ«gi Å”ie grafiki ir ļoti labs veids, kā vairākas reizes, desmitiem reižu nenovērtēt savu darba slodzi, jo kortežs nav baits, kortežs ir virkne, tas ir daudz baitu un vienmēr ir mainÄ«ga garuma. Tas ir, darba slodzes aprēķināŔana baitos, izmantojot koreÅ”us, ir nereāls vai ļoti grÅ«ts uzdevums. Tāpēc, izmantojot informācijas paneli vai iebÅ«vēto uzraudzÄ«bu, vienmēr ir svarÄ«gi saprast, ka tas darbojas pareizi un atgriež jums pareizi novērtētus datus.

PostgreSQL uzraudzības pamati. Aleksejs Ļesovskis

Kā iegÅ«t statistiku par Ŕīm tabulām? Å im nolÅ«kam PostgreSQL ir noteikta uzskatu saime. Un galvenais skats ir pg_stat_user_tables. User_tables - tas nozÄ«mē tabulas, kas izveidotas lietotāja vārdā. Turpretim ir sistēmas skati, kurus izmanto pati PostgreSQL. Un ir kopsavilkuma tabula Alltables, kas ietver gan sistēmas, gan lietotāju. Varat sākt ar jebkuru no tiem, kas jums patÄ«k vislabāk.

Izmantojot iepriekÅ” minētos laukus, varat novērtēt ievietoÅ”anas, atjauninājumu un dzÄ“Å”anas skaitu. Manis izmantotā informācijas paneļa piemērā Å”ie lauki tiek izmantoti, lai novērtētu darba slodzes raksturlielumus. Tāpēc mēs varam arÄ« uz tiem balstÄ«ties. Bet ir vērts atcerēties, ka tie ir korteži, nevis baiti, tāpēc mēs nevaram to darÄ«t tikai baitos.

Balstoties uz Å”iem datiem, mēs varam izveidot tā sauktās TopN tabulas. Piemēram, Top-5, Top-10. Un jÅ«s varat izsekot tiem karstajiem galdiem, kas tiek pārstrādāti vairāk nekā citi. Piemēram, 5 ā€œkarstāsā€ tabulas ievietoÅ”anai. Izmantojot Ŕīs TopN tabulas, mēs novērtējam savu darba slodzi un varam novērtēt darba slodzes uzliesmojumus pēc izlaidumiem, atjauninājumiem un izvietoÅ”anas.

SvarÄ«gi ir arÄ« novērtēt tabulas lielumu, jo dažreiz izstrādātāji ievieÅ” jaunu funkciju, un mÅ«su tabulas sāk uzbriest lielos izmēros, jo viņi nolēma pievienot papildu datu apjomu, bet neparedzēja, kā tas notiks. ietekmēt datu bāzes lielumu. Šādi gadÄ«jumi arÄ« mums ir pārsteigumi.

PostgreSQL uzraudzības pamati. Aleksejs Ļesovskis

Un tagad neliels jautājums jums. Kāds jautājums rodas, pamanot datu bāzes servera slodzi? Kāds jums ir nākamais jautājums?

PostgreSQL uzraudzības pamati. Aleksejs Ļesovskis

Bet patiesÄ«bā jautājums rodas Ŕādi. Kādus pieprasÄ«jumus izraisa slodze? Tas ir, nav interesanti skatÄ«ties uz procesiem, ko izraisa slodze. Skaidrs, ka ja saimniekam ir datu bāze, tad datubāze tur darbojas un skaidrs, ka tur tiks iznÄ«cinātas tikai datu bāzes. Ja mēs atveram Top, mēs redzēsim PostgreSQL procesu sarakstu, kas kaut ko dara. No Top nebÅ«s skaidrs, ko viņi dara.

PostgreSQL uzraudzības pamati. Aleksejs Ļesovskis

AttiecÄ«gi ir jāatrod tie vaicājumi, kas rada vislielāko slodzi, jo skaņoÅ”anas vaicājumi, kā likums, dod lielāku peļņu nekā PostgreSQL vai operētājsistēmas konfigurācijas noregulÄ“Å”ana vai pat aparatÅ«ras noregulÄ“Å”ana. Pēc manām aplēsēm, tas ir aptuveni 80-85-90%. Un tas tiek darÄ«ts daudz ātrāk. Ātrāk ir labot pieprasÄ«jumu nekā labot konfigurāciju, ieplānot restartÄ“Å”anu, it Ä«paÅ”i, ja datu bāzi nevar restartēt, vai pievienot aparatÅ«ru. VienkārŔāk ir kaut kur pārrakstÄ«t vaicājumu vai pievienot indeksu, lai iegÅ«tu labāku Ŕī vaicājuma rezultātu.

PostgreSQL uzraudzības pamati. Aleksejs Ļesovskis
AttiecÄ«gi ir jāuzrauga pieprasÄ«jumi un to atbilstÄ«ba. Ņemsim vēl vienu uzraudzÄ«bas piemēru. Un arÄ« Å”eit, Ŕķiet, ir lieliska uzraudzÄ«ba. Ir informācija par replikāciju, ir informācija par caurlaidspēju, bloÄ·Ä“Å”anu, resursu izmantoÅ”anu. Viss ir kārtÄ«bā, bet nav informācijas par pieprasÄ«jumiem. Nav skaidrs, kādi vaicājumi darbojas mÅ«su datubāzē, cik ilgi tie darbojas, cik no Å”iem vaicājumiem ir. Mums vienmēr ir jābÅ«t Å”ai informācijai mÅ«su uzraudzÄ«bā.

PostgreSQL uzraudzības pamati. Aleksejs Ļesovskis

Un, lai iegÅ«tu Å”o informāciju, mēs varam izmantot moduli pg_stat_statements. Pamatojoties uz to, jÅ«s varat izveidot dažādus grafikus. Piemēram, jÅ«s varat iegÅ«t informāciju par visbiežāk veiktajiem vaicājumiem, tas ir, par tiem vaicājumiem, kas tiek izpildÄ«ti visbiežāk. Jā, pēc izvietoÅ”anas ir arÄ« ļoti noderÄ«gi to aplÅ«kot un saprast, vai ir kāds pieprasÄ«jumu pieaugums.

Varat pārraudzÄ«t garākos vaicājumus, tas ir, tos vaicājumus, kuru aizpildÄ«Å”ana prasa visilgāk. Tie darbojas ar procesoru, tie patērē I/O. Mēs to varam arÄ« novērtēt, izmantojot laukus total_time, mean_time, blk_write_time un blk_read_time.

Mēs varam novērtēt un uzraudzÄ«t smagākos pieprasÄ«jumus resursu izmantoÅ”anas ziņā, tos, kas lasa no diska, kas darbojas ar atmiņu vai, gluži pretēji, rada kādu rakstÄ«Å”anas slodzi.

Varam izvērtēt dāsnākos lÅ«gumus. Å ie ir vaicājumi, kas atgriež lielu skaitu rindu. Piemēram, tas varētu bÅ«t kāds pieprasÄ«jums, kurā viņi ir aizmirsuÅ”i iestatÄ«t ierobežojumu. Un tas vienkārÅ”i atgriež visu tabulas saturu vai vaicājumu pāri vaicātajām tabulām.

Varat arī pārraudzīt vaicājumus, kuros tiek izmantoti pagaidu faili vai pagaidu tabulas.

PostgreSQL uzraudzības pamati. Aleksejs Ļesovskis
Un mums joprojām ir fona procesi. Fona procesi galvenokārt ir kontrolpunkti vai arī tos sauc par kontrolpunktiem, tie ir autovakuums un replikācija.

PostgreSQL uzraudzības pamati. Aleksejs Ļesovskis

Vēl viens uzraudzÄ«bas piemērs. Kreisajā pusē ir cilne Apkope, dodieties uz to un ceriet ieraudzÄ«t kaut ko noderÄ«gu. Bet Å”eit ir tikai vakuuma darbÄ«bas un statistikas vākÅ”anas laiks, nekas vairāk. Å Ä« ir ļoti slikta informācija, tāpēc mums vienmēr ir jābÅ«t informācijai par to, kā mÅ«su datubāzē darbojas fona procesi un vai to darbā nav raduŔās problēmas.

PostgreSQL uzraudzības pamati. Aleksejs Ļesovskis

AplÅ«kojot kontrolpunktus, mums jāatceras, ka kontrolpunkti izskalo netÄ«rās lapas no Ŕķelto atmiņas apgabala diskā, pēc tam izveido kontrolpunktu. Un Å”o kontrolpunktu var izmantot kā atkopÅ”anas vietu, ja PostgreSQL pēkŔņi tika pārtraukts ārkārtas situācijā.

AttiecÄ«gi, lai visas ā€œnetÄ«rāsā€ lapas izskalotu diskā, jums ir jāveic noteikts rakstÄ«Å”anas apjoms. Un, kā likums, sistēmās ar lielu atmiņas apjomu tas ir daudz. Un, ja mēs ļoti bieži veicam kontrolpunktus Ä«sā intervālā, diska veiktspēja ļoti ievērojami samazināsies. Un klientu pieprasÄ«jumi cietÄ«s no resursu trÅ«kuma. Viņi sacentÄ«sies par resursiem un trÅ«ks produktivitātes.

AttiecÄ«gi, izmantojot pg_stat_bgwriter, izmantojot norādÄ«tos laukus, mēs varam uzraudzÄ«t notiekoÅ”o kontrolpunktu skaitu. Un, ja mums ir daudz kontrolpunktu noteiktā laika periodā (10-15-20 minÅ«tēs, pusstundā), piemēram, 3-4-5, tad tā jau var bÅ«t problēma. Un jau vajag paskatÄ«ties datu bāzē, paskatÄ«ties konfigurācijā, kas izraisa tādu kontrolpunktu pārpilnÄ«bu. VarbÅ«t notiek kāds liels ieraksts. Noslodzi jau varam izvērtēt, jo esam jau pievienojuÅ”i slodzes grafikus. Mēs jau varam pielāgot kontrolpunkta parametrus un pārliecināties, ka tie bÅ«tiski neietekmē vaicājuma veiktspēju.

PostgreSQL uzraudzības pamati. Aleksejs Ļesovskis

Es atkal atgriežos pie autovakuuma, jo, kā jau teicu, tā ir tāda lieta, kas var viegli saskaitīt gan diska, gan vaicājuma veiktspēju, tāpēc vienmēr ir svarīgi novērtēt autovakuuma daudzumu.

Autovakuuma darbinieku skaits datu bāzē ir ierobežots. Pēc noklusējuma tie ir trīs, tāpēc, ja datu bāzē vienmēr strādā trīs darbinieki, tas nozīmē, ka mūsu autovakuums nav konfigurēts, mums ir jāpalielina ierobežojumi, jāpārskata autovakuuma iestatījumi un jāiekļūst konfigurācijā.
Ir svarÄ«gi izvērtēt, kādi vakuuma darbinieki mums ir. Vai nu tas tika palaists no lietotāja, atnāca DBA un manuāli palaida kaut kādu vakuumu, un tas radÄ«ja slodzi. Mums ir sava veida problēma. Vai arÄ« tas ir vakuumu skaits, kas atskrÅ«vē darÄ«jumu skaitÄ«tāju. Dažām PostgreSQL versijām tie ir ļoti smagi vakuumi. Viņi var viegli saskaitÄ«t veiktspēju, jo viņi lasa visu tabulu, skenē visus blokus Å”ajā tabulā.

Un, protams, vakuuma ilgums. Ja mums ir ilgstoÅ”i putekļsÅ«cēji, kas darbojas ļoti ilgu laiku, tas nozÄ«mē, ka mums atkal ir jāpievērÅ” uzmanÄ«ba vakuuma konfigurācijai un, iespējams, jāpārskata tā iestatÄ«jumi. Jo var rasties situācija, kad vakuums uz galda strādā ilgstoÅ”i (3-4 stundas), bet laikā, kad darbojās vakuums, tabulā atkal izdevās uzkrāties liels daudzums miruÅ”o rindu. Un, tiklÄ«dz vakuums ir pabeigts, viņam atkal ir jāizsÅ«c Å”is galds. Un mēs nonākam pie situācijas ā€“ bezgalÄ«gā vakuumā. Un Å”ajā gadÄ«jumā vakuums netiek galā ar savu darbu, un tabulas pamazām sāk uzbriest, lai gan noderÄ«go datu apjoms tajā paliek nemainÄ«gs. Tāpēc ilgstoÅ”os vakuumos vienmēr skatāmies uz konfigurāciju un cenÅ”amies to optimizēt, bet tajā paŔā laikā, lai neciestu klientu pieprasÄ«jumu izpilde.

PostgreSQL uzraudzības pamati. Aleksejs Ļesovskis

MÅ«sdienās praktiski nav nevienas PostgreSQL instalācijas, kurai nebÅ«tu straumÄ“Å”anas replikācijas. Replikācija ir datu pārvietoÅ”anas process no galvenā uz kopiju.

Replikācija programmā PostgreSQL tiek veikta, izmantojot darÄ«jumu žurnālu. Vednis Ä£enerē darÄ«jumu žurnālu. DarÄ«jumu žurnāls tiek pārsÅ«tÄ«ts pa tÄ«kla savienojumu uz repliku, un pēc tam tas tiek reproducēts replikā. Tas ir vienkārÅ”i.

AttiecÄ«gi pg_stat_replication skats tiek izmantots, lai pārraudzÄ«tu replikācijas kavÄ“Å”anos. Bet ar viņu ne viss ir vienkārÅ”i. 10. versijā skatā ir veiktas vairākas izmaiņas. Pirmkārt, daži lauki ir pārdēvēti. Un daži lauki ir pievienoti. 10. versijā tika parādÄ«ti lauki, kas ļauj novērtēt replikācijas kavÄ“Å”anos sekundēs. Tas ir ļoti ērti. Pirms 10. versijas bija iespējams novērtēt replikācijas nobÄ«di baitos. Å Ä« opcija paliek 10. versijā, t.i., jÅ«s varat izvēlēties, kas jums ir ērtāk - novērtēt nobÄ«di baitos vai novērtēt kavÄ“Å”anos sekundēs. Daudzi cilvēki dara abus.

Tomēr, lai novērtētu replikācijas kavÄ“Å”anos, jums jāzina žurnāla atraÅ”anās vieta darÄ«jumā. Un Ŕīs darÄ«jumu žurnāla pozÄ«cijas ir tieÅ”i pg_stat_replication skatā. RelatÄ«vi runājot, mēs varam ņemt divus punktus darÄ«jumu žurnālā, izmantojot funkciju pg_xlog_location_diff(). Aprēķiniet delta starp tām un iegÅ«stiet replikācijas nobÄ«di baitos. Tas ir ļoti ērti un vienkārÅ”i.

10. versijā Ŕī funkcija tika pārdēvēta par pg_wal_lsn_diff(). Kopumā visās funkcijās, skatos un utilÄ«tprogrammās, kur parādÄ«jās vārds ā€œxlogā€, tas tika aizstāts ar vērtÄ«bu ā€œwalā€. Tas attiecas gan uz skatiem, gan funkcijām. Tas ir tāds jauninājums.

Turklāt 10. versijā tika pievienotas rindas, kas Ä«paÅ”i parāda kavÄ“Å”anos. Tie ir rakstÄ«Å”anas aizkave, skaloÅ”anas aizkave, atkārtoÅ”anas aizkave. Tas ir, ir svarÄ«gi uzraudzÄ«t Ŕīs lietas. Ja mēs redzam, ka mums ir replikācijas aizkave, mums ir jāizpēta, kāpēc tā parādÄ«jās, no kurienes tā radās, un jānovērÅ” problēma.

PostgreSQL uzraudzības pamati. Aleksejs Ļesovskis

Ar sistēmas metriku gandrÄ«z viss ir kārtÄ«bā. Kad sākas jebkura uzraudzÄ«ba, tā sākas ar sistēmas metriku. Tas ir procesoru, atmiņas, mijmaiņas, tÄ«kla un diska iznÄ«cināŔana. Tomēr daudzi parametri pēc noklusējuma nav pieejami.

Ja ar pārstrādes procesu viss ir kārtÄ«bā, tad ir problēmas ar disku pārstrādi. Parasti uzraudzÄ«bas izstrādātāji pievieno informāciju par caurlaidspēju. Tas var bÅ«t iops vai baitos. Bet viņi aizmirst par latentumu un diska ierīču izmantoÅ”anu. Å ie ir svarÄ«gāki parametri, kas ļauj novērtēt, cik noslogoti ir mÅ«su diski un cik tie ir lēni. Ja mums ir augsts latentums, tas nozÄ«mē, ka ir dažas problēmas ar diskiem. Ja mums ir augsta noslodze, tas nozÄ«mē, ka diski netiek galā. Tās ir labākas Ä«paŔības nekā caurlaidspēja.

Turklāt Å”o statistiku var iegÅ«t arÄ« no /proc failu sistēmas, kā tas tiek darÄ«ts pārstrādes procesoriem. Es nezinu, kāpēc Ŕī informācija netiek pievienota uzraudzÄ«bai. Tomēr ir svarÄ«gi, lai tas bÅ«tu jÅ«su uzraudzÄ«bā.

Tas pats attiecas uz tÄ«kla saskarnēm. Informācija par tÄ«kla caurlaidspēju ir paketēs, baitos, bet tomēr nav informācijas par latentumu un nav informācijas par izmantoÅ”anu, lai gan arÄ« Ŕī ir noderÄ«ga informācija.

PostgreSQL uzraudzības pamati. Aleksejs Ļesovskis

Jebkurai uzraudzībai ir trūkumi. Un neatkarīgi no tā, kāda veida uzraudzību jūs veicat, tas vienmēr neatbildīs dažiem kritērijiem. Tomēr tie attīstās, tiek pievienotas jaunas funkcijas un jaunas lietas, tāpēc izvēlieties kaut ko un pabeidziet to.

Un, lai pabeigtu, jums vienmēr ir jābÅ«t priekÅ”statam par to, ko nozÄ«mē sniegtā statistika un kā jÅ«s varat to izmantot problēmu risināŔanai.

Un daži galvenie punkti:

  • Jums vienmēr jāuzrauga pieejamÄ«ba un jābÅ«t informācijas paneļiem, lai varētu ātri novērtēt, vai ar datu bāzi viss ir kārtÄ«bā.
  • Jums vienmēr ir jābÅ«t priekÅ”statam par to, kādi klienti strādā ar jÅ«su datu bāzi, lai atsijātu sliktos klientus un tos notriektu.
  • Ir svarÄ«gi novērtēt, kā Å”ie klienti strādā ar datiem. Jums ir jābÅ«t priekÅ”statam par savu darba slodzi.
  • SvarÄ«gi izvērtēt, kā Ŕī slodze veidojas, ar kādu vaicājumu palÄ«dzÄ«bu. JÅ«s varat novērtēt vaicājumus, varat tos optimizēt, pārveidot, veidot tiem indeksus. Tas ir ļoti svarÄ«gi.
  • Fona procesi var negatÄ«vi ietekmēt klientu pieprasÄ«jumus, tāpēc ir svarÄ«gi uzraudzÄ«t, lai viņi neizmantotu pārāk daudz resursu.
  • Sistēmas metrika ļauj plānot serveru mērogoÅ”anas un jaudas palielināŔanas plānus, tāpēc ir svarÄ«gi arÄ« tos izsekot un novērtēt.

PostgreSQL uzraudzības pamati. Aleksejs Ļesovskis

Ja jÅ«s interesē Ŕī tēma, varat sekot Ŕīm saitēm.
http://bit.do/stats_collector - Ŕī ir oficiālā statistikas apkopotāja dokumentācija. Ir visu statistikas skatÄ«jumu apraksts un visu lauku apraksts. JÅ«s varat tos lasÄ«t, saprast un analizēt. Un, pamatojoties uz tiem, izveidojiet savus grafikus un pievienojiet tos savam monitoringam.

Pieprasījuma piemēri:
http://bit.do/dataegret_sql
http://bit.do/lesovsky_sql

Šī ir mūsu un mana korporatīvā repozitorija. Tie satur vaicājumu piemērus. Tur nav vaicājumu no atlasītās* sērijas. Jau ir gatavi vaicājumi ar savienojumiem, izmantojot interesantas funkcijas, kas ļauj neapstrādātus skaitļus pārvērst par lasāmām, ērtām vērtībām, t.i., tie ir baiti, laiks. Varat tos paņemt, apskatīt, analizēt, pievienot savam monitoringam, izveidot uzraudzību, pamatojoties uz tiem.

jautājumi

Jautājums: Jūs teicāt, ka nereklamēsiet zīmolus, bet man joprojām ir interese - kādus informācijas paneļus izmantojat savos projektos?
Atbilde: Tas atŔķiras. Gadās, ka nonākam pie klienta un viņam jau ir savs monitorings. Un mēs konsultējam klientu par to, kas jāpievieno viņa uzraudzÄ«bai. Sliktākā situācija ir ar Zabbix. Jo tai nav iespēju izveidot TopN grafikus. Mēs paÅ”i lietojam Okmeter, jo mēs konsultējāmies ar Å”iem puiÅ”iem par uzraudzÄ«bu. Viņi uzraudzÄ«ja PostgreSQL, pamatojoties uz mÅ«su tehniskajām specifikācijām. Es rakstu pats savu mājdzÄ«vnieku projektu, kas apkopo datus, izmantojot Prometheus, un atveido tos grafana. Mans uzdevums ir izveidot savu eksportētāju programmā Prometheus un pēc tam visu atveidot Grafānā.

Jautājums: Vai ir kādi analogi AWR ziņojumiem vai... apkopojumam? Vai jūs zināt par kaut ko līdzīgu?
Atbilde: Jā, es zinu, kas ir AWR, tā ir forÅ”a lieta. Å obrÄ«d ir pieejami dažādi velosipēdi, kas realizē aptuveni Ŕādu modeli. Ar noteiktu laika intervālu dažas bāzes lÄ«nijas tiek ierakstÄ«tas tajā paŔā PostgreSQL vai atseviŔķā krātuvē. JÅ«s varat tos google meklēt internetā, viņi tur ir. Viens no Ŕādas lietas izstrādātājiem sēž sql.ru forumā PostgreSQL pavedienā. Tur jÅ«s varat viņu noÄ·ert. Jā, tādas lietas ir, tās var izmantot. Plus tajā pgCenter Es arÄ« rakstu lietu, kas ļauj jums darÄ«t to paÅ”u.

PS1 Ja izmantojat postgres_exporter, kādu informācijas paneli izmantojat? Tādas ir vairākas. Tie jau ir novecojuŔi. Varbūt kopiena izveidos atjauninātu veidni?

PS2 ir noņemts pganalyze, jo tas ir patentēts SaaS piedāvājums, kas koncentrējas uz veiktspējas uzraudzÄ«bu un automatizētiem regulÄ“Å”anas ieteikumiem.

Aptaujā var piedalīties tikai reģistrēti lietotāji. Ielogoties, lūdzu.

Kuru paŔmitinātu postgresql uzraudzību (ar informācijas paneli) uzskatāt par labāko?

  • 30,0%Zabbix + papildinājumi no Alekseja Lesovska vai zabbix 4.4 vai 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 ir patentēta SaaS ā€” es to nevaru izdzēst1

  • 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

Nobalsoja 10 lietotāji. 26 lietotāji atturējās.

Avots: www.habr.com

Pievieno komentāru