مانیتورینگ در لینوکس

سلام رفقا ?امیدوارم حال‌تون خوب باشه ?بدون شک یکی از کارایی که هر ادمین لینوکسی باید بلد باشه system monitoring هستش. یعنی اینکه شما بتونید روی یک سیستم لینوکسی وضعیت استفاده ی سیستم از منابع مختلف (مثل cpu, ram, I/O,...) رو بررسی و تحلیل کنید.منم چند وقته چندتا ابزار خفن برای اینکار پیدا کردم و به نظرم اومد که معرفی اینا میتونه بهونه ی مناسبی واسه نوشتن یه مقاله باشه ?اول با ابزار های بیسیک شروع میکنیم، ولی قبل از اون اینم بگم که ابزار های مانیتورینگ واسه لینوکس خیلی زیاد پیدا میشه ولی اینجا من میخوام روی چندتا از این ابزار ها که تو محیط CLI میشه ازشون استفاده کرد حرف بزنم. پس بریم که داشته باشیم...psکامند ps برمیگرده به زمان unix! از پایه ترین و قدیمی ترین ابزار های مانیتورینگ هستش و از هر ادمین لینوکسی هم انتظار میره که بلد باشه وضعیت تسک های روی سیستم رو با ps چک کنه.mr@Legion:~$ ps PID TTY TIME CMD 7640 pts/1 00:00:00 bash 7717 pts/1 00:00:00 psکامند ps آپشن های مختلفی داره که هر کدوم‌شون کار خاصی انجام میدن. اگه بدون هیچ آرگومانی دستور ps رو وارد کنید‌ (مثال بالا) تسک هایی که توی shell فعلی تون دارن اجرا میشن رو بهتون نشون میده.معروف ترین آپشن های ps اینا هستن که تمام تسک های در حال اجرا رو تو خروجی چاپ میکنن:$ ps -el$ ps -auxآپشن el با فرمت استاندارد یونیکس خروجی رو چاپ میکنه ولی aux با فرمت BSD خروجی رو چاپ میکنه.توصیه میکنم آپشن های کامند ps رو از man page اش بخونید.کامند pstree مشابه ps عمل میکنه فقط خروجی رو به صورت یک نمودار درختی چاپ میکنه.topیکی دیگه از قدیمی ترین ابزار های مانیتورینگ لینوکس دستور top هستش. با استفاده از دستور top شما میتونید به صورت تعاملی تسک های سیستم رو بررسی کنید و اونا رو مدیریت کنید.محیط topکامند top اطلاعات مفیدی در مورد وضعیت سیستم بهتون میده. به طور مثال تو عکس بالا میتونیم وضعیت cpu، وضعیت حافظه ram، وضعیت حافظه swap، تعداد کل تسک ها و خیلی چیزای دیگه رو ببینیم. با کامند top حتی میتونیم به صورت تعاملی یک سیگنال KILL یا TERM یا هر سیگنالی به تسک ها بفرستیم و اونا رو متوقف و یا kill کنیم.در کل کارای زیادی میشه با کامند top انجام داد. ولی بعضی از این کارا نیاز به دسترسی root داره.lsofکسایی که با لینوکس آشنا هستن این مفهوم رو خوب درک میکنن که « تو لینوکس هر چیزی یا یه فایله، یا یه تسک (process) »فایل ها میتونن یه تکست فایل معمولی باشن یا میتونن دایرکتوری، نتورک سوکت، بلاک دیوایس و... باشن.کامند lsof لیست فایل هایی که در حال حاضر باز هستن رو بهتون نشون میده.# lsof COMMAND PID TID TASKCMD USER FD TYPE DEVICE SIZE/OFF NODE NAME systemd 1 root cwd DIR 8,3 4096 2 / systemd 1 root rtd DIR 8,3 4096 2 / systemd 1 root txt REG 8,3 1620224 917813 /usr/lib/systemd/systemd systemd 1 root mem REG 8,3 1369352 919687 /usr/lib/x86_64-linux-gnu/libm-2.31.so systemd 1 root mem REG 8,3 178528 919871 /usr/lib/x86_64-linux-gnu/libudev.so.1.6.17 systemd 1 root mem REG 8,3 1575112 927089 /usr/lib/x86_64-linux-gnu/libunistring.so.2.1.0 systemd 1 root mem REG 8,3 137584 926312 /usr/lib/x86_64-linux-gnu/libgpg-error.so.0.28.0 systemd 1 root mem REG 8,3 67912 918134 /usr/lib/x86_64-linux-gnu/libjson-c.so.4.0.0 systemd 1 root mem REG 8,3 34872 925845 /usr/lib/x86_64-linux-gnu/libargon2.so.1 ...یکی از کاربرد های lsof آپشن -i هستش که لیست سوکت های نتورک رو بهتون نشون میده. باهاش میتونید پورت های باز و برنامه ای که از اون پورت استفاده میکنه رو ببینید.خروجی کامند lsof -idu, dfاین دوتا کامند برای مانیتورینگ disk usage استفاده میشن. با استفاده از df میتونید میزان استفاده از فضای فایل سیستم تون رو ببینید و du میزان حجم اشغال شده روی فایل سیستم رو بهتون میگه. (در واقع du تمام فایل های فایل سیستم رو میگرده و مقدار حجم اشغال شده توسط این فایل ها رو بهتون میگه)خروجی کامند dfاینا ابزار های بیسیکی بودن که تقریبا تو هر سیستم لینوکسی پیدا میشن. کامند های زیر هم واسه کارهای مختلف تو مانیتورینگ استفاده میشن.free: مقدار حافظه ی آزاد و اشغال شده ی رم رو نشون میدهiotop: وضعیت I/O رو به صورت تعاملی مثل کامند top نشون میدهnetstat: تقریبا هر اطلاعاتی در مورد وضعیت نتورک سیستم رو بهتون نشون میدهvmstat: وضعیت حافظه ی مجازی سیستم رو نشون میدهtcpdump: ترافیک ورودی شبکه تون رو آنالیز میکنهالان میخوایم بریم سراغ ابزار هایی که کار مانیتورینگ رو تا حدودی راحت تر کردن و کمی هم بهش رنگ و لعاب دادن تا قشنگ تر به نظر برسه. این ابزار ها مثل یه پکیج از کامند هایی بودن که تا الان دیدیم. قبل از اون اینو بگم که به نظر من بهتره به عنوان یک ادمین لینوکس بیشتر بلد باشید با کامند های بیسیک لینوکس کار کنید. (این چیزیه که من درباره اش خوندم، و به نظرم حرف درستیه)htopبعد از کامند top شاید معروف ترین ابزار واسه مانیتورینگ سیستم به صورت تعاملی کامند htop باشه. htop یه محیطی شبیه top در اختیارتون قرار میده که از طریق اون میتونید اطلاعاتی در مورد سیستم تون (مثل میزان مصرف cpu، میزان مصرف ram و swap، لیست تسک ها و...) رو ببینید. تقریبا رو همه ی توزیع های لینوکس هم ران میشه. محیط htopbpytopابزار bpytop هم مثل htop و top یه ابزار دیگه واسه ریسورس مانیتورینگ تو سیستم عامل هایی مثل لینوکس، BSD، مک او اس و... استفاده میشه و با زبان پایتون نوشته شده که امکانات زیادی رو در اختیارتون قرار میده.نکته ای که در مورد bpytop بهتره بدونید اینه که نسخه ی قبلی این برنامه اسمش bashtop بود، ولی توسعه دهنده هاش توصیه میکنن از bpytop استفاده کنید.محیط bpytopglancesیکی دیگر از محبوب ترین ابزار های مانیتورینگ در لینوکس ابزار glances است. این برنامه هم مثل bpytop با پایتون نوشته شده. با استفاده از glances شما میتونید یه وب سرور راه اندازی کنید و از طریق یه وب بروزر سیستم تون رو مانیتور کنید. این یعنی شما میتونید حتی از طریق گوشی هم سیستم تون رو مانیتور کنید.محیط glances در ترمینالمحیط glances روی وب بروزر گوشیبازم میگم؛ ابزار های مونیتورینگ لینوکس خیلی زیادن. چه تو محیط CLI و چه محیط GUI. مهم تر از ابزاری که نصب میکنید اینه که بتونید اطلاعاتی که این برنامه ها بهتون میدن رو تحلیل و بررسی کنید و بر اساس تحلیل تون تصمیم بگیرید.لینک گیت هاب htopلینک گیت هاب bpytopلینک گیت هاب glancesلینک گیت هاب خودم :)خب امیدوارم که این مقاله براتون مفید بوده باشه. ?اگه سوالی یا نظری داشتید بهم بگید. اگه کمکی از دستم بر بیاد خوشحال میشم بتونم کاری بکنم.و...شاد و خندون باشید. ?