مانیتورینگ سرور لینوکس از کجا شروع میشود؟
بسیاری از مدیران سرور فکر میکنند مانیتورینگ یعنی نگاه کردن به درصد مصرف CPU. اما این تصور کاملاً اشتباه است. بارها پیش میآید که CPU سرور شما فقط ۲۰٪ مصرف دارد، اما سایت بهشدت کند است. چرا؟ چون گلوگاه واقعی جای دیگری است: دیسک دارد با تأخیر بالا کار میکند، حافظه در فشار است و سیستم مجبور شده از Swap استفاده کند، بستههای شبکه گم میشوند، یا تعداد اتصالات همزمان از حد مجاز گذشته است.
مانیتورینگ درست یعنی اینکه قبل از هر تصمیمی، دقیقاً بدانید گلوگاه کجاست. آیا CPU است؟ حافظه؟ دیسک؟ شبکه؟ یا شاید یک کوئری بد در دیتابیس که کل سیستم را کند کرده. بدون این شناخت، هر ارتقایی که انجام دهید ممکن است فقط هزینه باشد و مشکل را حل نکند.
در این مقاله، ابتدا ابزارهای داخلی لینوکس را معرفی میکنیم که به شما کمک میکنند گلوگاه را پیدا کنید. بعد سراغ ابزارهای مانیتورینگ دائمی میرویم که بهصورت شبانهروزی سرور شما را زیر نظر میگیرند و اگر مشکلی پیش بیاید، به شما هشدار میدهند.
روش درست: اول با ابزارهای داخلی لینوکس مشخص کنید که گلوگاه اصلی CPU، RAM، Disk یا Network است. سپس برای مانیتورینگ دائمی و هشدارهای خودکار، ابزارهایی مثل Netdata یا Prometheus را اضافه کنید.
۲۰ ابزار مانیتورینگ لینوکس که باید بشناسید
ابزارهای مانیتورینگ لینوکس را میتوان به چند دسته تقسیم کرد: ابزارهای لحظهای برای بررسی سریع، ابزارهای تاریخی برای تحلیل روند، ابزارهای شبکه، و پلتفرمهای جامع مانیتورینگ. در جدول زیر، مهمترین این ابزارها را با کاربردشان معرفی کردهایم:
| ابزار | کاربرد اصلی |
|---|---|
| top / htop | نمایش زنده CPU، RAM و پردازشها |
| free | وضعیت حافظه و Swap |
| vmstat | تصویر کلی CPU، Memory و IO |
| iostat | عملکرد دیسک و IO |
| iotop | مصرف IO به تفکیک پردازش |
| pidstat | مصرف CPU، Memory و IO هر پردازش |
| ss | نمایش Socket و اتصالات شبکه |
| iftop | ترافیک شبکه به تفکیک اتصال |
| nload | نرخ RX/TX هر اینترفیس |
| vnStat | آمار ترافیک تاریخی |
| sar | تاریخچه عملکرد سیستم |
| Glances | CLI، Web و API یکپارچه |
| Netdata | داشبورد Real-time با هشدار آماده |
| Node Exporter | انتشار متریکهای لینوکس برای Prometheus |
| Prometheus | ذخیره و پردازش Time-series |
| Grafana | ساخت داشبورد و Visualization |
| Uptime Kuma | بررسی دسترسپذیری سرویسها |
| journalctl | بررسی لاگهای سیستم و سرویسها |
| smartctl | سلامت دیسک با SMART |
| ps | عکس لحظهای از پردازشها |
بررسی CPU و Load Average
Load Average عددی است که نشان میدهد در یک بازه زمانی (۱، ۵ و ۱۵ دقیقه گذشته) چند پردازش در انتظار اجرا یا در حال اجرا بودهاند. اما یک اشتباه رایج این است که فکر کنیم Load بالا همیشه به معنی مصرف بالای CPU است. در واقع، پردازشهایی که منتظر IO دیسک هستند هم Load را بالا میبرند. پس اگر Load سرور شما بالاست اما CPU آزاد است، احتمالاً مشکل از دیسک یا حافظه است.
uptime
top
ps aux --sort=-%cpu | head -20
دستور uptime سه عدد Load را نشان میدهد. دستور top نمای زندهای از پردازشها میدهد و با ps aux --sort=-%cpu میتوانید ببینید کدام پردازشها بیشترین CPU را مصرف میکنند.
بررسی RAM و Swap
وقتی حافظه فیزیکی سرور پر میشود، سیستمعامل بخشی از دادهها را به Swap (فضای روی دیسک) منتقل میکند. این کار اگرچه از خطای OOM جلوگیری میکند، اما بهشدت سرعت سیستم را پایین میآورد، چون دیسک دهها برابر کندتر از RAM است.
free -h
vmstat 1
ps aux --sort=-%mem | head -20
اگر OOM Killer پردازشی را کشته باشد، این را میتوانید در لاگ کرنل ببینید:
journalctl -k | grep -i -E 'oom|out of memory|killed process'
اگر این پیامها را زیاد میبینید، یعنی سرور شما از نظر حافظه کمبود جدی دارد و باید یا رم را افزایش دهید یا پردازشهای پرمصرف را بهینه کنید.
بررسی Disk و IO
یکی از رایجترین دلایل کندی سرور، عملکرد ضعیف دیسک است. نه فقط فضای خالی، بلکه سرعت خواندن و نوشتن و تعداد عملیات IO در ثانیه (IOPS). دو دستور مهم در این زمینه:
df -h
df -i
sudo apt install -y sysstat iotop
iostat -xz 1
sudo iotop
دستور df -h فضای دیسک را نشان میدهد و df -i تعداد Inodeهای مصرفشده. گاهی دیسک فضای خالی دارد اما Inodeها تمام شدهاند و این خودش میتواند باعث خطا شود. دستور iostat -xz 1 هر ثانیه وضعیت دیسک را نشان میدهد و iotop میگوید کدام پردازش بیشترین IO را ایجاد میکند.
بررسی شبکه
شبکه هم میتواند گلوگاه باشد، بهویژه اگر سرور شما ترافیک زیادی دارد یا تعداد اتصالات همزمان بالاست. ابزارهای زیر به شما کمک میکنند:
ss -s
ss -tulpn
ip -s link
ping -c 5 1.1.1.1
دستور ss -s خلاصهای از وضعیت Socketها میدهد و ss -tulpn نشان میدهد کدام پورتها باز هستند و کدام پردازشها روی آنها گوش میدهند. با ip -s link میتوانید خطاها و بستههای گمشده در هر اینترفیس را ببینید.
Glances: مانیتورینگ همهکاره در ترمینال
Glances یک ابزار فوقالعاده است که CPU، RAM، Load، Network، Disk و Processها را در یک نمای واحد در ترمینال نشان میدهد. نسخههای جدید آن حتی حالت Client/Server، API و MCP هم دارند و میتوانید از راه دور به آن وصل شوید.
sudo apt install -y glances
glances
اگر میخواهید در حالت وب اجرا کنید، با دستور glances -w یک داشبورد تحت وب راهاندازی میشود که از پورت ۶۱۲۰۸ قابل دسترسی است.
Netdata: داشبورد Real-time با هشدار آماده
Netdata یکی از محبوبترین ابزارهای مانیتورینگ لینوکس است. این ابزار متریکهای سیستمعامل، systemd، دیتابیس و اپلیکیشنها را جمعآوری میکند و یک داشبورد زیبا و پویا با هشدارهای آماده در اختیار شما میگذارد. نصب آن بسیار ساده است و بهسرعت راه میافتد.
اما یک نکته امنیتی مهم: پورت وب Netdata را مستقیم روی اینترنت باز نکنید. حتماً از Reverse Proxy و Authentication استفاده کنید تا فقط افراد مجاز به داشبورد دسترسی داشته باشند.
Prometheus + Node Exporter: معماری استاندارد برای چند سرور
اگر چند سرور دارید، Prometheus همراه با Node Exporter یک انتخاب حرفهای است. Node Exporter روی هر سرور نصب میشود و متریکهای سختافزاری و کرنل را در یک Endpoint منتشر میکند. Prometheus بهصورت دورهای این متریکها را جمعآوری (Scrape) میکند و در یک پایگاه داده Time-series ذخیره میکند. با Grafana هم میتوانید داشبوردهای زیبا بسازید.
مراحل کلی راهاندازی:
# روی هر سرور
wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz
tar xvf node_exporter-1.7.0.linux-amd64.tar.gz
sudo mv node_exporter-1.7.0.linux-amd64/node_exporter /usr/local/bin/
sudo useradd --no-create-home --shell /bin/false node_exporter
sudo tee /etc/systemd/system/node_exporter.service <<EOF
[Unit]
Description=Node Exporter
After=network.target
[Service]
User=node_exporter
ExecStart=/usr/local/bin/node_exporter
[Install]
WantedBy=default.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable --now node_exporter
سپس در سرور Prometheus، فایل تنظیمات را طوری تغییر دهید که این Endpointها را Scrape کند. با Grafana هم میتوانید داشبوردهای آماده مثل Node Exporter Full را وارد کنید.
هشدارهای مهمی که باید تنظیم کنید
مانیتورینگ بدون هشدار، مثل نگهبانی است که خوابش برده. این موارد را حتماً در سیستم هشدار خود داشته باشید:
- Disk بالای ۸۰٪ و ۹۰٪: قبل از پر شدن کامل دیسک، خبردار شوید.
- RAM available پایین: اگر حافظه آزاد مدام کم میشود، احتمالاً در آینده به OOM میخورید.
- Swap activity: فعالیت زیاد Swap نشانه کمبود حافظه است.
- CPU steal بالا: در VPS، اگر CPU steal بالاست یعنی ارائهدهنده منابع را بین شما و بقیه تقسیم کرده و شما سهم کمتری میگیرید.
- IO latency: تأخیر زیاد دیسک باعث کندی همه سرویسها میشود.
- Service Down: اگر سرویس اصلی شما از کار بیفتد، باید فوراً خبردار شوید.
- HTTP 5xx: افزایش خطاهای سرور نشانه مشکل جدی است.
- SSL expiry: تاریخ انقضای گواهی SSL را فراموش نکنید.
- Backup age: اگر آخرین نسخه پشتیبان بیش از حد قدیمی باشد، هشدار بگیرید.
قبل از ارتقای VPS، گلوگاه را ثابت کنید
افزایش منابع بدون پیدا کردن علت واقعی کندی، فقط هزینه را بالا میبرد. ممکن است یک کوئری خراب در دیتابیس، یک حلقه بیپایان در کد، یا یک دیسک کند باعث مشکل شده باشد. اول با ابزارهای بالا گلوگاه را پیدا کنید، بعد تصمیم بگیرید.
تماس با پشتیبانی ایرانیکاسرور: 021-91302467
چکلیست ۵ دقیقهای برای عیبیابی سریع
اگر سرور شما کند است و وقت زیادی ندارید، این دستورها را بهترتیب اجرا کنید تا در چند دقیقه تصویر کلی به دست آورید:
uptime
free -h
df -h
df -i
top -b -n1 | head -30
iostat -xz 1 3
ss -s
journalctl -p err -n 50 --no-pager
خروجی این دستورها به شما میگوید Load چقدر است، حافظه چطور است، دیسک چقدر پر است، چه پردازشهایی بیشترین مصرف را دارند، IO چطور است، شبکه چه وضعی دارد و چه خطاهایی در لاگ ثبت شده.
اشتباهات رایج در مانیتورینگ
حتی مدیران باتجربه هم ممکن است در مانیتورینگ اشتباه کنند. این موارد را جدی بگیرید:
- فقط نگاه کردن به CPU: گلوگاه معمولاً جای دیگری است.
- نداشتن هشدار: مانیتورینگ بدون Alert فقط داده جمع میکند.
- باز گذاشتن داشبورد روی اینترنت: Netdata و Grafana باید پشت Authentication باشند.
- نادیده گرفتن Inode: دیسک ممکن است فضا داشته باشد اما Inode تمام شده باشد.
- تنظیم نکردن Retention: اگر دادههای تاریخی را محدود نکنید، خود مانیتورینگ دیسک را پر میکند.
- نداشتن Baseline: بدون دانستن رفتار عادی سرور، نمیتوانید رفتار غیرعادی را تشخیص دهید.
پرسشهای پرتکرار
برای مانیتورینگ سریع چه ابزاری مناسب است؟
برای بررسی سریع در ترمینال، htop و Glances عالی هستند. برای داشبورد آماده و سریع، Netdata. برای چند سرور و معماری حرفهای، Prometheus + Node Exporter + Grafana.
چطور بفهمم CPU بالا است؟
با top یا htop میتوانید مصرف لحظهای را ببینید. با pidstat و ps میتوانید پردازشهای پرمصرف را پیدا کنید و با vmstat تصویر کلی بگیرید.
اگر دیسک کند است چه کنم؟
با iostat و iotop بررسی کنید. فقط درصد پرشدن دیسک مهم نیست؛ تأخیر IO و تعداد عملیات در ثانیه هم مهماند. گاهی یک پردازش خاص باعث IO زیاد میشود.
برای چند سرور چه معماریای مناسب است؟
Prometheus + Node Exporter + Grafana یک معماری استاندارد و مقیاسپذیر است. Netdata هم میتواند در حالت Parent/Child چند سرور را مدیریت کند.
Node Exporter دقیقاً چه کاری انجام میدهد؟
Node Exporter متریکهای سختافزاری و کرنل لینوکس مثل CPU، RAM، Disk، Network و فایلسیستم را در یک Endpoint منتشر میکند تا Prometheus آنها را جمعآوری کند.
آیا Netdata سنگین است؟
به Collectorها و مدت Retention بستگی دارد. بهطور پیشفرض سبک است، اما اگر همه Collectorها را فعال کنید و دادهها را مدت طولانی نگه دارید، مصرف منابع بالا میرود. مصرف واقعی را بعد از نصب بسنجید.
چرا باید Baseline داشته باشیم؟
بدون Baseline نمیدانید رفتار عادی سرور چیست. ممکن است Load ۵ برای یک سرور عادی و برای سرور دیگر فاجعه باشد. Baseline به شما میگوید چه چیزی غیرعادی است.
منابع
جمعبندی
برای عیبیابی سریع، ترکیب htop، iostat، ss و journalctl بهترین انتخاب است. برای داشبورد سریع و هشدار آماده، Netdata. برای چند سرور و معماری حرفهای، Prometheus + Node Exporter + Grafana. اما مهمتر از ابزار، این است که اول گلوگاه واقعی را پیدا کنید و بعد تصمیم بگیرید. مانیتورینگ بدون هشدار و بدون Baseline، فقط داده جمع میکند و کمکی به شما نمیکند.
سرور کند است ولی علت مشخص نیست؟
خروجی CPU، RAM، IO و Network را جمعآوری کنید و برای ما بفرستید تا سریعتر به شما کمک کنیم.
تماس با پشتیبانی ایرانیکاسرور: 021-91302467






دیدگاهها (۰)