مطالب و یادداشت ها
روش مانتیتورینگ سرور
برای مانیتورینگ یک سرور cPanel/Linux، ما سه سطح داریم: مشاهده لحظهای، هشدار خودکار و اقدام عملی.
در اینجا راهنمای کامل را برای شما آماده کردهام:
۱. بهترین ابزارها برای مانیتورینگ
الف) ابزار لحظهای (رایگان و حرفهای): htop
دستور top قدیمی و سختخوان است. ابزار htop گرافیکی و رنگی است و همه چیز را در یک نگاه نشان میدهد.
اگر نصب نیست، نصب کنید:
yum install htop -y
و برای اجرا کافیست بزنید htop.
ب) سیستم هشداردهنده (CSF/LFD)
شما WHM/cPanel دارید، پس احتمالاً فایروال CSF هم دارید. این فایروال یک سرویس جانبی به نام LFD دارد که اگر لود سرور بالا رفت، به شما ایمیل میزند.
- مسیر تنظیم: WHM > ConfigServer Security & Firewall > Firewall Configuration.
- دنبال گزینه
PT_LOAD_ACTIONبگردید. میتوانید تنظیم کنید اگر لود بالا رفت چه کار کند (فقط گزارش دهد یا پروسه را بکشد).
۲. تعیین مرزهای خطر (Thresholds)
برای فهمیدن مرز خطر، اول باید بدانید سرور شما چند هسته CPU دارد.
دستور زیر را بزنید:
nproc
فرض میکنیم خروجی این دستور عدد ۴ باشد (یعنی سرور ۴ هسته دارد).
الف) مانیتورینگ CPU (Load Average)
در htop یا دستور uptime، سه عدد میبینید (مثلاً: 0.50, 1.20, 5.00). اینها میانگین بار در ۱، ۵ و ۱۵ دقیقه اخیر هستند.
- وضعیت سبز (عادی): لود کمتر از تعداد هستهها باشد. (مثلاً زیر ۳ برای سرور ۴ هستهای).
- وضعیت زرد (احتیاط): لود برابر با تعداد هستهها باشد. (مثلاً ۴).
- معنی: تمام هستهها ۱۰۰٪ مشغولند، ولی صف انتظار نداریم.
- وضعیت قرمز (خطر): لود بالاتر از تعداد هستهها باشد. (مثلاً ۶ یا ۱۰).
- معنی: پردازنده کم آورده و درخواستها در صف (Queue) ماندهاند. اینجا سایت کند میشود.
- وضعیت بحرانی (Crash Zone): لود ۳ یا ۴ برابر تعداد هستهها (مثلاً ۱۵ یا ۲۰).
- معنی: سرور قفل میکند (Hang) و احتمالاً نیاز به ریبوت سختافزاری دارد.
ب) مانیتورینگ RAM (حافظه)
لینوکس فضای خالی رم را برای کش (Cache) استفاده میکند، پس اگر دیدید رم پر است نترسید. به رنگها در htop دقت کنید.
- احتیاط: وقتی نوار RAM پر شده و سیستم شروع به استفاده از Swap (حافظه مجازی روی هارد) میکند. استفاده کم از Swap عادی است، اما اگر زیاد شود سرور به شدت کند میشود.
- خطر: وقتی رم پر است و Swap هم پر شده. اینجا سرویس OOM Killer (قاتل حافظه) بیدار میشود و به صورت رندوم سرویسها (معمولاً MySQL) را میبندد تا سرور زنده بماند.
۳. اقدامات عملی در هر وضعیت
سناریوی ۱: وضعیت زرد (هشدار)
علائم: سایت کمی کند است، فن سرور (اگر فیزیکی باشد) صدا میدهد، لود نزدیک به تعداد هستههاست.
اقدام:
- دستور
htopرا باز کنید. - ببینید چه پروسهای در صدر است؟
- اگر MySQL است: دیتابیس تحت فشار است (بهینهسازی دیتابیس، کش وردپرس).
- اگر php-fpm یا httpd است: ترافیک ورودی بالاست (شاید رباتها حمله کردهاند).
- اگر backup یا gzip است: بکاپگیری در ساعت اوج مصرف انجام میشود (زمانش را به شب منتقل کنید).
سناریوی ۲: وضعیت قرمز (خطر)
علائم: سایت به سختی باز میشود، SSH با تاخیر تایپ میکند.
اقدام:
- باید سریعا فشار را کم کنید.
- سرویس وبسرور و دیتابیس را ریستارت کنید تا رم آزاد شود:
bash service httpd restart # یا lsws برای لایتاسپید service mysql restart - اگر حمله است، آیپیهای مشکوک را در فایروال بلاک کنید.
سناریوی ۳: وضعیت بحرانی (در آستانه کرش)
علائم: هیچ دستوری کار نمیکند، یا بسیار کند است.
اقدام:
اگر هنوز میتوانید تایپ کنید، کشتن تمام پروسههای سنگین تنها راه نجات قبل از ریبوت است. ولی معمولاً در این مرحله چارهای جز Reboot از پنل دیتاسنتر نیست.
۴. یک دستور جادویی برای چک کردن سریع سلامت
من همیشه این Alias را در سرورهایم میسازم تا با تایپ کلمه check وضعیت کلی را ببینم.
این خط را در ترمینال کپی و اجرا کنید:
“`bash
alias check=’echo “— LOAD —“; uptime; echo “— MEMORY —“; free -h; echo “— DISK —“; df -h /’
حالا هر وقت بزنید check، به شما لود، رم و فضای دیسک را یکجا میدهد.
- فضای دیسک (Disk Usage): حواستان باشد پارتیشن
/یا/varبالای ۹۰٪ نرود. اگر دیسک پر شود، MySQL کرش میکند و دیتابیس خراب میشود (فاجعه).
خلاصه:
۱. htop را نصب کنید.
۲. تعداد هستهها (nproc) را بدانید.
۳. نگذارید لود سرور از تعداد هستهها بالاتر برود.
۴. نگذارید دیسک بالای ۹۰٪ پر شود.
شما میتوانید تمام این دستورات را در ترمینال داخل WHM اجرا کنید. این سادهترین و امنترین راه است چون نیاز به نصب نرمافزار اضافی (مثل Putty) روی کامپیوتر خودتان ندارید.
مسیر دسترسی:
۱. وارد WHM شوید.
۲. در کادر جستجوی بالا سمت چپ، کلمه Terminal را تایپ کنید.
۳. روی گزینه Terminal (در بخش Server Configuration) کلیک کنید.
۴. یک صفحه سیاه باز میشود و ممکن است پیامی بدهد که “من خطرات را میپذیرم” (I understand and want to proceed). آن را تایید کنید.
الان شما دسترسی کامل Root دارید.
نکات مهم برای استفاده از ترمینال WHM:
- دستور
htop: وقتیhtopرا در اینجا اجرا میکنید، گرافیکی و رنگی نمایش داده میشود. برای خروج ازhtopو برگشت به خط فرمان، دکمهF10یاqکیبورد را بزنید. - دستور
check: آن دستوری که برای چک کردن سریع (Alias) دادم، فقط تا زمانی کار میکند که صفحه ترمینال باز است. اگر صفحه را ببندید و دوباره باز کنید، باید دوباره آن خط کد را کپی/پیست کنید (که مشکلی نیست). - احتیاط: در این محیط شما “خدا”ی سرور هستید! هر فایلی را میتوانید پاک کنید. پس دستورات را با دقت کپی کنید.
خلاصه:
بله، همین الان بروید به مسیر WHM > Terminal و دستور nproc را بزنید تا ببینید سرورتان چند هسته دارد، و بعد htop را بزنید تا وضعیت زنده را ببینید.
عالیه! پیام سیستم (Package htop ... is already installed) یعنی ابزار htop از قبل روی سرور شما نصب بوده و آماده استفاده است. نیازی به نصب مجدد نیست.
حالا فقط کافیست در همان محیط ترمینال تایپ کنید:
htop
و اینتر را بزنید.
یک صفحه گرافیکی پر از نوار رنگی و عدد باز میشود. نترسید! اینجا راهنمای خواندن آن است تا بفهمید “وضعیت خطر” کجاست:
۱. بخش بالا سمت چپ (میلههای CPU و RAM)
- میلههای رنگی (1, 2, …): نشاندهنده هستههای CPU شما هستند.
- اگر این میلهها مدام روی ۱۰۰٪ هستند، یعنی پردازنده دارد خفه میشود (وضعیت خطر).
- اگر بالا و پایین میروند (مثلاً ۲۰٪، ۵۰٪، ۱۰٪)، وضعیت عالی است.
- میله Mem (رم): این خیلی مهم است.
- سبز: استفاده نرمال برنامهها.
- نارنجی/زرد: کش (Cache) است که بیخطر است (لینوکس هوشمندانه از رم خالی برای سرعت بیشتر استفاده میکند).
- خطر کجاست؟ اگر نوار
Memکاملاً پر شد و نوار پایینترش یعنیSwp(Swap) هم شروع به پر شدن کرد، یعنی رم کم آوردهاید و سرور در آستانه کرش است.
۲. بخش بالا سمت راست (Load Average)
اینجا سه عدد میبینید، مثلاً: Load average: 0.45 1.10 2.05
- عدد اول: میانگین فشار در ۱ دقیقه اخیر.
- عدد دوم: میانگین فشار در ۵ دقیقه اخیر.
- عدد سوم: میانگین فشار در ۱۵ دقیقه اخیر.
قانون طلایی خطر:
اول دستور nproc را بزنید تا ببینید چند هسته دارید (مثلاً ۴).
- اگر عدد Load Average زیر ۴ باشد: سبز (امن).
- اگر عدد Load Average به ۴ برسد: زرد (هشدار).
- اگر عدد Load Average بالای ۴ برود (مثلاً ۶ یا ۸): قرمز (خطر کندی و کرش).
۳. چگونه خارج شوید؟
هر وقت کارتان تمام شد و خواستید به خط فرمان برگردید، کلید F10 یا حرف q روی کیبورد را بزنید.
برای مثال وضعیت یک سرور بسیار پایدار و سالم که 10 هسته دارد را بررسی می کنیم:
۱. تحلیل بخش بالا سمت راست (آمار حیاتی)
در صفحه این اعداد دیده میشوند:Tasks: 133, 101 thr; 0 runningLoad average: 1.53 1.33 1.05Uptime: 3 days, ...
- Tasks (وظایف): کل پروسههایی که در حافظه هستند. ۱۳۳ پروسه دارید که عدد نرمالی است.
- Running (در حال اجرا): نوشته 0. این یعنی در آن کسر از ثانیهای که عکس گرفتید، هیچ پروسهای فشار ۱۰۰ درصدی روی CPU نمیآورده و همه چیز روان بوده است.
- Load Average (میانگین بار):این مهمترین بخش است.
- اعداد شما:
1.53(یک دقیقه اخیر)،1.33(پنج دقیقه اخیر)،1.05(پانزده دقیقه اخیر). - تفسیر: شما ۱۰ هسته دارید. یعنی ظرفیت “بار” شما عدد ۱۰.۰۰ است.
- بار فعلی شما ۱.۵۳ است. این یعنی فقط حدود ۱۵٪ از توان سرور درگیر است و ۸۵٪ آن بیکار و آمادهباش است.
- مرز خطر: زمانی باید نگران شوید که این عدد به ۱۰.۰۰ نزدیک شود. الان در منطقه کاملاً امن هستید.
- اعداد شما:
- Uptime: سرور ۳ روز است که روشن است (بعد از آخرین ریستارت سختافزاری که داشتید).
۲. تحلیل جدول پایین (لیست پروسهها)
اینجا میبینید که دقیقاً چه چیزی منابع سرور را مصرف میکند. ستونهای مهم به ترتیب:
- PID: شماره شناسایی پروسه (مثل کد ملی برای هر برنامه).
- USER: نام کاربری که برنامه را اجرا کرده.
- میبینید که
velanet(یوزر سایت شما) بیشترین فعالیت را دارد.
- میبینید که
- PRI / NI: اولویتهای سیستمی (معمولاً نیازی نیست به اینها دست بزنید).
- VIRT / RES / SHR: مربوط به حافظه رم هستند.
- RES (مهم): مقدار رمی که برنامه واقعاً اشغال کرده است.
- S (وضعیت):
S: یعنی Sleep (خواب). برنامه منتظر است تا کاری به او سپرده شود.R: یعنی Running (در حال اجرا). برنامه دارد به شدت کار میکند.
- CPU% (درصد پردازنده):
- این عدد نشان میدهد چند درصد از یک هسته اشغال شده است.
- MEM% (درصد رم):
- مثلا هر پروسه PHP حدود ۱.۷٪ از کل رم سرور را گرفته است.
- TIME+:
- مدت زمانی که این پروسه از لحظه تولدش تا الان، CPU را مشغول کرده است.
- Command (دستور): نام برنامه.
php-fpm: pool mysite_ir: اینها همان بازدیدکنندگان سایت شما هستند! هر بار کسی سایت را باز میکند، یکی از اینها فعال میشود. وجود تعداد زیاد از این خط یعنی سایت بازدیدکننده دارد.redis-server: سرور ردیس که برای کش کردن استفاده میشود و فعال است (نشانه خوبی است).
برای اینکه بفهمید چند نفر در سایت شما هستند باید از شمارش تعداد IPهای یکتا (تعداد تقریبی افراد واقعی) استفاده کنید:
این دستور دقیقتر است. آیپیهای تکراری را حذف میکند و میگوید دقیقاً چند آیپی مختلف به پورت ۴۴۳ (HTTPS) وصل هستند.
netstat -anp | grep :443 | grep ESTABLISHED | awk '{print $5}' | cut -d: -f1 | sort | uniq | wc -l
- عددی که این دستور میدهد، بسیار نزدیک به تعداد افراد آنلاین واقعی در لحظه است.