یک سامانه سازمانی کند شده است. CPU سرور در محدوده عادی قرار دارد و Network نیز مشکلی نشان نمیدهد، اما کاربران برای اجرای یک تراکنش ساده چند ثانیه منتظر میمانند. بررسی بعدی نشان میدهد تعداد Connectionها بالا رفته، چند Query طولانی اجرا میشوند و Lockهای پایگاهداده صف ساختهاند. در چنین شرایطی مانیتورینگ فقط Host کافی نیست؛ باید خود Database را دید.
ManageEngine Applications Manager برای مانیتورینگ PostgreSQL میتواند شاخصهای Availability، Session، Connection، Query، Lock، Database Size و Replication را در کنار Alert و Dashboard ارائه دهد. این مقاله یک الگوی عملی برای مانیتورینگ PostgreSQL با Applications Manager میدهد تا تیم زیرساخت و DBA بتوانند کندی را سریعتر به علت قابل اقدام تبدیل کنند.
چرا مانیتورینگ PostgreSQL باید چندبعدی باشد؟
کندی پایگاهداده معمولاً فقط از یک شاخص ناشی نمیشود. ممکن است:
- Connection Pool اشباع شده باشد؛
- Query خاصی زمان زیادی مصرف کند؛
- Lock یا Blocking ایجاد شده باشد؛
- Replication عقب افتاده باشد؛
- Database Size یا Disk Growth به مرز خطر برسد؛
- Checkpoint یا I/O فشار ایجاد کند.
| لایه | نمونه KPI | ریسک |
|---|---|---|
| Availability | Up/Down، Response | قطع سرویس |
| Connection | Active/Idle Sessions | Exhaustion |
| Query | Execution Time | کندی اپلیکیشن |
| Lock | Blocked Sessions | صف و Timeout |
| Replication | Lag/Status | ریسک HA و DR |
| Capacity | DB Size، Growth | کمبود فضا |
Connection Monitoring؛ اولین نشانه فشار
اگر تعداد Connectionهای همزمان به سقف نزدیک شود، حتی Queryهای سالم نیز ممکن است با تأخیر اجرا شوند. بنابراین باید Active، Idle و Total Connectionها را جدا دید.
برای هر Instance بهتر است حداقل این Thresholdها تعریف شوند:
- نسبت Connection فعال به سقف مجاز؛
- رشد ناگهانی Session؛
- Idle Sessionهای طولانی؛
- Connection Failure یا Rejection.
Slow Query را فقط با میانگین زمان نبینید
میانگین ممکن است مشکل را پنهان کند. یک Query بسیار کند در میان هزاران Query سریع میتواند تجربه کاربر را خراب کند. بهتر است Queryهای پرتکرار، Queryهای طولانی و Queryهایی که I/O یا Lock زیادی دارند جداگانه بررسی شوند.
برای هر Query چه Contextی مهم است؟
- Execution Time؛
- Frequency؛
- User/Database؛
- Rows Processed؛
- Lock/Wait؛
- زمان وقوع نسبت به Load سیستم.
Lock و Blocking؛ وقتی Database سالم است اما کاربر منتظر میماند
یکی از سناریوهای رایج این است که Database Up است، CPU نیز عادی است، اما Sessionها منتظر Lock ماندهاند. در این وضعیت Alert روی Availability هیچ کمکی نمیکند.
Runbook پیشنهادی:
- Blocked Session را پیدا کنید.
- Blocking Session را شناسایی کنید.
- Query و Transaction مرتبط را بررسی کنید.
- مدت Lock را اندازه بگیرید.
- اگر تکراری است، Index/Transaction Design را اصلاح کنید.
Replication را جداگانه مانیتور کنید
در معماریهای HA یا Read Replica، فقط Up بودن Replica کافی نیست. Lag نیز اهمیت دارد. اگر Replica چند دقیقه عقب باشد، Failover یا Read Traffic ممکن است داده قدیمی ببیند.
| شاخص Replication | کاربرد |
|---|---|
| Replica Status | تشخیص قطع Replication |
| Lag | تشخیص عقبافتادگی |
| WAL/Log Growth | تشخیص فشار و Retention |
| Recovery State | وضعیت Standby |
Database Size و Growth را وارد Capacity Planning کنید
کمبود فضا معمولاً ناگهانی نیست؛ روند دارد. Applications Manager میتواند برای Database و Storage روند مصرف را قابل مشاهده کند تا Capacity Planning قبل از بحران انجام شود.
بهتر است برای Databaseهای حیاتی:
- Growth Rate ماهانه ثبت شود؛
- Free Space Forecast بررسی شود؛
- Archive/Retention Policy مشخص باشد؛
- Backup Size و Window نیز دیده شود.
Alert Design؛ هر Spike را Incident نکنید
Thresholdهای خیلی حساس باعث Alert Storm میشوند. بهتر است Alert با Duration و Context همراه باشد. برای مثال، Connection بالای ۸۰٪ اگر فقط ۳۰ ثانیه رخ دهد ممکن است اهمیتی نداشته باشد، اما اگر ۱۰ دقیقه ادامه پیدا کند باید بررسی شود.
Database Monitoring را با APM ترکیب کنید
اگر Applications Manager را همراه APM Insight استفاده کنید، میتوان مسیر Slow Transaction را از Application Layer تا SQL بررسی کرد. این موضوع برای تشخیص اینکه کندی از Code، Network یا Database است بسیار ارزشمند است.
مقاله مانیتورینگ Java با Applications Manager نمونهای از همین Correlation بین Transaction و SQL را بررسی میکند.
Integration با ServiceDesk Plus
Alertهای مهم PostgreSQL بهتر است به Incident قابل پیگیری تبدیل شوند. برای مثال:
- Replication Down؛
- Connection Exhaustion؛
- Disk Critical؛
- Blocking طولانی؛
- Database Unavailable.
در ServiceDesk Plus میتوان Assignment، SLA و Escalation را برای این Incidentها مدیریت کرد.
KPIهای پیشنهادی PostgreSQL
| KPI | کاربرد |
|---|---|
| Availability | پایداری سرویس |
| Connection Utilization | ریسک اشباع |
| Slow Query Count | کیفیت Performance |
| Blocked Session Duration | شدت Lock |
| Replication Lag | سلامت HA/DR |
| Database Growth Rate | Capacity Planning |
چکلیست راهاندازی
- Instanceها و Databaseهای Critical را مشخص کنید.
- Connection و Session Threshold بسازید.
- Slow Query و Lock را فعالانه مانیتور کنید.
- Replication را جداگانه بسنجید.
- Capacity Dashboard بسازید.
- Alertهای کمارزش را حذف کنید.
- Alertهای بحرانی را به ServiceDesk Plus متصل کنید.
نکات کلیدی
- Up بودن PostgreSQL به معنی سالم بودن Performance نیست.
- Connection، Query، Lock و Replication باید همزمان دیده شوند.
- Replication Lag به اندازه Availability مهم است.
- Capacity Planning باید بر اساس Trend انجام شود.
- Correlation با APM میتواند Root Cause را سریعتر مشخص کند.
منابع
سخن پایانی
برای PostgreSQL، مانیتورینگ مؤثر باید فراتر از Ping و CPU باشد. Connection، Query، Lock، Replication و Growth همان لایههایی هستند که تجربه واقعی Application را تعیین میکنند. Applications Manager زمانی بیشترین ارزش را دارد که این شاخصها را با APM و Incident Management کنار هم قرار دهید.
مدانت خدمات خرید و تمدید لایسنس Applications Manager، استقرار، طراحی Dashboard، تنظیم Threshold، APM و پشتیبانی را ارائه میدهد. برای معماریهای SQL Server نیز مقاله مانیتورینگ SQL Server با Applications Manager مکمل این راهنماست.

