ابزارهای Sysstat در لینوکس، آموزش کامل مانیتورینگ حرفه‌ای عملکرد سیستم

آموزش Sysstat در لینوکس

مانیتورینگ عملکرد سیستم در لینوکس یکی از مهمترین وظایف مدیران سرور و متخصصان DevOps است. در راهنمای آموزش Sysstat در لینوکس، یاد می‌گیریم چگونه مصرف CPU، حافظه، دیسک و پردازش‌ها را به‌صورت حرفه‌ای بررسی کنیم. زمانی که سرور با کندی، مصرف بالای CPU، فشار روی دیسک یا مشکلات I/O مواجه می‌شود، تشخیص دقیق منبع مشکل بدون ابزار مناسب تقریبا غیرممکن خواهد بود.

بسیاری از کاربران لینوکس تنها از دستوراتی مانند top یا htop استفاده می‌کنند، اما این ابزارها فقط وضعیت لحظه‌ای سیستم را نمایش می‌دهند و برای تحلیل حرفه‌ای عملکرد سرور کافی نیستند. ابزارهای Sysstat مانند iostat، pidstat، mpstat و sar اطلاعات بسیار دقیق‌تری از وضعیت واقعی سیستم ارائه می‌دهند و برای عیب‌یابی حرفه‌ای سرورها ضروری هستند.

در این مطلب به‌صورت کامل با ابزارهای Sysstat در لینوکس آشنا می‌شویم و یاد می‌گیریم چگونه به صورت حرفه‌ای عملکرد سرور را مانیتور کنیم.

Sysstat چیست و چرا اهمیت دارد؟

Sysstat مجموعه‌ای از ابزارهای مانیتورینگ لینوکس است که اطلاعات دقیقی درباره عملکرد سیستم جمع‌آوری و تحلیل می‌کند.

این ابزارها می‌توانند موارد زیر را بررسی کنند:

  • مصرف CPU
  • وضعیت دیسک و I/O
  • پردازش‌های سنگین
  • مصرف حافظه
  • وضعیت شبکه
  • Load Average
  • صف پردازش‌ها
  • فعالیت تاریخی سیستم

برخلاف ابزارهایی مثل top که فقط وضعیت فعلی را نمایش می‌دهند، Sysstat امکان تحلیل بازه‌های زمانی مختلف را نیز فراهم می‌کند. این ویژگی هنگام بررسی مشکلات مقطعی سرور بسیار ارزشمند است.

نصب Sysstat در لینوکس

در بسیاری از توزیع‌های لینوکس، Sysstat به‌صورت پیشفرض نصب نیست و باید آن را نصب کنید.

نصب در Debian و Ubuntu

sudo apt install sysstat

نصب در RHEL و CentOS

sudo dnf install sysstat

نصب در Arch Linux

sudo pacman -S sysstat

بررسی نسخه نصب‌شده

mpstat -V

نمونه خروجی:

sysstat version 12.6.1

نسخه‌های جدیدتر معمولا امکانات بیشتری برای مانیتورینگ دارند.

ابزار mpstat برای بررسی CPU

ابزار mpstat برای مشاهده وضعیت CPU و هسته‌های پردازنده استفاده می‌شود.

این ابزار مخصوص زمانی است که می‌خواهید بفهمید فشار پردازشی روی کدام Core قرار دارد.

مشاهده وضعیت کلی CPU

mpstat

خروجی شامل اطلاعاتی شبیه به تصویر زیر خواهد بود.

دستور mpstat در لینوکس

ستون iowait% اولین بخشی است که باید بررسی شود، زیرا هر مقداری که به‌صورت مداوم بالاتر از ۱۰ تا ۱۵ درصد باشد، نشان می‌دهد سیستم در انتظار عملیات خواندن یا نوشتن روی دیسک متوقف شده است و افزایش منابع CPU کمکی به رفع مشکل نخواهد کرد.

همچنین ستون soft% مدت‌زمان صرف‌شده در پردازش وقفه‌های نرم‌افزاری را نمایش می‌دهد. افزایش ناگهانی این مقدار معمولا نشان‌دهنده اشباع شدن رابط شبکه است، نه وجود مشکل در توان پردازشی سیستم.

اگر مقدار idle% پایین باشد یعنی CPU درگیر پردازش است.

مشاهده وضعیت تمام هسته‌ها

mpstat -P ALL 1

این دستور هر یک ثانیه وضعیت تمام Coreها را نمایش می‌دهد.

نمونه خروجی:

دستور mpstat -P ALL 1 در لینوکس

اگر یک هسته فشار بسیار بیشتری نسبت به بقیه داشته باشد، احتمالا یک پردازش Single Thread عامل مشکل است.

در این خروجی مشاهده می‌شود که تمامی هسته‌های پردازنده در بازه زمانی بررسی‌شده تقریبا به‌طور کامل در وضعیت Idle قرار دارند و مقدار idle% روی ۱۰۰ درصد ثبت شده است. این موضوع نشان می‌دهد که در حال حاضر هیچ فشار پردازشی قابل‌توجهی روی سیستم وجود ندارد و CPU عملا بدون بار کاری فعال است.

همچنین مقادیر usr، %sys% و iowait% برای تمام هسته‌ها صفر هستند، بنابراین نه پردازش سنگینی در حال اجراست، نه سیستم درگیر عملیات I/O دیسک است و نه وقفه‌های سیستمی فشار خاصی ایجاد کرده‌اند.

به‌طور کلی این خروجی بیانگر یک سیستم کاملا پایدار، بدون بار پردازشی و با منابع آزاد کافی است.

بررسی حرفه‌ای پردازش‌ها با pidstat

ابزار pidstat برای مانیتورینگ پردازش‌ها استفاده می‌شود.

برخلاف top که فقط وضعیت فعلی را نشان می‌دهد، pidstat می‌تواند تغییرات مصرف منابع را در بازه زمانی تحلیل کند.

مشاهده مصرف CPU پردازش‌ها

pidstat 1

این دستور هر یک ثانیه وضعیت پردازش‌ها را نمایش می‌دهد.

دستور pidstat 1

خروجی pidstat نشان می‌دهد که در بازه زمانی بررسی‌شده، هیچ پردازش سنگین یا غیرعادی روی سیستم در حال اجرا نبوده است و میزان مصرف CPU تقریبا در پایین‌ترین حالت ممکن قرار دارد. تنها پردازش‌هایی که مصرف جزئی CPU داشته‌اند، خود ابزار pidstat و پردازش کرنلی rcu_preempt هستند که هرکدام تنها حدود ۱ درصد از CPU را مصرف کرده‌اند. همچنین مقدار wait% برابر صفر است که نشان می‌دهد پردازش‌ها در انتظار منابعی مانند دیسک یا I/O نبوده‌اند. در مجموع، این خروجی بیانگر یک سیستم پایدار، کم‌بار و بدون گلوگاه پردازشی یا I/O است.

بررسی مصرف حافظه

pidstat -r 1

دستور pidstat -r 1

خروجی pidstat -r نشان می‌دهد که در زمان بررسی، هیچ پردازشی مصرف قابل‌توجهی از حافظه نداشته است و وضعیت RAM سیستم کاملا پایدار بوده است. تنها پردازش فعال ثبت‌شده، خود ابزار pidstat است که تنها حدود ۳ مگابایت حافظه RSS مصرف می‌کند و سهم آن از حافظه سیستم فقط ۰.۰۸% است. همچنین مقدار majflt/s برابر صفر است، به این معنا که هیچ Page Fault سنگینی رخ نداده و سیستم نیازی به بارگذاری صفحات حافظه از دیسک نداشته است. مقدار بسیار پایین minflt/s نیز نشان‌دهنده دسترسی عادی و سبک به حافظه است. در مجموع، این خروجی نشان می‌دهد که سیستم تحت فشار حافظه قرار ندارد و عملکرد RAM در وضعیت کاملا نرمال قرار دارد.

بررسی I/O پردازش‌ها

pidstat -d 1

دستور pidstat -d 1

این بخش بسیار مهم است چون مشخص می‌کند کدام Process باعث فشار روی دیسک شده است.

در این خروجی pidstat -d مشاهده می‌شود که در لحظه بررسی، یک فرآیند با نام bash (با PID 20469) باعث ایجاد بار قابل‌توجه روی دیسک شده است. این پردازش حدود ۱,۰۴۸,۵۷۶ KB/s (معادل تقریبا 1GB/s) عملیات نوشتن روی دیسک انجام داده که مقدار بسیار بالایی برای I/O محسوب می‌شود. در همین زمان مقدار kB_rd/s صفر است، بنابراین فعالیت اصلی مربوط به نوشتن بوده و نه خواندن داده. همچنین مقدار iodelay صفر گزارش شده که نشان می‌دهد در این لحظه تاخیر یا صف انتظار قابل‌توجهی در سطح I/O ثبت نشده است. در مجموع، این خروجی نشان‌دهنده ایجاد یک فشار سنگین و لحظه‌ای روی دیسک توسط یک فرآیند نوشتاری است.

مانیتور کردن یک پردازش خاص

pidstat -p 20469 1

در این مثال فقط Process با PID برابر ۲۰۴۶۹ بررسی می‌شود.

خروجی pidstat -p 20469 1 نشان می‌دهد که فرآیند bash در بازه زمانی بررسی‌شده هیچ‌گونه مصرف قابل‌توجهی از CPU نداشته است. مقادیر usr% و system% در تمام نمونه‌ها صفر بوده‌اند و در نتیجه CPU% نیز کاملا صفر گزارش شده است. همچنین مقدار wait% برابر صفر است که نشان می‌دهد این پردازش در هیچ لحظه‌ای منتظر منابع CPU یا I/O نبوده است. در مجموع، این خروجی بیانگر یک فرآیند کاملا بیکار (idle) است که در حال حاضر هیچ بار پردازشی روی سیستم ایجاد نمی‌کند و روی یک هسته مشخص بدون فعالیت در حال قرار دارد.

آموزش کامل iostat برای بررسی دیسک و I/O

یکی از مهم‌ترین ابزارهای Sysstat دستور iostat است.

زمانی که سرور کند می‌شود، در بسیاری از موارد مشکل از Disk I/O است نه CPU.

اجرای iostat

iostat

مانیتورینگ حرفه‌ای دیسک

iostat -xz 1

این دستور اطلاعات بسیار مهمی نمایش می‌دهد.

دستور iostat -xz 1

اگر util% نزدیک ۱۰۰ باشد یعنی دیسک اشباع شده است.

خروجی iostat -xz 1 نشان می‌دهد که در بازه زمانی اول، سیستم دارای فعالیت I/O نسبتا سبک تا متوسط روی دیسک vda بوده است. در این بخش، هم عملیات خواندن (r/s) و هم نوشتن (w/s) مشاهده می‌شود و مقدار wkB/s نسبت به خواندن بالاتر است که نشان‌دهنده غالب بودن عملیات نوشتاری است. مقدار iowait% در سطح کلی سیستم بسیار پایین (۰.۰۴%) است که نشان می‌دهد CPU تقریبا هیچ زمانی را در انتظار دیسک سپری نکرده و گلوگاه I/O وجود ندارد. همچنین مقدار util% برای دیسک‌ها پایین است که نشان می‌دهد دیسک در حالت اشباع قرار ندارد و ظرفیت پردازش I/O هنوز کاملا آزاد است.

در نمونه دوم خروجی، سیستم به حالت کاملا Idle وارد شده و تمام مقادیر CPU از جمله user، %system% و iowait% به صفر رسیده‌اند و تنها idle% برابر ۱۰۰% است. همچنین هیچ فعالیت خواندن یا نوشتن روی دیسک‌ها ثبت نشده که نشان می‌دهد در این لحظه سیستم کاملا بدون بار کاری I/O در حال اجراست.

مفهوم await

این عدد نشان می‌دهد درخواست‌های I/O چقدر منتظر می‌مانند.

مثلا:

await = 150ms

عدد بالایی محسوب می‌شود و معمولا نشان‌دهنده فشار زیاد روی Storage است.

تشخیص Bottleneck دیسک

اگر این دو مورد همزمان بالا باشند:

%iowait
%util

تقریبا مطمئن هستید مشکل از دیسک است.

آموزش کامل sar در لینوکس

ابزار sar مهمترین بخش Sysstat محسوب می‌شود.

مزیت اصلی sar این است که اطلاعات را ذخیره می‌کند و امکان تحلیل تاریخی می‌دهد.

یعنی می‌توانید ببینید مثلا ساعت ۳ صبح چه اتفاقی روی سرور افتاده است.

فعال‌سازی سرویس sysstat

در Debian و Ubuntu:

sudo systemctl enable sysstat
sudo systemctl start sysstat

بررسی مصرف CPU با sar

sar -u 1 5

این دستور هر یک ثانیه و در ۵ مرحله وضعیت CPU را نمایش می‌دهد.

دستور sar در لینوکس

بررسی RAM

sar -r 1 5

بررسی Load Average

sar -q 1 5

این دستور موارد مهمی مثل Load Average، Run Queue و Process Blocking را نمایش می‌دهد که به کمک آن‌ها می‌توان وضعیت کلی بار پردازشی سیستم، میزان صف انتظار پردازنده و تعداد پردازش‌های در حالت انتظار یا مسدود را بررسی و تحلیل کرد.

اگر runq-sz از تعداد CPU بیشتر باشد یعنی پردازنده تحت فشار است.

بررسی وضعیت شبکه

sar -n DEV 1 5

این دستور میزان مصرف و فعالیت کارت شبکه را به‌صورت لحظه‌ای نمایش می‌دهد و برای مانیتورینگ ترافیک ورودی و خروجی شبکه بسیار کاربردی است. در خروجی این دستور، ستون‌های مهمی مانند rxkB/s و txkB/s وجود دارند که به ترتیب مقدار داده دریافتی و ارسال‌شده از هر اینترفیس شبکه را بر حسب کیلوبایت بر ثانیه نشان می‌دهند. بررسی این مقادیر کمک می‌کند تا بتوان الگوهای ترافیکی سیستم را تحلیل کرده و در صورت وجود ترافیک غیرعادی، افزایش ناگهانی مصرف پهنای باند یا فعالیت مشکوک شبکه را شناسایی کرد.

بررسی دیسک با sar

sar -d 1 5

این دستور وضعیت عملکرد دیسک‌ها را به‌صورت لحظه‌ای نمایش می‌دهد و از نظر کاربردی شباهت زیادی به iostat دارد. با استفاده از این خروجی می‌توان میزان فعالیت خواندن و نوشتن، زمان پاسخ‌دهی و فشار وارد بر هر دیسک را بررسی کرد. یکی از مهمترین ستون‌ها در این گزارش، util% است که میزان درگیری یا اشباع بودن دیسک را نشان می‌دهد، به‌طوری که مقادیر نزدیک به ۱۰۰٪ بیانگر استفاده کامل از ظرفیت دیسک و احتمال ایجاد گلوگاه در I/O هستند. این اطلاعات برای تحلیل مشکلات کندی سیستم و شناسایی محدودیت‌های ذخیره‌سازی بسیار کاربردی است.

بررسی تاریخی عملکرد سرور

یکی از مهم‌ترین قابلیت‌های sar بررسی داده‌های ذخیره‌شده قبلی است.

فایل‌های لاگ معمولا در مسیر زیر ذخیره می‌شوند:

/var/log/sa/

مشاهده گزارش دیروز

sar -u -f /var/log/sa/sa20

عدد ۲۰ نشان‌دهنده روز ماه است.

تفاوت ابزارهای Sysstat

هر ابزار وظیفه خاصی دارد و باید در جای درست استفاده شود.

برای تحلیل CPU و هسته‌ها

mpstat

برای بررسی پردازش‌ها

pidstat

برای تحلیل دیسک و I/O

iostat

برای مانیتورینگ کلی و تاریخی سیستم

sar

ترکیب این ابزارها دید بسیار دقیقی از وضعیت واقعی سرور ارائه می‌دهد.

چرا Sysstat از top حرفه‌ای‌تر است

ابزار top تنها یک تصویر لحظه‌ای از وضعیت سیستم ارائه می‌دهد، در حالی که مجموعه ابزارهای Sysstat امکان تحلیل داده‌ها در بازه‌های زمانی مختلف را فراهم می‌کنند. این ابزارها علاوه بر ارائه اطلاعات دقیق‌تر، قابلیت بررسی روندهای گذشته را هم دارند و برای مانیتورینگ محیط‌های پروداکشن بسیار مناسب هستند. همچنین امکان تحلیل تخصصی I/O، CPU و سایر منابع سیستم را فراهم می‌کنند، این ابزارها کمک می‌کنند علت اصلی مشکلات سیستم راحت‌تر شناسایی شود. به همین دلیل Sysstat یکی از ابزارهای پرکاربرد در دیتاسنترها و زیرساخت‌های سازمانی به شمار می‌آید.

  • تحلیل تاریخی دارد
  • اطلاعات دقیق‌تر ارائه می‌دهد
  • مناسب مانیتورینگ Production است
  • قابلیت بررسی تخصصی I/O دارد
  • برای تحلیل علل ریشه‌ای (Root cause analysis-RCA) بسیار کاربردی است

جمع‌بندی

ابزارهای Sysstat یکی از مهمترین ابزارهای مانیتورینگ لینوکس محسوب می‌شوند که یادگیری آنها برای هر مدیر سرور ضروری است.

اگر فقط از top استفاده می‌کنید، بخش بزرگی از اطلاعات واقعی سیستم را از دست می‌دهید. ابزارهایی مانند iostat، pidstat، mpstat و sar می‌توانند گلوگاه (Bottleneck) واقعی سرور را مشخص نموده و فرآیند عیب‌یابی را بسیار سریع‌تر کنند. برای مانیتورینگ حرفه‌ای لینوکس، یادگیری Sysstat یک مهارت کلیدی و ضروری است.

نوشتن نظر

نوشتن دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *