PostgreSQL مانيٽرنگ جا بنيادي. Alexey Lesovsky

مان توهان کي صلاح ڏيان ٿو ته توهان رپورٽ جو ٽرانسڪرپٽ پڙهو Alexey Lesovsky by Data Egret “Fundamentals of PostgreSQL مانيٽرنگ”

هن رپورٽ ۾، Alexey Lesovsky پوسٽ-gress انگن اکرن جي اهم نقطن جي باري ۾ ڳالهائيندو، انهن جو مطلب ڇا آهي، ۽ انهن کي نگراني ۾ ڇو موجود هجڻ گهرجي؛ مانيٽرنگ ۾ ڪهڙا گراف هجڻ گهرجن، انهن کي ڪيئن شامل ڪجي ۽ انهن جي تشريح ڪيئن ڪجي. رپورٽ ڊيٽابيس ايڊمنسٽريٽرن، سسٽم ايڊمنسٽريٽرن ۽ ڊولپرز لاءِ ڪارآمد ثابت ٿيندي جيڪي پوسٽ گريس ٽربل شوٽنگ ۾ دلچسپي رکن ٿا.

PostgreSQL مانيٽرنگ جا بنيادي. Alexey Lesovsky

منهنجو نالو Alexey Lesovsky آهي، مان ڊيٽا Egret ڪمپني جي نمائندگي ڪريان ٿو.

منهنجي باري ۾ چند لفظ. مون هڪ ڊگهو وقت اڳ هڪ سسٽم ايڊمنسٽريٽر طور شروع ڪيو.

مون هر قسم جي مختلف لينڪس سسٽم کي منظم ڪيو، لينڪس سان لاڳاپيل مختلف شين تي ڪم ڪيو، يعني ورچوئلائيزيشن، مانيٽرنگ، پراڪسز سان ڪم ڪيو، وغيره، پر ڪجهه وقت تي مون وڌيڪ ڪم ڪرڻ شروع ڪيو ڊيٽابيس، PostgreSQL. مون کيس واقعي پسند ڪيو. ۽ ڪجهه نقطي تي مون ڪم ڪرڻ شروع ڪيو PostgreSQL تي ڪم ڪرڻ جو گهڻو وقت. ۽ پوءِ آهستي آهستي مان هڪ PostgreSQL DBA بڻجي ويو.

۽ منهنجي سڄي ڪيريئر ۾، مون کي هميشه انگ اکر، نگراني، ۽ ٽيليميٽري جي عنوانن ۾ دلچسپي رهي آهي. ۽ جڏهن مان هڪ سسٽم ايڊمنسٽريٽر هو، مون زيبڪس سان تمام ويجهي ڪم ڪيو. ۽ مون اسڪرپٽ جو هڪ ننڍڙو سيٽ لکيو zabbix-وڌائڻ. هو پنهنجي دور ۾ ڪافي مشهور هو. ۽ اتي اهو ممڪن هو ته مختلف اهم شين جي نگراني ڪرڻ، نه رڳو لينڪس، پر مختلف اجزاء پڻ.

هاڻي مان PostgreSQL تي ڪم ڪري رهيو آهيان. مان اڳ ۾ ئي هڪ ٻي شيءِ لکي رهيو آهيان جيڪا توهان کي PostgreSQL انگن اکرن سان ڪم ڪرڻ جي اجازت ڏئي ٿي. ان کي سڏيو ويندو آهي pg سينٽر (هبري تي آرٽيڪل - پوسٽ-گريس انگ اکر بغير اعصاب ۽ تڪرار).

PostgreSQL مانيٽرنگ جا بنيادي. Alexey Lesovsky

هڪ ننڍڙو تعارفي نوٽ. اسان جا گراهڪ، اسان جا گراهڪ ڪهڙيون حالتون آهن؟ ڊيٽابيس سان لاڳاپيل ڪجهه قسم جو حادثو آهي. ۽ جڏهن ڊيٽابيس اڳ ۾ ئي بحال ٿي چڪو آهي، ڊپارٽمينٽ جو سربراهه يا ترقي جو سربراهه اچي ٿو ۽ چوي ٿو: "دوستو، اسان کي ڊيٽابيس جي نگراني ڪرڻ جي ضرورت آهي، ڇاڪاڻ ته ڪجهه خراب ٿي چڪو آهي ۽ اسان کي مستقبل ۾ ٿيڻ کان روڪڻ جي ضرورت آهي." ۽ هتي مانيٽرنگ سسٽم چونڊڻ يا موجوده مانيٽرنگ سسٽم کي ترتيب ڏيڻ جو دلچسپ عمل شروع ٿئي ٿو ته جيئن توهان پنهنجي ڊيٽابيس مانيٽر ڪري سگهو - PostgreSQL، MySQL يا ڪجهه ٻيا. ۽ ساٿين کي صلاح ڪرڻ شروع ڪيو: "مون ٻڌو آهي ته اتي هڪ اهڙي ۽ اهڙي ڊيٽابيس آهي. اچو ته استعمال ڪريون“. ساٿي هڪ ٻئي سان بحث ڪرڻ شروع ڪن ٿا. ۽ آخر ۾ اهو ظاهر ٿئي ٿو ته اسان ڪجهه قسم جو ڊيٽابيس چونڊيو آهي، پر PostgreSQL مانيٽرنگ ان ۾ پيش ڪيو ويو آهي بلڪه خراب ۽ اسان کي هميشه ڪجهه شامل ڪرڻو پوندو. GitHub مان ڪجھ ذخيرو وٺو، انھن کي ڪلون ڪريو، اسڪرپٽ کي ترتيب ڏيو، ۽ ڪنھن طرح انھن کي ترتيب ڏيو. ۽ آخر ۾ اهو ختم ٿي وڃي ٿو ڪجهه قسم جو دستي ڪم.

PostgreSQL مانيٽرنگ جا بنيادي. Alexey Lesovsky

تنهن ڪري، هن گفتگو ۾ آئون توهان کي ڪجهه ڄاڻ ڏيڻ جي ڪوشش ڪندس ته مانيٽرنگ کي ڪيئن چونڊيو نه صرف PostgreSQL لاء، پر ڊيٽابيس لاء پڻ. ۽ توهان کي اها ڄاڻ ڏيو جيڪا توهان کي پنهنجي مانيٽرنگ مڪمل ڪرڻ جي اجازت ڏئي ٿي ان مان ڪجهه فائدو حاصل ڪرڻ لاءِ، ته جيئن توهان پنهنجي ڊيٽابيس کي فائدي سان مانيٽر ڪري سگهو، ته جيئن ايندڙ ايندڙ هنگامي حالتن کي فوري طور تي روڪي سگهجي.

۽ اهي خيال جيڪي هن رپورٽ ۾ هوندا، سڌو سنئون ڪنهن به ڊيٽابيس ۾ ترتيب ڏئي سگهجن ٿا، اهو هڪ DBMS يا noSQL هجي. تنهن ڪري، اتي نه رڳو PostgreSQL آهي، پر اتي به ڪيتريون ئي ترڪيبون هونديون ته اهو ڪيئن ڪجي PostgreSQL ۾. هتي سوالن جا مثال هوندا، ادارن جا مثال جيڪي PostgreSQL جي نگراني لاءِ آهن. ۽ جيڪڏهن توهان جي ڊي بي ايم ايس ۾ ساڳيون شيون آهن جيڪي توهان کي انهن جي نگراني ۾ رکڻ جي اجازت ڏين ٿيون، توهان پڻ انهن کي ترتيب ڏئي سگهو ٿا، انهن کي شامل ڪريو ۽ اهو سٺو ٿيندو.

PostgreSQL مانيٽرنگ جا بنيادي. Alexey Lesovskyمان رپورٽ ۾ نه ويندس
ميٽرڪ ڪيئن پهچائڻ ۽ ذخيرو ڪرڻ بابت ڳالهايو. مان ڊيٽا جي پوسٽ پروسيسنگ ۽ ان کي استعمال ڪندڙ کي پيش ڪرڻ بابت ڪجهه نه چوندس. ۽ مان خبردار ڪرڻ بابت ڪجھ به نه چوندس.
پر جيئن ڪهاڻي اڳتي وڌندي، مان موجوده نگراني جا مختلف اسڪرين شاٽ ڏيکاريندس ۽ ڪنهن نه ڪنهن طرح انهن تي تنقيد ڪندس. پر ان جي باوجود، مان ڪوشش ڪندس ته برانڊ جو نالو نه ڏيان ته جيئن انهن شين جي اشتهارن يا مخالف اشتهارن کي پيدا نه ڪيو وڃي. تنهن ڪري، سڀئي اتفاق بي ترتيب آهن ۽ توهان جي تخيل تي ڇڏيل آهن.
PostgreSQL مانيٽرنگ جا بنيادي. Alexey Lesovsky
پهرين، اچو ته ڄاڻون ته مانيٽرنگ ڇا آهي. نگراني هڪ تمام ضروري شيء آهي. هرڪو اهو سمجهي ٿو. پر ساڳئي وقت، مانيٽرنگ جو تعلق ڪاروباري پراڊڪٽ سان نه آهي ۽ نه ئي سڌو سنئون ڪمپني جي نفعي تي اثر انداز ٿئي ٿو، تنهن ڪري وقت هميشه بقايا بنيادن تي نگراني لاءِ مختص ڪيو ويندو آهي. جيڪڏهن اسان وٽ وقت آهي ته پوءِ مانيٽرنگ ڪريون ٿا؛ جيڪڏهن اسان وٽ وقت نه آهي ته پوءِ ٺيڪ آهي، اسان ان کي پٺاڻ ۾ وجهي ڇڏينداسين ۽ ڪنهن ڏينهن انهن ڪمن ڏانهن موٽنداسين.

تنهن ڪري، اسان جي مشق کان، جڏهن اسان ڪلائنٽ وٽ ايندا آهيون، مانيٽرنگ اڪثر نامڪمل آهي ۽ ڪا به دلچسپ شيء ناهي جيڪا اسان کي ڊيٽابيس سان بهتر ڪم ڪرڻ ۾ مدد ڪري ٿي. ۽ تنهن ڪري نگراني هميشه مڪمل ٿيڻ جي ضرورت آهي.

ڊيٽابيس اهڙيون پيچيده شيون آهن جن کي مانيٽر ڪرڻ جي پڻ ضرورت آهي، ڇاڪاڻ ته ڊيٽابيس معلومات جو هڪ ذخيرو آهي. ۽ معلومات ڪمپني لاء تمام ضروري آهي؛ اهو ڪنهن به طريقي سان وڃائي نٿو سگهي. پر ساڳئي وقت، ڊيٽابيس سافٽ ويئر جا تمام پيچيده ٽڪرا آهن. اهي اجزاء جي وڏي تعداد تي مشتمل آهن. ۽ انهن مان ڪيترن ئي حصن جي نگراني ڪرڻ جي ضرورت آهي.

PostgreSQL مانيٽرنگ جا بنيادي. Alexey Lesovskyجيڪڏهن اسان خاص طور تي PostgreSQL بابت ڳالهائي رهيا آهيون، پوء اهو هڪ اسڪيم جي صورت ۾ نمائندگي ڪري سگهجي ٿو جنهن ۾ وڏي تعداد ۾ اجزاء شامل آهن. اهي اجزاء هڪ ٻئي سان رابطو ڪن ٿا. ۽ ساڳئي وقت، PostgreSQL وٽ نام نهاد اسٽيٽس ڪليڪٽر سب سسٽم آهي، جيڪو توهان کي انهن سب سسٽم جي آپريشن بابت انگ اکر گڏ ڪرڻ جي اجازت ڏئي ٿو ۽ منتظم يا صارف کي ڪجهه قسم جو انٽرفيس مهيا ڪري ٿو ته جيئن هو اهي انگ اکر ڏسي سگهي.

اهي انگ اکر ڪمن ۽ نظرين جي هڪ خاص سيٽ جي صورت ۾ پيش ڪيا ويا آهن. انهن کي ٽيبل پڻ چئي سگهجي ٿو. اهو آهي، هڪ باقاعده psql ڪلائنٽ استعمال ڪندي، توهان ڊيٽابيس سان ڳنڍي سگهو ٿا، انهن ڪمن ۽ نظرين تي هڪ چونڊ ڪري سگهو ٿا، ۽ PostgreSQL سب سسٽم جي آپريشن بابت ڪجهه مخصوص نمبر حاصل ڪري سگهو ٿا.

توھان انھن نمبرن کي پنھنجي پسنديده مانيٽرنگ سسٽم ۾ شامل ڪري سگھو ٿا، گراف ٺاھيو، فنڪشن شامل ڪريو ۽ ڊگھي مدت ۾ اينالائيٽڪس حاصل ڪريو.

پر هن رپورٽ ۾ آئون انهن سڀني ڪمن کي مڪمل طور تي ڍڪ نه ڪندس، ڇاڪاڻ ته اهو سڄو ڏينهن وٺي سگهي ٿو. مان لفظي طور تي ٻه، ٽي يا چار شين کي خطاب ڪندس ۽ توهان کي ٻڌايان ٿو ته اهي ڪيئن نگراني کي بهتر بڻائڻ ۾ مدد ڪن ٿيون.
PostgreSQL مانيٽرنگ جا بنيادي. Alexey Lesovsky
۽ جيڪڏهن اسان ڊيٽابيس مانيٽرنگ بابت ڳالهايون ٿا، ته پوءِ مانيٽرنگ جي ڪهڙي ضرورت آهي؟ سڀ کان پهريان، اسان کي دستيابي جي نگراني ڪرڻ جي ضرورت آهي، ڇاڪاڻ ته ڊيٽابيس هڪ خدمت آهي جيڪا صارفين تائين ڊيٽا تائين رسائي فراهم ڪري ٿي ۽ اسان کي دستيابي جي نگراني ڪرڻ جي ضرورت آهي، ۽ ان جي ڪجهه معيار ۽ مقدار جي خاصيتن کي پڻ مهيا ڪرڻ جي ضرورت آهي.

PostgreSQL مانيٽرنگ جا بنيادي. Alexey Lesovsky

اسان کي انهن گراهڪن جي نگراني ڪرڻ جي ضرورت آهي جيڪي اسان جي ڊيٽابيس سان ڳنڍيندا آهن، ڇاڪاڻ ته اهي ٻئي عام ڪلائنٽ ۽ نقصانڪار ڪلائنٽ ٿي سگهن ٿا جيڪي ڊيٽابيس کي نقصان پهچائي سگهن ٿا. انهن کي پڻ نگراني ڪرڻ جي ضرورت آهي ۽ انهن جي سرگرمين کي ٽريڪ ڪيو وڃي.

PostgreSQL مانيٽرنگ جا بنيادي. Alexey Lesovsky

جڏهن ڪلائنٽ ڊيٽابيس سان ڳنڍيندا آهن، اهو واضح آهي ته اهي اسان جي ڊيٽا سان ڪم ڪرڻ شروع ڪن ٿا، تنهنڪري اسان کي مانيٽر ڪرڻ جي ضرورت آهي ته ڪئين ڪلائنٽ ڊيٽا سان ڪم ڪن ٿا: ڪهڙن جدولن سان، ۽ گهٽ حد تائين، ڪهڙي انڊيڪس سان. اهو آهي، اسان کي ڪم جي لوڊ جو جائزو وٺڻ جي ضرورت آهي جيڪا اسان جي گراهڪن طرفان ٺاهي وئي آهي.

PostgreSQL مانيٽرنگ جا بنيادي. Alexey Lesovsky

پر ڪم لوڊ پڻ شامل آهي، يقينا، درخواستن جو. ايپليڪيشنون ڊيٽابيس سان ڳنڍجن ٿيون، سوالن کي استعمال ڪندي ڊيٽا تائين رسائي حاصل ڪن ٿيون، تنهنڪري اهو ضروري آهي ته اسان وٽ ڊيٽابيس ۾ ڪهڙا سوال آهن، انهن جي مناسبيت جي نگراني ڪرڻ، انهن کي ڪڙي نه لکيو ويو آهي، ته ڪجهه اختيارن کي ٻيهر لکڻ ۽ ٺاهڻ جي ضرورت آهي ته جيئن اهي تيز ڪم ڪن. ۽ بهتر ڪارڪردگي سان.

PostgreSQL مانيٽرنگ جا بنيادي. Alexey Lesovsky

۽ جيئن ته اسان هڪ ڊيٽابيس جي باري ۾ ڳالهائي رهيا آهيون، ڊيٽابيس هميشه پس منظر واري عمل آهي. پس منظر وارا عمل ڊيٽابيس جي ڪارڪردگي کي سٺي سطح تي برقرار رکڻ ۾ مدد ڪن ٿا، تنهنڪري انهن کي هلائڻ لاءِ پاڻ لاءِ وسيلن جي هڪ خاص مقدار جي ضرورت آهي. ۽ ساڳئي وقت، اهي ڪلائنٽ جي درخواست جي وسيلن سان اوورليپ ڪري سگهن ٿا، تنهنڪري لالچ پس منظر وارا عمل سڌو سنئون ڪلائنٽ جي درخواستن جي ڪارڪردگي کي متاثر ڪري سگهن ٿا. تنهن ڪري، انهن کي پڻ نگراني ۽ نگراني ڪرڻ جي ضرورت آهي ته جيئن پس منظر جي عملن جي لحاظ کان ڪو به بگاڙي نه هجي.

PostgreSQL مانيٽرنگ جا بنيادي. Alexey Lesovsky

۽ اهو سڀ ڪجهه ڊيٽابيس جي نگراني جي لحاظ کان سسٽم ميٽرڪ ۾ رهي ٿو. پر غور ڪندي ته اسان جي بنيادي ڍانچي جو گهڻو حصو بادلن ڏانهن منتقل ٿي رهيو آهي، هڪ انفرادي ميزبان جي سسٽم ميٽرڪ هميشه پس منظر ۾ ڦهليل آهي. پر ڊيٽابيس ۾ اهي اڃا به لاڳاپيل آهن ۽، يقينا، اهو پڻ ضروري آهي ته سسٽم ميٽرڪ مانيٽر ڪرڻ لاء.

PostgreSQL مانيٽرنگ جا بنيادي. Alexey Lesovsky

سسٽم ميٽرڪس سان هر شي گهٽ يا گهٽ ٺيڪ آهي، سڀ جديد مانيٽرنگ سسٽم اڳ ۾ ئي انهن ميٽرڪ جي حمايت ڪن ٿا، پر عام طور تي، ڪجهه اجزاء اڃا تائين ڪافي نه آهن ۽ ڪجهه شيون شامل ڪرڻ جي ضرورت آهي. مان انهن تي به هٿ ڪندس، انهن بابت ڪيتريون سلائڊون هونديون.

PostgreSQL مانيٽرنگ جا بنيادي. Alexey Lesovsky
منصوبي جو پهريون نقطو رسائي آهي. رسائي ڇا آهي؟ منهنجي سمجهه ۾ دستيابي سروس ڪنيڪشن جي بنياد جي صلاحيت آهي، يعني بنياد وڌو ويو آهي، اهو، هڪ خدمت جي طور تي، گراهڪن کان ڪنيڪشن قبول ڪري ٿو. ۽ هن رسائي جو اندازو ڪري سگهجي ٿو ڪجهه خاصيتن جي ذريعي. انهن خاصيتن کي ڊيش بورڊ تي ظاهر ڪرڻ تمام آسان آهي.

PostgreSQL مانيٽرنگ جا بنيادي. Alexey Lesovsky
هرڪو ڄاڻي ٿو ته ڊيش بورڊ ڇا آهن. اهو آهي جڏهن توهان اسڪرين تي هڪ نظر ورتو جنهن تي ضروري معلومات اختصار ڪئي وئي آهي. ۽ توهان فوري طور تي اندازو لڳائي سگهو ٿا ته ڇا ڊيٽابيس ۾ ڪو مسئلو آهي يا نه.
ان مطابق، ڊيٽابيس جي دستيابي ۽ ٻين اهم خصوصيتن کي هميشه ڊيش بورڊ تي ظاهر ڪيو وڃي ته جيئن اها معلومات هٿ ۾ هجي ۽ هميشه توهان لاءِ دستياب هجي. ڪجهه اضافي تفصيل جيڪي اڳ ۾ ئي واقعن جي تحقيقات ۾ مدد ڪن ٿا، جڏهن ڪجهه هنگامي حالتن جي تحقيق ڪري رهيا آهن، انهن کي اڳ ۾ ئي ثانوي ڊيش بورڊ تي رکڻ جي ضرورت آهي، يا ڊرل ڊائون لنڪس ۾ لڪايو وڃي ٿو جيڪي ٽئين پارٽي جي نگراني سسٽم ڏانهن ويندا آهن.

PostgreSQL مانيٽرنگ جا بنيادي. Alexey Lesovsky

هڪ مشهور مانيٽرنگ سسٽم جو هڪ مثال. هي هڪ تمام ٿڌو مانيٽرنگ سسٽم آهي. هوء تمام گهڻو ڊيٽا گڏ ڪري ٿي، پر منهنجي نقطي نظر کان، هن وٽ ڊيش بورڊ جو هڪ عجيب تصور آهي. اتي هڪ لنڪ آهي "ڊيش بورڊ ٺاهيو". پر جڏهن توهان هڪ ڊيش بورڊ ٺاهيندا آهيو، توهان ٻه ڪالمن جي هڪ فهرست ٺاهيندا آهيو، گراف جي هڪ فهرست. ۽ جڏهن توهان کي ڪجهه ڏسڻ جي ضرورت آهي، توهان مائوس سان ڪلڪ ڪرڻ شروع ڪيو، اسڪرولنگ، گهربل چارٽ ڳولڻ. ۽ اهو وقت وٺندو آهي، يعني ڪو به ڊيش بورڊ ناهي جيئن ته. هتي صرف چارٽ جون فهرستون آهن.

PostgreSQL مانيٽرنگ جا بنيادي. Alexey Lesovsky

توهان کي انهن ڊيش بورڊن ۾ ڇا شامل ڪرڻ گهرجي؟ توھان شروع ڪري سگھوٿا ھڪڙي خاصيت سان جيئن جوابي وقت. PostgreSQL کي pg_stat_statements ڏيک آھي. اهو ڊفالٽ طور تي بند ٿيل آهي، پر اهو هڪ اهم سسٽم جي نظرن مان آهي جيڪو هميشه فعال ۽ استعمال ڪيو وڃي. اهو سڀني هلندڙ سوالن بابت معلومات ذخيرو ڪري ٿو جيڪي ڊيٽابيس ۾ جاري ڪيا ويا آهن.

ان جي مطابق، اسان حقيقت کان شروع ڪري سگھون ٿا ته اسان سڀني درخواستن جي مڪمل عمل واري وقت کي وٺي سگھون ٿا ۽ مٿين شعبن کي استعمال ڪندي درخواستن جي تعداد سان ورهائي سگھون ٿا. پر هي اسپتال ۾ سراسري گرمي پد آهي. اسان ٻين شعبن کان شروع ڪري سگھون ٿا - گھٽ ۾ گھٽ سوال جي عمل جو وقت، وڌ ۾ وڌ ۽ وچين. ۽ اسان سيڪڙو به ٺاهي سگهون ٿا؛ PostgreSQL هن لاءِ لاڳاپيل ڪم ڪيا آهن. ۽ اسان ڪجھ نمبر حاصل ڪري سگھون ٿا جيڪي اڳ ۾ ئي مڪمل ٿيل درخواستن لاءِ اسان جي ڊيٽابيس جي جوابي وقت کي بيان ڪن ٿا، يعني اسان جعلي درخواست تي عمل نه ٿا ڪريون 'منتخب 1' ۽ جوابي وقت کي ڏسو، پر اسان اڳ ۾ ئي مڪمل ٿيل درخواستن جي جوابي وقت جو تجزيو ڪريون ٿا. يا ته هڪ الڳ شڪل، يا اسان ان جي بنياد تي هڪ گراف ٺاهيو.

اهو پڻ ضروري آهي ته انهن غلطين جي تعداد جي نگراني ڪرڻ لاء جيڪي هن وقت سسٽم طرفان پيدا ڪيا ويا آهن. ۽ ان لاءِ توھان استعمال ڪري سگھو ٿا pg_stat_database view. اسان xact_rollback فيلڊ تي ڌيان ڏيون ٿا. هي فيلڊ نه رڳو ڏيکاري ٿو رول بيڪ جو تعداد جيڪو ڊيٽابيس ۾ ٿئي ٿو، پر اهو پڻ حساب ۾ رکي ٿو غلطين جو تعداد. نسبتا ڳالهائڻ، اسان هن انگن اکرن کي پنهنجي ڊيش بورڊ ۾ ڏيکاري سگهون ٿا ۽ ڏسو ته اسان وٽ هن وقت ڪيتريون غلطيون آهن. جيڪڏهن تمام گهڻيون غلطيون آهن، ته اهو هڪ سٺو سبب آهي لاگز ۾ ڏسڻ ۽ ڏسو ته اهي ڪهڙي قسم جون غلطيون آهن ۽ اهي ڇو ٿين ٿيون، ۽ پوء سيڙپڪاري ڪريو ۽ انهن کي حل ڪريو.

PostgreSQL مانيٽرنگ جا بنيادي. Alexey Lesovsky

توهان هڪ Tachometer طور اهڙي شيء شامل ڪري سگهو ٿا. اهي آهن ٽرانزيڪشن جو تعداد في سيڪنڊ ۽ درخواستن جو تعداد في سيڪنڊ. نسبتا ڳالهائڻ، توهان انهن نمبرن کي پنهنجي ڊيٽابيس جي موجوده ڪارڪردگي طور استعمال ڪري سگهو ٿا ۽ مشاهدو ڪري سگهو ٿا ته ڇا درخواستن ۾ چوٽيون آهن، ٽرانزيڪشن ۾ چوٽيون آهن، يا، ان جي برعڪس، ڇا ڊيٽابيس انڊر لوڊ ٿيل آهي ڇاڪاڻ ته ڪجهه پس منظر بند ٿي ويو آهي. اهو ضروري آهي ته هميشه هن انگن اکرن تي نظر رکون ۽ ياد رکون ته اسان جي پروجيڪٽ لاء هن قسم جي ڪارڪردگي عام آهي، پر مٿي ۽ هيٺ ڏنل قدر اڳ ۾ ئي ڪجهه قسم جا مسئلا ۽ سمجھ کان ٻاهر آهن، جنهن جو مطلب آهي ته اسان کي ڏسڻ جي ضرورت آهي ته اهي انگ ڇو آهن. تمام بلند.

ٽرانزيڪشن جي تعداد جو اندازو لڳائڻ لاء، اسان ٻيهر حوالو ڪري سگھون ٿا pg_stat_database view. اسان ڪمن جو تعداد ۽ رول بيڪ جو تعداد شامل ڪري سگھون ٿا ۽ في سيڪنڊ ٽرانزيڪشن جو تعداد حاصل ڪري سگھون ٿا.

ڇا هرڪو سمجهي ٿو ته ڪيتريون ئي درخواستون هڪ ٽرانزيڪشن ۾ فٽ ٿي سگهن ٿيون؟ تنهن ڪري TPS ۽ QPS ٿورڙي مختلف آهن.

في سيڪنڊ درخواستن جو تعداد pg_stat_statements مان حاصل ڪري سگھجي ٿو ۽ صرف سڀني مڪمل ٿيل درخواستن جو مجموعو ڳڻيو. اهو واضح آهي ته اسان موجوده قدر کي پوئين قيمت سان ڀيٽيو، ان کي گھٽايو، ڊيلٽا حاصل ڪريو، ۽ مقدار حاصل ڪريو.

PostgreSQL مانيٽرنگ جا بنيادي. Alexey Lesovsky

جيڪڏھن توھان چاھيو ته اضافي ميٽرڪ شامل ڪري سگھو ٿا، جيڪي پڻ اسان جي ڊيٽابيس جي دستيابي جو جائزو وٺڻ ۾ مدد ڪن ٿيون ۽ مانيٽر ڪري سگھن ٿيون ته ڇا ڪو وقت گھٽجي ويو آھي.

انهن مان هڪ ميٽرڪ اپ ٽائم آهي. پر PostgreSQL ۾ اپ ٽائيم ٿورڙو مشڪل آهي. مان توکي ٻڌايان ٿو ڇو. جڏهن PostgreSQL شروع ٿي چڪو آهي، اپ ٽائيم رپورٽنگ شروع ٿئي ٿو. پر جيڪڏهن ڪنهن موقعي تي، مثال طور، ڪجهه ڪم رات جو هلي رهيو هو، هڪ OOM-قاتل آيو ۽ زبردستي PostgreSQL چائلڊ پروسيس کي ختم ڪري ٿو، پوءِ ان صورت ۾ PostgreSQL سڀني ڪلائنٽ جو ڪنيڪشن ختم ڪري ٿو، شارڊ ٿيل ميموري واري علائقي کي ري سيٽ ڪري ٿو ۽ اتان کان وصولي شروع ڪري ٿو. آخري چيڪ پوائنٽ. ۽ جڏهن ته هي وصولي چيڪ پوائنٽ کان رهي ٿي، ڊيٽابيس ڪنيڪشن قبول نه ڪندو آهي، يعني هن صورتحال جو اندازو لڳائي سگهجي ٿو بند وقت جي طور تي. پر اپٽائم ڪائونٽر ري سيٽ نه ڪيو ويندو، ڇاڪاڻ ته اهو پوسٽ ماسٽر جي شروعاتي وقت کي پهرين لمحي کان وٺي ٿو. تنهن ڪري، اهڙين حالتن کي ختم ڪري سگهجي ٿو.

توهان کي پڻ ويڪيوم ڪارڪنن جي تعداد جي نگراني ڪرڻ گهرجي. ڇا هر ڪنهن کي خبر آهي ته PostgreSQL ۾ autovacuum ڇا آهي؟ هي PostgreSQL ۾ هڪ دلچسپ سبسسٽم آهي. سندس باري ۾ ڪيترائي مضمون لکيا ويا آهن، ڪيتريون رپورٽون ڪيون ويون آهن. خلا جي باري ۾ تمام گهڻو بحث آهي ۽ اهو ڪيئن ڪم ڪرڻ گهرجي. ڪيترائي ان کي لازمي برائي سمجهندا آهن. پر اهو ڪيئن آهي. هي هڪ قسم جو گاربيج ڪليڪٽر جو اينالاگ آهي جيڪو صفن جي پراڻي ورزن کي صاف ڪري ٿو جيڪي ڪنهن به ٽرانزيڪشن لاءِ گهربل نه آهن ۽ نئين قطارن لاءِ جدولن ۽ انڊيڪس ۾ جاءِ خالي ڪري ٿي.

توهان کي ان جي نگراني ڪرڻ جي ضرورت ڇو آهي؟ ڇو جو خال ڪڏهن ڪڏهن تمام گهڻو ڏکوئيندو آهي. اهو وسيلن جي وڏي مقدار کي استعمال ڪري ٿو ۽ ڪلائنٽ جي درخواستن جي نتيجي ۾ متاثر ٿيڻ شروع ٿي.

۽ ان کي pg_stat_activity view ذريعي مانيٽر ڪيو وڃي، جنهن بابت آئون ايندڙ حصي ۾ ڳالهائيندس. ھي ڏسو ڊيٽابيس ۾ موجوده سرگرمي. ۽ هن سرگرمي جي ذريعي اسان خالن جو تعداد ٽريڪ ڪري سگهون ٿا جيڪي هن وقت ڪم ڪري رهيا آهن. اسان ويڪيوم کي ٽريڪ ڪري سگھون ٿا ۽ ڏسون ٿا ته جيڪڏھن اسان حد کان وڌي ويا آھيون، ته اھو ھڪڙو سبب آھي پوسٽ گري ايس ايس ايل سيٽنگون ڏسڻ ۽ ڪنھن طرح ويڪيوم جي آپريشن کي بھتر بڻايو.

PostgreSQL بابت هڪ ٻي شيء اها آهي ته PostgreSQL ڊگهي ٽرانزيڪشن جي تمام بيمار آهي. خاص طور تي ٽرانزيڪشن مان جيڪي گهڻي وقت تائين لٽڪندا آهن ۽ ڪجھ به نه ڪندا آهن. اهو نام نهاد اسٽيٽ idle-in-transaction آهي. اهڙي ٽرانزيڪشن کي تالا رکي ٿو ۽ خلا کي ڪم ڪرڻ کان روڪي ٿو. ۽ نتيجي طور، ٽيبل سوز ۽ سائيز ۾ وڌندا آهن. ۽ سوال جيڪي انهن جدولن سان ڪم ڪن ٿا اهي سست ڪم ڪرڻ شروع ڪن ٿا، ڇو ته توهان کي ميموري کان ڊسڪ ۽ واپس تائين قطار جي سڀني پراڻي ورزن کي ڇڪڻ جي ضرورت آهي. تنهن ڪري، وقت، ڊگهي ٽرانزيڪشن جو عرصو، ڊگهي ويڪيوم درخواستن کي پڻ نگراني ڪرڻ جي ضرورت آهي. ۽ جيڪڏهن اسان ڪجهه عمل ڏسون ٿا جيڪي ڪافي عرصي کان هلي رهيا آهن، اڳ ۾ ئي 10-20-30 منٽن کان وڌيڪ OLTP لوڊ ڪرڻ لاء، پوء اسان کي انهن تي ڌيان ڏيڻ گهرجي ۽ انهن کي زبردستي ختم ڪرڻ، يا ايپليڪيشن کي بهتر ڪرڻ جي ضرورت آهي ته جيئن اهي نه سڏيو وڃي ٿو ۽ نه ايترو ڊگهو. هڪ تجزياتي ڪم لوڊ لاء، 10-20-30 منٽ عام آهي؛ اتي پڻ ڊگهو آهن.

PostgreSQL مانيٽرنگ جا بنيادي. Alexey Lesovsky
اڳيون اسان وٽ اختيار آهي ڳنڍيل ڪلائنٽ سان. جڏهن اسان اڳ ۾ ئي هڪ ڊيش بورڊ ٺاهي ڇڏيو آهي ۽ ان تي اهم دستيابي ميٽرڪ پوسٽ ڪيو آهي، اسان اتي پڻ ڳنڍيل ڪلائنٽ بابت اضافي معلومات شامل ڪري سگهون ٿا.

ڳنڍيل ڪلائنٽ بابت معلومات ضروري آهي ڇو ته، پوسٽ گري ايس ايس ايل جي نقطه نظر کان، گراهڪ مختلف آهن. سٺا گراهڪ آهن ۽ خراب گراهڪ آهن.

هڪ سادي مثال. ڪلائنٽ طرفان آئون ايپليڪيشن کي سمجهان ٿو. ايپليڪيشن ڊيٽابيس سان ڳنڍيل آهي ۽ فوري طور تي ان جون درخواستون موڪلڻ شروع ڪري ٿي، ڊيٽابيس پروسيس ڪري ٿو ۽ انهن تي عمل ڪري ٿو، ۽ نتيجن کي ڪلائنٽ ڏانهن موٽائي ٿو. اهي سٺا ۽ صحيح گراهڪ آهن.

حالتون آهن جڏهن ڪلائنٽ ڳنڍيل آهي، اهو ڪنيڪشن رکي ٿو، پر ڪجھ به نه ڪندو آهي. اهو بيڪار حالت ۾ آهي.

پر خراب گراهڪ آهن. مثال طور، ساڳيو ڪلائنٽ ڳنڍيل، هڪ ٽرانزيڪشن کوليو، ڊيٽابيس ۾ ڪجهه ڪيو ۽ پوء ڪوڊ ۾ ويو، مثال طور، ٻاهرين ذريعن تائين رسائي يا اتي حاصل ڪيل ڊيٽا کي پروسيس ڪرڻ لاء. پر هن ٽرانزيڪشن کي بند نه ڪيو. ۽ ٽرانزيڪشن ڊيٽابيس ۾ پھانسي ۽ لائن تي تالا ۾ رکيل آھي. هي هڪ خراب حالت آهي. ۽ جيڪڏهن اوچتو هڪ درخواست پنهنجي اندر اندر ڪنهن استثنا سان ناڪام ٿئي ٿي، پوء ٽرانزيڪشن تمام گهڻي وقت تائين کليل رهي سگهي ٿو. ۽ اهو سڌو سنئون متاثر ڪري ٿو PostgreSQL ڪارڪردگي. PostgreSQL سست ٿيندو. تنهن ڪري، اهو ضروري آهي ته اهڙن گراهڪن کي بروقت طريقي سان ٽريڪ ڪيو وڃي ۽ انهن جي ڪم کي زبردستي ختم ڪيو وڃي. ۽ توهان کي پنهنجي ايپليڪيشن کي بهتر ڪرڻ جي ضرورت آهي ته جيئن اهڙيون حالتون نه ٿين.

ٻيا خراب گراهڪ انتظار ڪندڙ گراهڪ آهن. پر حالتن جي ڪري خراب ٿي ويندا آهن. مثال طور، هڪ سادي بيڪار ٽرانزيڪشن: اهو هڪ ٽرانزيڪشن کولي سگهي ٿو، ڪجهه لائينن تي لاڪ وٺي سگهي ٿو، پوء ڪٿي ڪوڊ ۾ اهو ناڪام ٿيندو، هڪ پھانسي ٽرانزيڪشن کي ڇڏيندي. ٻيو ڪلائنٽ ايندو ۽ ساڳئي ڊيٽا جي درخواست ڪندو، پر هو هڪ تالا سان منهن ڏيندو، ڇاڪاڻ ته اهو پھانسي ٽرانزيڪشن اڳ ۾ ئي ڪجهه گهربل قطارن تي تالا رکي ٿو. ۽ ٻيو ٽرانزيڪشن پهرين ٽرانزيڪشن جي مڪمل ٿيڻ يا ان کي زبردستي بند ڪرڻ جي انتظار ۾ انتظار ڪندو منتظم طرفان. تنهن ڪري، التوا واري ٽرانزيڪشن جمع ڪري سگهن ٿا ۽ ڀري سگهن ٿا ڊيٽابيس ڪنيڪشن جي حد. ۽ جڏهن حد مڪمل آهي، ايپليڪيشن هاڻي ڊيٽابيس سان ڪم نه ڪري سگهي ٿي. هن منصوبي لاء اڳ ۾ ئي هڪ هنگامي صورتحال آهي. تنهن ڪري، خراب گراهڪن کي ٽريڪ ڪيو وڃي ۽ بروقت طريقي سان جواب ڏنو وڃي.

PostgreSQL مانيٽرنگ جا بنيادي. Alexey Lesovsky

نگراني جو ٻيو مثال. ۽ هتي اڳ ۾ ئي هڪ مهذب ڊيش بورڊ آهي. مٿي ڏنل ڪنيڪشن بابت ڄاڻ آهي. ڊي بي ڪنيڪشن - 8 ٽڪر. ۽ اهو سڀ ڪجهه آهي. اسان کي ڪا به ڄاڻ نه آهي ته ڪهڙا ڪلائنٽ فعال آهن، ڪهڙا ڪلائنٽ صرف بيڪار آهن، ڪجهه به نه ڪري رهيا آهن. التوا واري ٽرانزيڪشن ۽ التوا ۾ ڪنيڪشن بابت ڪا به ڄاڻ ناهي، يعني هي هڪ انگ آهي جيڪو ڏيکاري ٿو ڪنيڪشن جو تعداد ۽ بس. ۽ پوء پاڻ لاء اندازو لڳايو.
PostgreSQL مانيٽرنگ جا بنيادي. Alexey Lesovsky
ان مطابق، هن معلومات کي مانيٽرنگ ۾ شامل ڪرڻ لاءِ، توهان کي رسائي جي ضرورت پوندي pg_stat_activity سسٽم ڏيک. جيڪڏهن توهان PostgreSQL ۾ گهڻو وقت گذاريو ٿا ته پوءِ هي هڪ تمام سٺو نظارو آهي جيڪو توهان جو دوست بڻجي وڃي، ڇاڪاڻ ته اهو ڏيکاري ٿو موجوده سرگرمي PostgreSQL ۾، يعني ان ۾ ڇا ٿي رهيو آهي. هر عمل لاءِ هڪ الڳ لڪير آهي جيڪا هن عمل جي باري ۾ معلومات ڏيکاري ٿي: جنهن ميزبان کان ڪنيڪشن ٺاهيو ويو، ڪهڙي صارف جي تحت، ڪهڙي نالي سان، جڏهن ٽرانزيڪشن شروع ڪئي وئي، ڪهڙي درخواست هن وقت هلي رهي آهي، ڪهڙي درخواست تي آخري ڀيرو عمل ڪيو ويو. ۽، مطابق، اسان اسٽيٽ فيلڊ استعمال ڪندي ڪلائنٽ جي حالت جو اندازو لڳائي سگھون ٿا. نسبتا ڳالهائڻ، اسان هن فيلڊ ذريعي گروپ ڪري سگهون ٿا ۽ اهي انگ اکر حاصل ڪري سگهون ٿا جيڪي هن وقت ڊيٽابيس ۾ آهن ۽ ڪنيڪشن جو تعداد جيڪي ڊيٽابيس ۾ هي اسٽيٽ آهن. ۽ اسان اڳ ۾ ئي مليل نمبرن کي اسان جي نگراني ڏانهن موڪلي سگھون ٿا ۽ انهن جي بنياد تي گراف ٺاهي سگهون ٿا.
اهو پڻ ضروري آهي ته ٽرانزيڪشن جي مدت جو اندازو لڳايو وڃي. مون اڳ ۾ ئي چيو آهي ته اهو ضروري آهي ته ويڪيوم جي مدت جو اندازو لڳايو وڃي، پر ٽرانزيڪشن ساڳئي طريقي سان جائزو ورتو وڃي ٿو. هتي آهن xact_start ۽ query_start فيلڊ. اهي، نسبتا ڳالهائڻ، ٽرانزيڪشن جي شروعاتي وقت ۽ درخواست جي شروعاتي وقت ڏيکاري ٿو. اسان وٺون ٿا now() فنڪشن، جيڪو ڏيکاري ٿو موجوده ٽائم اسٽيمپ، ۽ ٽرانزيڪشن کي ختم ڪري ۽ ٽائم اسٽيمپ جي درخواست ڪريو. ۽ اسان حاصل ڪندا آهيون ٽرانزيڪشن جي مدت، درخواست جي مدت.

جيڪڏهن اسان ڊگهي ٽرانزيڪشن ڏسون ٿا، اسان کي انهن کي اڳ ۾ ئي مڪمل ڪرڻ گهرجي. OLTP لوڊ لاءِ، ڊگھا ٽرانزيڪشن اڳ ۾ ئي 1-2-3 منٽ کان وڌيڪ آھن. OLAP جي ڪم جي لوڊ لاءِ، ڊگھا ٽرانزيڪشن عام آھن، پر جيڪڏھن انھن کي مڪمل ٿيڻ ۾ ٻن ڪلاڪن کان وڌيڪ وقت لڳن، ته پوءِ اھو پڻ ھڪ نشاني آھي ته اسان وٽ ڪنھن جاءِ تي ڪا خرابي آھي.

PostgreSQL مانيٽرنگ جا بنيادي. Alexey Lesovsky
هڪ دفعو ڪلائنٽ ڊيٽابيس سان ڳنڍيل آهن، اهي اسان جي ڊيٽا سان ڪم ڪرڻ شروع ڪن ٿا. اهي ٽيبل تائين پهچن ٿا، اهي ٽيبل مان ڊيٽا حاصل ڪرڻ لاءِ انڊيڪس تائين پهچن ٿا. ۽ اهو ضروري آهي ته اندازو لڳايو ته ڪئين گراهڪ هن ڊيٽا سان لهه وچڙ ۾.

اهو ضروري آهي ته اسان جي ڪم جي لوڊ جو جائزو وٺڻ لاءِ ۽ تقريبن سمجھو ته ڪهڙيون ٽيبلون اسان لاءِ ”سڀ کان گرم“ آهن. مثال طور، اها ضرورت آهي حالتن ۾ جتي اسان رکڻ چاهيون ٿا ”گرم“ ٽيبل ڪنهن قسم جي تيز SSD اسٽوريج تي. مثال طور، ڪجهه آرڪائيو ٽيبل جيڪي اسان گهڻي وقت کان استعمال نه ڪيا آهن، انهن کي ڪنهن قسم جي "ٿڌي" آرڪائيو ۾، SATA ڊرائيو ڏانهن منتقل ڪري سگهجي ٿو ۽ انهن کي اتي رهڻ ڏيو، انهن کي ضرورت مطابق پهچايو ويندو.

اهو پڻ ڪارائتو آهي ڪنهن به رليز ۽ ترتيب ڏيڻ کان پوءِ انموليز کي ڳولڻ لاءِ. اچو ته پروجيڪٽ ڪجهه نئين خاصيت جاري ڪئي آهي. مثال طور، اسان ڊيٽابيس سان ڪم ڪرڻ لاء نئين ڪارڪردگي شامل ڪئي. ۽ جيڪڏھن اسان جدول جي استعمال جا گراف ٺاھيون ٿا، اسان آساني سان انھن گرافس تي انھن بي ضابطگين کي ڳولي سگھون ٿا. مثال طور، bursts کي اپڊيٽ ڪريو يا دفن کي ختم ڪريو. اهو تمام گهڻو ظاهر ٿيندو.

توھان پڻ ڳولي سگھوٿا ”سچل“ انگن اکرن ۾ بي ضابطگيون. هن جو ڇا مطلب آهي؟ PostgreSQL هڪ تمام مضبوط ۽ تمام سٺو سوال شيڊولر آهي. ۽ ڊولپر ان جي ترقي لاء گهڻو وقت وقف ڪري ٿو. هو ڪيئن ڪم ڪندو آهي؟ سٺو منصوبا ٺاهڻ لاءِ، PostgreSQL انگ اکر گڏ ڪري ٿو جدولن ۾ ڊيٽا جي ورڇ تي هڪ خاص وقت جي وقفي تي ۽ هڪ خاص تعدد سان. اھي سڀ کان وڌيڪ عام قدر آھن: منفرد قدرن جو تعداد، جدول ۾ NULL بابت ڄاڻ، گھڻي ڄاڻ.

انهن انگن اکرن جي بنياد تي، منصوبه بندي ڪندڙ ڪيترن ئي سوالن کي ٺاهي ٿو، سڀ کان وڌيڪ بهتر چونڊيندو آهي، ۽ هن سوال جي منصوبي کي استعمال ڪري ٿو خود سوال کي عمل ڪرڻ ۽ ڊيٽا واپس ڪرڻ لاء.

۽ اهو ٿئي ٿو ته انگ اکر "فلوٽ". ڪيفيت ۽ مقدار جي ڊيٽا جدول ۾ تبديل ٿي وئي، پر انگ اکر گڏ نه ڪيا ويا. ۽ ٺاهيل منصوبا شايد بهتر نه هجن. ۽ جيڪڏھن اسان جا منصوبا ذيلي اپٽمل ثابت ٿين ٿا، گڏ ڪيل مانيٽرنگ جي بنياد تي، جدولن جي بنياد تي، اسان انھن بي ضابطگين کي ڏسي سگھون ٿا. مثال طور، ڪٿي ڊيٽا ڪيفيت سان تبديل ٿي وئي ۽ انڊيڪس جي بدران، ٽيبل ذريعي هڪ ترتيب واري پاس استعمال ٿيڻ شروع ڪيو، يعني. جيڪڏهن هڪ سوال کي صرف 100 قطارون واپس ڪرڻ جي ضرورت آهي (100 جي حد آهي)، ته پوء هن سوال لاء مڪمل ڳولا ڪئي ويندي. ۽ اهو هميشه ڪارڪردگي تي تمام خراب اثر آهي.

۽ اسان هن کي نگراني ۾ ڏسي سگهون ٿا. ۽ اڳ ۾ ئي هن سوال کي ڏسو، ان لاءِ وضاحت ڪريو، انگ اکر گڏ ڪريو، نئون اضافي انڊيڪس ٺاهيو. ۽ اڳ ۾ ئي هن مسئلي جو جواب. ان ڪري اهو ضروري آهي.

PostgreSQL مانيٽرنگ جا بنيادي. Alexey Lesovsky

نگراني جو ٻيو مثال. منهنجو خيال آهي ته ڪيترن ئي ماڻهن کيس سڃاڻي ورتو ڇاڪاڻ ته هو تمام گهڻو مشهور آهي. جيڪو ان کي پنهنجي منصوبن ۾ استعمال ڪري ٿو Prometheus؟ ڪير هن پراڊڪٽ کي پروميٿيوس سان گڏ استعمال ڪري ٿو؟ حقيقت اها آهي ته هن مانيٽرنگ جي معياري مخزن ۾ PostgreSQL سان ڪم ڪرڻ لاءِ هڪ ڊيش بورڊ آهي. postgres_exporter پروميٿيس. پر اتي هڪ خراب تفصيل آهي.

PostgreSQL مانيٽرنگ جا بنيادي. Alexey Lesovsky

اتي ڪيترائي گراف آهن. ۽ بائيٽ کي وحدت طور ظاهر ڪيو ويو آهي، يعني اتي 5 گراف آهن. اهي ڊيٽا داخل ڪريو، ڊيٽا کي اپڊيٽ ڪريو، ڊيٽا کي حذف ڪريو، ڊيٽا حاصل ڪريو ۽ ڊيٽا واپس آڻيو. يونٽ جي ماپ بائيٽ آهي. پر شيء اها آهي ته PostgreSQL ۾ انگ اکر ٽپل (قطار) ۾ ڊيٽا واپس آڻيندي. ۽، ان جي مطابق، اهي گراف هڪ تمام سٺو طريقو آهي توهان جي ڪم جي لوڊ کي گهٽ ڪرڻ لاء ڪيترائي ڀيرا، ڏهه ڀيرا، ڇاڪاڻ ته هڪ ٽپل هڪ بائيٽ ناهي، هڪ ٽپل هڪ اسٽرنگ آهي، اهو ڪيترن ئي بائيٽن جو آهي ۽ اهو هميشه متغير ڊگهو آهي. اهو آهي، ٽوپل استعمال ڪندي بائيٽ ۾ ڪم جي لوڊ کي ڳڻڻ هڪ غير حقيقي ڪم يا تمام ڏکيو آهي. تنهن ڪري، جڏهن توهان ڊيش بورڊ يا بلٽ ان مانيٽرنگ استعمال ڪندا آهيو، اهو هميشه سمجهڻ ضروري آهي ته اهو صحيح طريقي سان ڪم ڪري ٿو ۽ توهان کي درست انداز ۾ ڪيل ڊيٽا واپس ڪري ٿو.

PostgreSQL مانيٽرنگ جا بنيادي. Alexey Lesovsky

انهن جدولن تي انگ اکر ڪيئن حاصل ڪجي؟ هن مقصد لاء، PostgreSQL نظرن جو هڪ خاص خاندان آهي. ۽ مکيه ڏيک آهي pg_stat_user_tables. User_tables - هن جو مطلب آهي ٽيبل ٺاهيل صارف جي طرفان. ان جي ابتڙ، اهڙا نظام نظريا آهن جيڪي استعمال ڪيا ويا آهن PostgreSQL پاڻ. ۽ اتي ھڪڙو خلاصو جدول آھي Alltables، جنھن ۾ سسٽم ۽ استعمال ڪندڙ ٻئي شامل آھن. توھان انھن مان شروع ڪري سگھو ٿا جيڪي توھان کي بھترين پسند آھن.

مٿي ڏنل شعبن کي استعمال ڪندي، توھان اندازو لڳائي سگھو ٿا انگن اکرن، تازه ڪاري ۽ حذف ڪرڻ جو. هڪ ڊيش بورڊ جو مثال جيڪو مون استعمال ڪيو انهن شعبن کي ڪم لوڊ جي خاصيتن جو جائزو وٺڻ لاءِ. تنهن ڪري، اسان انهن تي پڻ تعمير ڪري سگهون ٿا. پر اهو ياد رکڻ جي قابل آهي ته اهي ٽوپل آهن، بائيٽ نه آهن، تنهنڪري اسان اهو صرف بائيٽ ۾ نٿا ڪري سگهون.

ھن ڊيٽا جي بنياد تي، اسان ٺاھي سگھون ٿا نام نهاد TopN جدول. مثال طور، مٿي-5، مٿي-10. ۽ توهان ٽريڪ ڪري سگهو ٿا اهي گرم ٽيبل جيڪي ٻين کان وڌيڪ ريزائڪل آهن. مثال طور، داخل ڪرڻ لاء 5 "گرم" جدول. ۽ انهن TopN جدولن کي استعمال ڪندي اسان پنهنجي ڪم جي لوڊ جو جائزو وٺون ٿا ۽ ڪنهن به رليز، تازه ڪاري، ۽ ترتيب ڏيڻ کان پوءِ ڪم لوڊ جي دفن جو اندازو لڳائي سگهون ٿا.

ٽيبل جي سائيز جو اندازو لڳائڻ پڻ ضروري آهي، ڇاڪاڻ ته ڪڏهن ڪڏهن ڊولپرز هڪ نئين فيچر کي رول آئوٽ ڪندا آهن، ۽ اسان جا ٽيبل انهن جي وڏي سائيز ۾ سوڀ ڪرڻ شروع ڪندا آهن، ڇاڪاڻ ته انهن ڊيٽا جي اضافي رقم شامل ڪرڻ جو فيصلو ڪيو، پر اهو اڳڪٿي نه ڪيو ته اهو ڪيئن ٿيندو. ڊيٽابيس جي سائيز کي متاثر ڪري ٿو. اهڙا ڪيس به اسان لاءِ حيران ڪندڙ آهن.

PostgreSQL مانيٽرنگ جا بنيادي. Alexey Lesovsky

۽ هاڻي توهان لاء هڪ ننڍڙو سوال. ڇا سوال پيدا ٿئي ٿو جڏهن توهان پنهنجي ڊيٽابيس سرور تي لوڊ محسوس ڪيو؟ توهان وٽ ايندڙ سوال ڇا آهي؟

PostgreSQL مانيٽرنگ جا بنيادي. Alexey Lesovsky

پر حقيقت ۾ سوال پيدا ٿئي ٿو ته جيئن. ڪهڙيون درخواستون لوڊ سبب آهن؟ اهو آهي، اهو دلچسپ ناهي ته انهن عملن کي ڏسڻ لاء جيڪي لوڊ سبب آهن. اهو واضح آهي ته ميزبان وٽ ڊيٽابيس آهي، پوء ڊيٽابيس اتي هلندي آهي ۽ اهو واضح آهي ته صرف ڊيٽابيس کي ختم ڪيو ويندو. جيڪڏهن اسان مٿي کوليو ٿا، اسان اتي ڏسندا سين پروسيس جي هڪ فهرست پوسٽ گري ايس ايس ايل ۾ جيڪي ڪجهه ڪري رهيا آهن. اهو مٿي کان واضح نه ٿيندو ته اهي ڇا ڪري رهيا آهن.

PostgreSQL مانيٽرنگ جا بنيادي. Alexey Lesovsky

ان جي مطابق، توهان کي انهن سوالن کي ڳولڻ جي ضرورت آهي جيڪي سڀ کان وڌيڪ لوڊ ڪن ٿا، ڇاڪاڻ ته سوالن کي ترتيب ڏيڻ، ضابطي جي طور تي، PostgreSQL يا آپريٽنگ سسٽم جي ترتيب، يا هارڊويئر کي ٽيون ڪرڻ کان وڌيڪ منافعو ڏئي ٿو. منهنجي اندازي مطابق، اهو لڳ ڀڳ 80-85-90٪ آهي. ۽ اهو تمام گهڻو تيز ڪيو ويندو آهي. اهو هڪ درخواست کي درست ڪرڻ کان وڌيڪ تيز آهي ترتيب کي درست ڪرڻ، ٻيهر شروع ڪرڻ جو شيڊول، خاص طور تي جيڪڏهن ڊيٽابيس ٻيهر شروع نه ٿي سگهي، يا هارڊويئر شامل ڪريو. هن سوال مان بهتر نتيجو حاصل ڪرڻ لاءِ سوال کي ڪٿي وري لکڻ يا انڊيڪس شامل ڪرڻ آسان آهي.

PostgreSQL مانيٽرنگ جا بنيادي. Alexey Lesovsky
انهي جي مطابق، اهو ضروري آهي ته درخواستن ۽ انهن جي مناسبيت جي نگراني ڪرڻ. اچو ته مانيٽرنگ جو هڪ ٻيو مثال وٺون. ۽ هتي، پڻ، لڳي ٿو شاندار نگراني. نقل تي معلومات آهي، اتي معلومات آهي throughput، بلاڪ ڪرڻ، وسيلن جي استعمال تي. سڀ ڪجهه ٺيڪ آهي، پر درخواستن تي ڪا به ڄاڻ ناهي. اهو واضح ناهي ته اسان جي ڊيٽابيس ۾ ڪهڙا سوال هلندا آهن، اهي ڪيترو وقت هلي رهيا آهن، انهن مان ڪيترا سوال آهن. اسان کي هميشه اسان جي نگراني ۾ هن معلومات جي ضرورت آهي.

PostgreSQL مانيٽرنگ جا بنيادي. Alexey Lesovsky

۽ هي معلومات حاصل ڪرڻ لاءِ اسان استعمال ڪري سگهون ٿا pg_stat_statements ماڊل. ان جي بنياد تي، توهان مختلف قسم جا گراف ٺاهي سگهو ٿا. مثال طور، توھان معلومات حاصل ڪري سگھو ٿا گھڻا گھڻا سوالن تي، اھو آھي، انھن سوالن تي جيڪي اڪثر ڪيا ويندا آھن. ها، ڊيپلائيزيشن کان پوءِ ان کي ڏسڻ ۽ سمجھڻ لاءِ به تمام ڪارآمد آهي ته ڇا درخواستن ۾ ڪو اضافو آهي.

توھان مانيٽر ڪري سگھوٿا ڊگھي سوالن جي، يعني اھي سوال جيڪي مڪمل ٿيڻ ۾ سڀ کان ڊگھو وٺن ٿا. اهي پروسيسر تي هلن ٿا، اهي استعمال ڪن ٿا I/O. اسان ھن کي استعمال ڪري سگھون ٿا فيلڊز total_time، mean_time، blk_write_time ۽ blk_read_time.

اسان وسيلن جي استعمال جي لحاظ کان تمام وڏي درخواستن جو جائزو ۽ نگراني ڪري سگھون ٿا، جيڪي ڊسڪ مان پڙھندا آھن، جيڪي ميموري سان ڪم ڪن ٿا، يا، برعڪس، ھڪڙي قسم جي لکڻ جي لوڊ ٺاھيو.

اسان سڀ کان وڌيڪ سخي درخواستن جو اندازو لڳائي سگهون ٿا. اھي اھي سوال آھن جيڪي ھڪڙي وڏي تعداد ۾ قطار واپس آڻيندا آھن. مثال طور، اهو ٿي سگهي ٿو ڪجهه درخواست جتي اهي وسري ويا هڪ حد مقرر ڪرڻ. ۽ اهو صرف ٽيبل جي سموري مواد کي واپس ڪري ٿو يا سوال ڪيل جدولن ۾ سوال.

۽ توھان انھن سوالن جي نگراني ڪري سگھو ٿا جيڪي عارضي فائلون يا عارضي ٽيبل استعمال ڪن ٿيون.

PostgreSQL مانيٽرنگ جا بنيادي. Alexey Lesovsky
۽ اسان وٽ اڃا تائين پس منظر وارا عمل آهن. پس منظر وارا عمل بنيادي طور تي چيڪ پوسٽون آهن يا انهن کي چيڪ پوائنٽس پڻ سڏيو ويندو آهي، اهي آٽو ويڪيوم ۽ نقل آهن.

PostgreSQL مانيٽرنگ جا بنيادي. Alexey Lesovsky

نگراني جو ٻيو مثال. اتي کاٻي پاسي هڪ سار سنڀال ٽيب آهي، ان ڏانهن وڃو ۽ ڪجهه مفيد ڏسڻ جي اميد. پر هتي صرف ويڪيوم آپريشن ۽ انگ اکر گڏ ڪرڻ جو وقت آهي، وڌيڪ ڪجهه به ناهي. اها تمام خراب معلومات آهي، تنهنڪري اسان کي هميشه اها ڄاڻ رکڻ جي ضرورت آهي ته اسان جي ڊيٽابيس ۾ پس منظر وارا عمل ڪيئن ڪم ڪن ٿا ۽ ڇا انهن جي ڪم ۾ ڪي مسئلا آهن.

PostgreSQL مانيٽرنگ جا بنيادي. Alexey Lesovsky

جڏهن اسان چيڪ پوائنٽس کي ڏسون ٿا، اسان کي ياد رکڻ گهرجي ته چيڪ پوسٽون گندي صفحن کي شارڊ ٿيل ميموري واري علائقي کان ڊسڪ ڏانهن ڦيري، پوء هڪ چيڪ پوائنٽ ٺاهي. ۽ هي چيڪ پوائنٽ وري بحالي لاءِ جڳهه طور استعمال ڪري سگهجي ٿو جيڪڏهن PostgreSQL اوچتو ايمرجنسي ۾ ختم ٿي ويو.

تنهن ڪري، سڀني "گندي" صفحن کي ڊسڪ تي فلش ڪرڻ لاء، توهان کي ڪجهه لکڻ جي ضرورت آهي. ۽، ضابطي جي طور تي، ميموري جي وڏي مقدار سان سسٽم تي، اهو تمام گهڻو آهي. ۽ جيڪڏهن اسان چيڪ پوسٽون اڪثر ڪريون ٿا هڪ مختصر وقفي ۾، پوءِ ڊسڪ جي ڪارڪردگي تمام گهڻو گهٽجي ويندي. ۽ ڪلائنٽ جون درخواستون وسيلن جي کوٽ کان متاثر ٿينديون. اهي وسيلن لاءِ مقابلو ڪندا ۽ پيداوار جي کوٽ هوندي.

ان جي مطابق، pg_stat_bgwriter جي ذريعي مخصوص فيلڊ استعمال ڪندي اسان چيڪ پوسٽن جي تعداد جي نگراني ڪري سگھون ٿا جيڪي ٿين ٿا. ۽ جيڪڏهن اسان وٽ هڪ خاص عرصي دوران (10-15-20 منٽن ۾، اڌ ڪلاڪ ۾) ڪيترائي چيڪ پوسٽون آهن، مثال طور، 3-4-5، پوء اهو اڳ ۾ ئي هڪ مسئلو ٿي سگهي ٿو. ۽ توهان کي پهريان ئي ڊيٽابيس ۾ ڏسڻ جي ضرورت آهي، ترتيب ۾ ڏسو، چيڪ پوائنٽن جي اهڙي گهڻائي جو سبب ڇا آهي. ٿي سگهي ٿو اتي ڪنهن قسم جي وڏي رڪارڊنگ ٿي رهي آهي. اسان اڳ ۾ ئي ڪم لوڊ جو اندازو لڳائي سگهون ٿا، ڇاڪاڻ ته اسان اڳ ۾ ئي ڪم لوڊ گراف شامل ڪيو آهي. اسان اڳ ۾ ئي چيڪ پوائنٽ پيٽرولر کي ٽائيڪ ڪري سگھون ٿا ۽ پڪ ڪري سگھون ٿا ته اھي سوال جي ڪارڪردگي تي تمام گھڻو اثر انداز نه ڪندا آھن.

PostgreSQL مانيٽرنگ جا بنيادي. Alexey Lesovsky

مان ٻيهر آٽو ويڪيوم ڏانهن واپس اچي رهيو آهيان ڇاڪاڻ ته اها هڪ اهڙي شيءِ آهي، جيئن مون چيو، اهو آساني سان ڊسڪ ۽ سوال جي ڪارڪردگي ٻنهي کي شامل ڪري سگهي ٿو، تنهنڪري اهو هميشه ضروري آهي ته آٽو ويڪيوم جي مقدار جو اندازو لڳائڻ.

ڊيٽابيس ۾ autovacuum ڪارڪنن جو تعداد محدود آهي. ڊفالٽ طور، انهن مان ٽي آهن، تنهنڪري جيڪڏهن اسان وٽ هميشه ڊيٽابيس ۾ ٽي ڪارڪن ڪم ڪري رهيا آهن، ان جو مطلب اهو آهي ته اسان جو آٽو ويڪيوم ترتيب نه ڏنو ويو آهي، اسان کي حدن کي وڌائڻ، آٽو ويڪيوم سيٽنگن کي نظرثاني ڪرڻ ۽ ترتيب ۾ حاصل ڪرڻ جي ضرورت آهي.
اهو اندازو ڪرڻ ضروري آهي ته اسان وٽ ڪهڙن ويڪيوم ورڪرز آهن. يا ته اهو صارف کان شروع ڪيو ويو، DBA آيو ۽ دستي طور تي ڪجهه قسم جي خلا کي شروع ڪيو، ۽ اهو هڪ لوڊ پيدا ڪيو. اسان کي ڪجهه قسم جو مسئلو آهي. يا هي خلا جو تعداد آهي جيڪو ٽرانزيڪشن ڪائونٽر کي ختم ڪري ٿو. PostgreSQL جي ڪجهه نسخن لاءِ اهي تمام وڏا خالي آهن. ۽ اھي آساني سان ڪارڪردگي شامل ڪري سگھن ٿا ڇو ته اھي پوري جدول پڙھندا آھن، ان ٽيبل ۾ موجود مڙني بلاڪن کي اسڪين ڪندا آھن.

۽، يقينا، vacuums جي مدت. جيڪڏھن اسان وٽ ڊگھي ھلندڙ ويڪيوم آھن جيڪي گھڻي وقت تائين ھلنديون آھن، پوءِ ان جو مطلب اھو آھي ته اسان کي وري ويڪيوم جي تشڪيل تي ڌيان ڏيڻو پوندو ۽ شايد ان جي سيٽنگن تي نظرثاني ڪرڻي پوندي. ڇاڪاڻ ته اهڙي صورتحال پيدا ٿي سگهي ٿي جڏهن ويڪيوم ٽيبل تي ڊگهي وقت تائين ڪم ڪري ٿو (3-4 ڪلاڪ)، پر جڏهن ويڪيوم ڪم ڪري رهيو هو، وڏي تعداد ۾ مئل قطارون ٻيهر ميز تي گڏ ٿيڻ ۾ منظم ٿي. ۽ جيترو جلد خال مڪمل ٿئي ٿو، هن کي ٻيهر هن ميز کي خالي ڪرڻ جي ضرورت آهي. ۽ اسان هڪ صورتحال ڏانهن ايندا آهيون - هڪ لامحدود خلا. ۽ انهي صورت ۾، خلا ان جي ڪم سان مقابلو نٿو ڪري، ۽ جدولن کي آهستي آهستي سائيز ۾ سوڀ ڪرڻ شروع ڪيو، جيتوڻيڪ ان ۾ مفيد ڊيٽا جو مقدار ساڳيو رهي ٿو. تنهن ڪري، ڊگھي ويڪيوم دوران، اسان هميشه ترتيب تي نظر رکون ٿا ۽ ان کي بهتر ڪرڻ جي ڪوشش ڪندا آهيون، پر ساڳئي وقت انهي ڪري ته ڪلائنٽ جي درخواستن جي ڪارڪردگي متاثر نه ٿئي.

PostgreSQL مانيٽرنگ جا بنيادي. Alexey Lesovsky

اڄڪلهه عملي طور تي PostgreSQL تنصيب نه آهي جنهن ۾ اسٽريمنگ نقل نه آهي. نقل هڪ ماسٽر کان هڪ نقل ڏانهن ڊيٽا کي منتقل ڪرڻ جو عمل آهي.

PostgreSQL ۾ نقل هڪ ٽرانزيڪشن لاگ ذريعي ڪيو ويندو آهي. جادوگر هڪ ٽرانزيڪشن لاگ ٺاهي ٿو. ٽرانزيڪشن لاگ نقل ڏانهن نيٽ ورڪ ڪنيڪشن تي سفر ڪري ٿو، ۽ پوء اهو نقل تي ٻيهر پيدا ڪيو ويندو آهي. اهو سادو آهي.

ان جي مطابق، pg_stat_replication view استعمال ڪيو ويندو آھي نقل ڪرڻ واري وقفي جي نگراني ڪرڻ لاءِ. پر هن سان گڏ سڀ ڪجهه سادو ناهي. نسخو 10 ۾، ڏسڻ ۾ ڪيترائي تبديليون آيون آهن. پهرين، ڪجهه شعبن جو نالو تبديل ڪيو ويو آهي. ۽ ڪجهه فيلڊ شامل ڪيا ويا آهن. نسخو 10 ۾، فيلڊ ظاهر ٿيا جيڪي توهان کي سيڪنڊن ۾ نقل جي وقفي جو اندازو لڳائڻ جي اجازت ڏين ٿا. اهو تمام آرامده آهي. نسخو 10 کان اڳ، بائيٽ ۾ نقل جي وقفي جو اندازو لڳائڻ ممڪن هو. هي اختيار نسخو 10 ۾ رهي ٿو، يعني توهان اهو چونڊي سگهو ٿا جيڪو توهان لاءِ وڌيڪ آسان آهي - بائيٽ ۾ دير جو اندازو لڳايو يا سيڪنڊن ۾ دير جو اندازو لڳايو. ڪيترائي ماڻھو ٻئي ڪندا آھن.

پر ان جي باوجود، نقل جي وقفي جو جائزو وٺڻ لاء، توهان کي ٽرانزيڪشن ۾ لاگ ان جي پوزيشن کي ڄاڻڻ جي ضرورت آهي. ۽ اهي ٽرانزيڪشن لاگ پوزيشن بلڪل pg_stat_replication ڏيک ۾ آهن. نسبتا ڳالهائڻ، اسان pg_xlog_location_diff() فنڪشن استعمال ڪندي ٽرانزيڪشن لاگ ۾ ٻه پوائنٽون وٺي سگهون ٿا. انھن جي وچ ۾ ڊيلٽا کي ڳڻيو ۽ بائيٽس ۾ نقل جي وقفي حاصل ڪريو. اهو تمام آسان ۽ سادو آهي.

نسخو 10 ۾، هن فنڪشن جو نالو تبديل ڪيو ويو pg_wal_lsn_diff(). عام طور تي، سڀني ڪمن، نظرين ۽ افاديت ۾ جتي لفظ "xlog" ظاهر ٿيو، ان کي "wal" سان تبديل ڪيو ويو. اهو ٻنهي نظرين ۽ افعال تي لاڳو ٿئي ٿو. هي هڪ اهڙي جدت آهي.

ان سان گڏ، نسخو 10 ۾، لائينون شامل ڪيون ويون آھن جيڪي خاص طور تي دير ڏيکاريندي. اهي لکڻ جي وقفي، فلش دير، ريپلي ليگ آهن. اهو آهي، انهن شين جي نگراني ڪرڻ ضروري آهي. جيڪڏهن اسان ڏسون ٿا ته اسان وٽ هڪ نقل جي وقفي آهي، پوء اسان کي تحقيق ڪرڻ جي ضرورت آهي ته اهو ڇو ظاهر ٿيو، اهو ڪٿان آيو ۽ مسئلو حل ڪريو.

PostgreSQL مانيٽرنگ جا بنيادي. Alexey Lesovsky

تقريبن هر شي سسٽم ميٽرڪس سان ترتيب ۾ آهي. جڏهن ڪا به نگراني شروع ٿئي ٿي، اهو شروع ٿئي ٿو سسٽم ميٽرڪس سان. اهو پروسيسرز، ميموري، ادل، نيٽ ورڪ ۽ ڊسڪ جو اختيار آهي. بهرحال، ڪيترائي پيٽرولر ڊفالٽ طور تي نه آهن.

جيڪڏهن هر شي ريزائنگنگ جي عمل سان ترتيب ۾ آهي، پوء ڊسڪ ريزائنگنگ سان مسئلا آهن. ضابطي جي طور تي، مانيٽرنگ ڊولپرز throughput بابت معلومات شامل ڪن ٿا. اهو iops يا بائيٽ ۾ ٿي سگهي ٿو. پر اهي ويڪرائي ۽ ڊسڪ ڊوائيسز جي استعمال بابت وساريندا آهن. اهي وڌيڪ اهم پيٽرولر آهن جيڪي اسان کي اندازو لڳائڻ جي اجازت ڏين ٿيون ته اسان جون ڊسڪون ڪيئن لوڊ ٿيل آهن ۽ اهي سست آهن. جيڪڏهن اسان وٽ گهڻي دير آهي، پوء هن جو مطلب آهي ته ڊسڪ سان ڪجهه مسئلا آهن. جيڪڏهن اسان وٽ اعلي استعمال آهي، ان جو مطلب آهي ته ڊسڪ نقل نه ڪري رهيا آهن. اهي بهتر خاصيتون آهن throughput کان.

ان کان علاوه، اهي انگ اکر /proc فائل سسٽم مان پڻ حاصل ڪري سگھجن ٿا، جيئن ريسائڪلنگ پروسيسرز لاءِ ڪيو ويندو آهي. مون کي خبر ناهي ته هي معلومات نگراني ۾ ڇو شامل نه ڪئي وئي آهي. پر ان جي باوجود، اهو ضروري آهي ته اهو توهان جي نگراني ۾ هجي.

ساڳيو ئي نيٽ ورڪ انٽرفيس تي لاڳو ٿئي ٿو. پيڪٽس ۾ نيٽ ورڪ ذريعي وڃڻ جي باري ۾ معلومات موجود آهي، بائيٽ ۾، پر ان جي باوجود، دير جي باري ۾ ڪا ڄاڻ ناهي ۽ استعمال جي باري ۾ ڪا ڄاڻ ناهي، جيتوڻيڪ اها پڻ مفيد معلومات آهي.

PostgreSQL مانيٽرنگ جا بنيادي. Alexey Lesovsky

ڪنهن به نگراني ۾ خرابيون آهن. ۽ ڪو مسئلو ناهي ته توهان ڪهڙي قسم جي نگراني ڪندا آهيو، اهو هميشه ڪجهه معيارن تي پورو نه ٿيندو. پر ان جي باوجود، اهي ترقي ڪري رهيا آهن، نيون خاصيتون ۽ نيون شيون شامل ڪيون وينديون آهن، تنهنڪري ڪجهه چونڊيو ۽ ان کي ختم ڪريو.

۽ ختم ڪرڻ لاءِ، توهان کي هميشه اهو خيال رکڻو پوندو ته مهيا ڪيل انگ اکر جو مطلب ڇا آهي ۽ توهان انهن کي ڪيئن استعمال ڪري سگهو ٿا مسئلا حل ڪرڻ لاءِ.

۽ ڪجھ اهم نقطا:

  • توھان کي ھميشہ دستيابي جي نگراني ڪرڻ گھرجي ۽ ڊيش بورڊ ھجن تنھنڪري توھان تڪڙو اندازو لڳائي سگھوٿا ته ڊيٽابيس سان گڏ سڀ ڪجھ ترتيب ۾ آھي.
  • توهان کي هميشه اهو خيال رکڻو پوندو ته ڪهڙا گراهڪ توهان جي ڊيٽابيس سان ڪم ڪري رهيا آهن خراب ڪلائنٽ کي ختم ڪرڻ ۽ انهن کي مارڻ لاءِ.
  • اهو جائزو وٺڻ ضروري آهي ته اهي ڪلائنٽ ڊيٽا سان ڪيئن ڪم ڪن. توهان کي توهان جي ڪم جي لوڊ بابت هڪ خيال رکڻ جي ضرورت آهي.
  • اهو ضروري آهي ته اندازو لڳايو وڃي ته هي ڪم لوڊ ڪيئن ٺهيل آهي، ڪهڙي سوالن جي مدد سان. توهان سوالن جو جائزو وٺي سگهو ٿا، توهان انهن کي بهتر ڪري سگهو ٿا، انهن کي ريڪٽر ڪري سگهو ٿا، انهن لاء انڊيڪس ٺاهي سگهو ٿا. اهو تمام ضروري آهي.
  • پس منظر جي عملن کي ڪلائنٽ جي درخواستن تي منفي اثر پئجي سگھي ٿو، تنهنڪري اهو مانيٽر ڪرڻ ضروري آهي ته اهي تمام گهڻا وسيلا استعمال نه ڪري رهيا آهن.
  • سسٽم ميٽرڪس توهان کي اسڪيلنگ ۽ توهان جي سرورز جي صلاحيت کي وڌائڻ لاء منصوبا ٺاهڻ جي اجازت ڏئي ٿي، تنهن ڪري اهو ضروري آهي ته انهن کي ٽريڪ ۽ جائزو وٺڻ پڻ.

PostgreSQL مانيٽرنگ جا بنيادي. Alexey Lesovsky

جيڪڏهن توهان هن موضوع ۾ دلچسپي رکو ٿا، ته پوء توهان انهن لنڪ جي پيروي ڪري سگهو ٿا.
http://bit.do/stats_collector - ھي آھي سرڪاري دستاويز انگ اکر ڪليڪٽر کان. هتي سڀني شمارياتي نظرين جي وضاحت ۽ سڀني شعبن جي وضاحت آهي. توهان انهن کي پڙهي، سمجهي ۽ تجزيو ڪري سگهو ٿا. ۽ انھن جي بنياد تي، پنھنجو گراف ٺاھيو ۽ انھن کي پنھنجي نگراني ۾ شامل ڪريو.

درخواستن جا مثال:
http://bit.do/dataegret_sql
http://bit.do/lesovsky_sql

هي اسان جو ڪارپوريٽ مخزن آهي ۽ منهنجو پنهنجو. انهن ۾ مثالن جا سوال آهن. سليڪٽ * مان سيريز مان ڪي به سوال نه آهن. هتي اڳ ۾ ئي تيار ڪيل سوالن سان گڏ آهن، دلچسپ فنڪشن استعمال ڪندي جيڪي توهان کي خام نمبرن کي پڙهڻ جي قابل، آسان قدرن ۾ تبديل ڪرڻ جي اجازت ڏين ٿا، يعني اهي بائيٽ، وقت آهن. توھان انھن کي وٺي سگھو ٿا، انھن کي ڏسو، انھن جو تجزيو ڪريو، انھن کي پنھنجي نگراني ۾ شامل ڪريو، انھن جي بنياد تي پنھنجي نگراني ٺاھيو.

توهان جا سوال

سوال: توهان چيو آهي ته توهان برانڊز جو اشتهار نه ڏيندا، پر مان اڃا تائين تجسس آهيان - توهان پنهنجي منصوبن ۾ ڪهڙي قسم جا ڊيش بورڊ استعمال ڪندا آهيو؟
جواب: اهو مختلف آهي. اهو ٿئي ٿو ته اسان هڪ گراهڪ وٽ ايندا آهيون ۽ هن وٽ اڳ ۾ ئي پنهنجي نگراني آهي. ۽ اسان گراهڪ کي صلاح ڏيو ٿا ته انهن جي نگراني ۾ ڇا شامل ڪرڻ جي ضرورت آهي. زيبڪس سان بدترين صورتحال آهي. ڇو ته ان ۾ TopN گراف ٺاهڻ جي صلاحيت نه آهي. اسان پاڻ استعمال ڪريون ٿا اوڪيٽر، ڇاڪاڻ ته اسان انهن ماڻهن سان صلاح مشورا ڪري رهيا هئاسين مانيٽرنگ تي. انهن اسان جي ٽيڪنيڪل وضاحتن جي بنياد تي PostgreSQL جي نگراني ڪئي. مان پنهنجو پالتو پراجيڪٽ لکي رهيو آهيان، جيڪو پروميٿيوس ذريعي ڊيٽا گڏ ڪري ٿو ۽ ان کي رينڈر ڪري ٿو. گرافانا. منهنجو ڪم آهي Prometheus ۾ پنهنجو ايڪسپورٽر ٺاهڻ ۽ پوءِ Grafana ۾ هر شيءِ پيش ڪرڻ.

سوال: ڇا AWR رپورٽن جا ڪي اينالاگ آهن يا... مجموعا؟ ڇا توهان کي خبر آهي اهڙي شيءِ بابت؟
جواب: ها، مون کي خبر آهي ته AWR ڇا آهي، اها هڪ سٺي شيءِ آهي. هن وقت سائيڪلن جا مختلف قسم آهن جيڪي لڳ ڀڳ هيٺ ڏنل ماڊل کي لاڳو ڪن ٿيون. وقت جي ڪجهه وقفي تي، ڪجهه بيس لائين ساڳيا PostgreSQL يا هڪ الڳ اسٽوريج ڏانهن لکيل آهن. توھان انھن کي انٽرنيٽ تي گوگل ڪري سگھو ٿا، اھي اتي آھن. اهڙي شيء جي ڊولپرز مان هڪ آهي sql.ru فورم تي PostgreSQL سلسلي ۾. توهان هن کي اتي پڪڙي سگهو ٿا. ها، اهڙيون شيون آهن، اهي استعمال ڪري سگهجن ٿيون. ان ۾ پلس pg سينٽر مان پڻ هڪ شيء لکي رهيو آهيان جيڪو توهان کي ساڳيو ڪم ڪرڻ جي اجازت ڏئي ٿو.

PS1 جيڪڏھن توھان استعمال ڪري رھيا آھيو postgres_exporter، توھان ڪھڙو ڊيش بورڊ استعمال ڪري رھيا آھيو؟ انهن مان ڪيترائي آهن. اهي اڳ ۾ ئي پراڻي آهن. ٿي سگهي ٿو ڪميونٽي هڪ تازه ڪاري ٽيمپليٽ ٺاهي؟

PS2 هٽايو ويو pganalyze ڇاڪاڻ ته اها هڪ ملڪيت آهي SaaS پيشڪش جيڪا ڪارڪردگي جي نگراني ۽ خودڪار ٽيوننگ تجويزن تي ڌيان ڏئي ٿي.

صرف رجسٽرڊ استعمال ڪندڙ سروي ۾ حصو وٺي سگهن ٿا. سائن ان ڪريو، توهان جي مهرباني.

ڪهڙي خود ميزباني ڪيل پوسٽ گريسڪ ايل مانيٽرنگ (ڊيش بورڊ سان) توهان کي بهترين سمجهيو ٿا؟

  • 30,0٪Zabbix + Alexey Lesovsky کان اضافو يا zabbix 4.4 يا 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 هڪ ملڪيت آهي SaaS - مان ان کي ختم نٿو ڪري سگهان1

  • 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 صارفين ووٽ ڏنو. 26 استعمال ڪندڙن کي روڪيو ويو.

جو ذريعو: www.habr.com

تبصرو شامل ڪريو