نوشته های ذهن یه آدم عاشق لینوکس و برنامه نویسی
مانیتورینگ در لینوکس
سلام رفقا ?
امیدوارم حالتون خوب باشه ?
بدون شک یکی از کارایی که هر ادمین لینوکسی باید بلد باشه 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 اطلاعات مفیدی در مورد وضعیت سیستم بهتون میده. به طور مثال تو عکس بالا میتونیم وضعیت 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 هستش که لیست سوکت های نتورک رو بهتون نشون میده. باهاش میتونید پورت های باز و برنامه ای که از اون پورت استفاده میکنه رو ببینید.
du, df
این دوتا کامند برای مانیتورینگ disk usage استفاده میشن. با استفاده از df میتونید میزان استفاده از فضای فایل سیستم تون رو ببینید و du میزان حجم اشغال شده روی فایل سیستم رو بهتون میگه. (در واقع du تمام فایل های فایل سیستم رو میگرده و مقدار حجم اشغال شده توسط این فایل ها رو بهتون میگه)
اینا ابزار های بیسیکی بودن که تقریبا تو هر سیستم لینوکسی پیدا میشن. کامند های زیر هم واسه کارهای مختلف تو مانیتورینگ استفاده میشن.
- free: مقدار حافظه ی آزاد و اشغال شده ی رم رو نشون میده
- iotop: وضعیت I/O رو به صورت تعاملی مثل کامند top نشون میده
- netstat: تقریبا هر اطلاعاتی در مورد وضعیت نتورک سیستم رو بهتون نشون میده
- vmstat: وضعیت حافظه ی مجازی سیستم رو نشون میده
- tcpdump: ترافیک ورودی شبکه تون رو آنالیز میکنه
الان میخوایم بریم سراغ ابزار هایی که کار مانیتورینگ رو تا حدودی راحت تر کردن و کمی هم بهش رنگ و لعاب دادن تا قشنگ تر به نظر برسه. این ابزار ها مثل یه پکیج از کامند هایی بودن که تا الان دیدیم. قبل از اون اینو بگم که به نظر من بهتره به عنوان یک ادمین لینوکس بیشتر بلد باشید با کامند های بیسیک لینوکس کار کنید. (این چیزیه که من درباره اش خوندم، و به نظرم حرف درستیه)
htop
بعد از کامند top شاید معروف ترین ابزار واسه مانیتورینگ سیستم به صورت تعاملی کامند htop باشه. htop یه محیطی شبیه top در اختیارتون قرار میده که از طریق اون میتونید اطلاعاتی در مورد سیستم تون (مثل میزان مصرف cpu، میزان مصرف ram و swap، لیست تسک ها و...) رو ببینید. تقریبا رو همه ی توزیع های لینوکس هم ران میشه.
bpytop
ابزار bpytop هم مثل htop و top یه ابزار دیگه واسه ریسورس مانیتورینگ تو سیستم عامل هایی مثل لینوکس، BSD، مک او اس و... استفاده میشه و با زبان پایتون نوشته شده که امکانات زیادی رو در اختیارتون قرار میده.
نکته ای که در مورد bpytop بهتره بدونید اینه که نسخه ی قبلی این برنامه اسمش bashtop بود، ولی توسعه دهنده هاش توصیه میکنن از bpytop استفاده کنید.
glances
یکی دیگر از محبوب ترین ابزار های مانیتورینگ در لینوکس ابزار glances است. این برنامه هم مثل bpytop با پایتون نوشته شده. با استفاده از glances شما میتونید یه وب سرور راه اندازی کنید و از طریق یه وب بروزر سیستم تون رو مانیتور کنید. این یعنی شما میتونید حتی از طریق گوشی هم سیستم تون رو مانیتور کنید.
بازم میگم؛ ابزار های مونیتورینگ لینوکس خیلی زیادن. چه تو محیط CLI و چه محیط GUI. مهم تر از ابزاری که نصب میکنید اینه که بتونید اطلاعاتی که این برنامه ها بهتون میدن رو تحلیل و بررسی کنید و بر اساس تحلیل تون تصمیم بگیرید.
خب امیدوارم که این مقاله براتون مفید بوده باشه. ?
اگه سوالی یا نظری داشتید بهم بگید. اگه کمکی از دستم بر بیاد خوشحال میشم بتونم کاری بکنم.
و...
شاد و خندون باشید. ?
مطلبی دیگر از این انتشارات
پردازش تصویر در پایتون ( قسمت دوم )
مطلبی دیگر از این انتشارات
تغییرات راهنمای اسکرام از 2017 به 2020
مطلبی دیگر از این انتشارات
طراحی یه سیستم کوتاه کننده لینک ساده [قسمت دوم: احراز هویت و نحوه ذخیره سازی بازدید]