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

سلام رفقا ?

امیدوارم حال‌تون خوب باشه ?

بدون شک یکی از کارایی که هر ادمین لینوکسی باید بلد باشه 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

کامند 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 -i
خروجی کامند lsof -i


du, df

این دوتا کامند برای مانیتورینگ disk usage استفاده میشن. با استفاده از df میتونید میزان استفاده از فضای فایل سیستم تون رو ببینید و du میزان حجم اشغال شده روی فایل سیستم رو بهتون میگه. (در واقع du تمام فایل های فایل سیستم رو میگرده و مقدار حجم اشغال شده توسط این فایل ها رو بهتون میگه)

خروجی کامند df
خروجی کامند df


اینا ابزار های بیسیکی بودن که تقریبا تو هر سیستم لینوکسی پیدا میشن. کامند های زیر هم واسه کارهای مختلف تو مانیتورینگ استفاده میشن.

  • free: مقدار حافظه ی آزاد و اشغال شده ی رم رو نشون میده
  • iotop: وضعیت I/O رو به صورت تعاملی مثل کامند top نشون میده
  • netstat: تقریبا هر اطلاعاتی در مورد وضعیت نتورک سیستم رو بهتون نشون میده
  • vmstat: وضعیت حافظه ی مجازی سیستم رو نشون میده
  • tcpdump: ترافیک ورودی شبکه تون رو آنالیز میکنه

الان میخوایم بریم سراغ ابزار هایی که کار مانیتورینگ رو تا حدودی راحت تر کردن و کمی هم بهش رنگ و لعاب دادن تا قشنگ تر به نظر برسه. این ابزار ها مثل یه پکیج از کامند هایی بودن که تا الان دیدیم. قبل از اون اینو بگم که به نظر من بهتره به عنوان یک ادمین لینوکس بیشتر بلد باشید با کامند های بیسیک لینوکس کار کنید. (این چیزیه که من درباره اش خوندم، و به نظرم حرف درستیه)

htop

بعد از کامند top شاید معروف ترین ابزار واسه مانیتورینگ سیستم به صورت تعاملی کامند htop باشه. htop یه محیطی شبیه top در اختیارتون قرار میده که از طریق اون میتونید اطلاعاتی در مورد سیستم تون (مثل میزان مصرف cpu، میزان مصرف ram و swap، لیست تسک ها و...) رو ببینید. تقریبا رو همه ی توزیع های لینوکس هم ران میشه.

 محیط htop
محیط htop


bpytop

ابزار bpytop هم مثل htop و top یه ابزار دیگه واسه ریسورس مانیتورینگ تو سیستم عامل هایی مثل لینوکس، BSD، مک او اس و... استفاده میشه و با زبان پایتون نوشته شده که امکانات زیادی رو در اختیارتون قرار میده.

نکته ای که در مورد bpytop بهتره بدونید اینه که نسخه ی قبلی این برنامه اسمش bashtop بود، ولی توسعه دهنده هاش توصیه میکنن از bpytop استفاده کنید.

محیط bpytop
محیط bpytop


glances

یکی دیگر از محبوب ترین ابزار های مانیتورینگ در لینوکس ابزار glances است. این برنامه هم مثل bpytop با پایتون نوشته شده. با استفاده از glances شما میتونید یه وب سرور راه اندازی کنید و از طریق یه وب بروزر سیستم تون رو مانیتور کنید. این یعنی شما میتونید حتی از طریق گوشی هم سیستم تون رو مانیتور کنید.

محیط glances در ترمینال
محیط glances در ترمینال
محیط glances روی وب بروزر گوشی
محیط glances روی وب بروزر گوشی


بازم میگم؛ ابزار های مونیتورینگ لینوکس خیلی زیادن. چه تو محیط CLI و چه محیط GUI. مهم تر از ابزاری که نصب میکنید اینه که بتونید اطلاعاتی که این برنامه ها بهتون میدن رو تحلیل و بررسی کنید و بر اساس تحلیل تون تصمیم بگیرید.


لینک گیت هاب htop

لینک گیت هاب bpytop

لینک گیت هاب glances

لینک گیت هاب خودم :)


خب امیدوارم که این مقاله براتون مفید بوده باشه. ?

اگه سوالی یا نظری داشتید بهم بگید. اگه کمکی از دستم بر بیاد خوشحال میشم بتونم کاری بکنم.

و...

شاد و خندون باشید. ?