۲۰ ابزار مانیتورینگ سیستم لینوکس که هر مدیر سیستمی باید با آن آشنا باشد

نیاز به نظارت بر عملکرد سیستم لینوکس دارید؟ دستورات و برنامه های زیر را آزمایش کنید. اکثر توزیع های لینوکس به تعداد زیادی از ابزار مانیتورینگ سیستم مجهز هستند. تعدادی از این ابزار  رو نیز باید خود اقدام به نصب آنها کنید. شما از این ابزار می توانید برای پیدا کردن علل احتمالی یک مشکل در عملکرد سیستم استفاده کنید.

۱- top — میزان فعالیت یک پروسه

برنامه top ابزاری است برای نشان دادن وضعیت پروسه های فعال به صورت آنی و پویا. به صورت پیشفرض لیست برنامه هایی که بیشترین میزان مصرف cpu را دارند نشان داده می‌شود. این لیست هر ۵ ثانیه به روز میشود.

Fig.01: Linux top command

برای اجرا شدن برنامه در ترمینال دستور top را  در ترمینال وارد کنید. در هنگام فعال بودن برنامه شما می توانید از کلیدهای زیر استفاده کنید.

کلیدهای مهم در هنگام استفاده از برنامه top

t وظیفه خاموش و روشن کردن قسمت مربوط به نمایش اطلاعات خلاصه را دارد. این اطلاعات به صورت زیر نمایش داده می‌شود.

Tasks: 180 total,   ۲ running, 178 sleeping,   ۰ stopped,   ۰ zombie

m وظیفه خاموش و روشن کردن قسمت مربوط به اطلاعات حافظه است. این اطلاعات به صورت زیر نشان داده می‌‌شود.

Mem:   ۳۹۹۳۱۸۰k total,  ۳۹۶۳۸۵۲k used,    ۲۹۳۲۸k free,   ۳۱۷۶۷۶k buffers
Swap:   ۸۱۱۲۰۸k total,     ۳۵۳۲k used,   ۸۰۷۶۷۶k free,  ۲۳۸۷۵۵۶k cached

a مرتب کردن اطلاعات براساس بیشترین میزان مصرف منابع سیستم.  برای شناسایی سریع برنامه هایی که بیشترین مصرف رو دارند این گزینه عالی هست.

f وارد محیطی می شوید که قادر هستید برنامه top رو تنظیم و پیکربندی کنید. اینکه چه ستون هایی در برنامه top به شما نشان داده بشه، از این قسمت قابل کنترل هست (ستون های نمایش داده شده در برنامه کنارشون یک علامت ستاره قرار دارد). همینطور مخفف تمام ستون‌ها در اینجا نمایش داده می‌شود. برای خارج شدن  از Esc استفاده کنید.

k برای کشتن یک برنامه از این حرف استفاده کنید. بعد از وارد کردن این حرف باید آی دی پروسه ای که قصد نابود کردنش را دارید وارد کنید.

z برای روشن و خاموش کردن رنگ

q برای خارج شدن از برنامه از این حرف استفاده کنید.

اطلاعات بیشتر

۲- vmstat — بررسی فعالیت سیستم، سخت افزار و اطلاعات سیستم

فرمان vmstat اطلاعات در مورد پروسه‌ها، حافظه، صفحه بندی،‌ بلوک IO و فعالیت cpu را گزارش می‌دهد.

vmstat 3

خروجی نمونه:

vmstat3

نمایش استفاده از حافظه Slabinfo

vmstat -m

دریافت اطلاعات در مورد فعال یا غیرفعال بودن حافظه صفحات

vmstat -a

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

vmstat -d

اطلاعات بیشتر

۳- w– پیدا کردن اینکه چه کسی به سیستم متصل است و چه کاری انجام داده است؟

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

w username

w enghezi

خروجی نمونه:

w-enghezi

۴- uptime– چه مدت سیستم در حال کار است؟

از این دستور می توان مدت زمانی را که سرور در حال کار است را بدست آورد. این دستور اطلاعات مربوط به زمان جاری، مدت زمان کار ماشین، تعداد کاربران متصل به سیستم و متوسط بار سیستم در یک، پنج و ۱۵ دقیقه گذشته را می‌توان بدست آورد.

uptime

خروجی:

uptime

عدد یک برای متوسط بار به عنوان مقدار بار مطلوب در نظر گرفته شود. این عدد برای سیستم با سیستم فرق می‌کند. برای سیستم تک هسته‌ای این عدد از یک تا سه و برای پردازشگر با قابلیت SMP این عدد ۶ تا ۱۰است.

۵- ps — نمایش پروسه‌ها

دستور ps پروسه های جاری را به صورت ثابت و یک عکس به ما نشان می دهد. بر خلاف دستور top که این عمل را به صورت پویا نشان می‌داد. برای نشان دادن همه پروسه‌ها ما از آرگومان A و یا e استفاده می‌کنیم.

ps -A

نمونه خروجی:

ps-A

ps مشابه دستور top است با این تفاوت که می تواند اطلاعات بیشتری را به ما نشان دهد.

نمایش خروجی به فرمت بلند

ps -Al

نمونه خروجی:

ps-Al

برای روشن کردن حالت فول و کامل (در این حالت آدرس دقیق پروسه‌ای که در حال اجراست نمایش داده می‌شود)

ps -AlF

نمونه خروجی:

ps-AlF

برای نمایش Treads ( منظور همان LWP و NLWP)

ps -AlFH

نمونه خروجی:

ps-AlFH

نمایش Treads بعد از انجام پردازش‌ها

ps -AlLm

نمونه خروجی:

ps-AlLm

نسخه قابل چاپ همه پروسه‌ها بر روی سرور

ps ax

نمونه خروجی:

ps ax

ps axu

نمونه خروجی:

ps aux

نسخه قابل چاپ پروسه به صورت سلسله مراتبی(درختی)

ps -ejH

نمونه خروجی:

ps -ejH

ps axjf

نمونه خروجی:

ps axjf

pstree

نمونه خروجی:

pstree

نسخه قابل چاپ امنیتی

ps -eo euser,ruser,suser,fuser,f,comm,label

نمونه خروجی:

ps -eo euser,ruser,suser,fuser,f,comm,label

ps axZ

نمونه خروجی:

ps axZ

ps -eM

مشاهده تمام پروسه‌هایی که متعلق به کاربر enghezi می‌باشد

ps -U enghezi -u enghezi u

تنظیم خروجی در یک قالب تعریف شده توسط کاربر

ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm
ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
ps -eopid,tt,user,fname,tmout,f,wchan

نمایش شماره پروسه‌ برنامه (در اینجا می‌خواهیم شماره پروسه برنامه فایرفاکس را پیدا کنیم)

ps -C firefox -o pid=

یا

pgrep firefox

یا

pgrep -u enghezi firefox

نمایش نام پروسه‌ای که آی‌دی اون ۴۴۳۹ باشد. (خروجی اسم برنامه رو می‌ده)

ps -p 4439 -o comm=

نمایش ۱۰ پروسه‌ای که بیشترین میزان مصرف حافظه رو دارند

ps -auxf | sort -nr -k 4 | head -10

نمایش ۱۰ پروسه‌ای که بیشترین میزان مصرف پردازشگر رو دارند

ps -auxf | sort -nr -k 3 | head -10

۶- free — میزان استفاده  از حافظه

این دستور میزان کل، آزاد و اشغال شده حافظه اصلی و مجازی (سوپ) رو به ما نشون می‌ده. همچنین می‌توانیم میزان بافری رو که توسط کرنل اشغال شده رو ببینیم.

نمونه خروجی:

free

اطلاعات بیشتر: یک و دو و سه

۷- iostat —  متوسط بار پردازشگر و فعالیت دیسک

دستور iostat آمار مربوط به پردازشگر و آمار مربوط به خواندن و نوشتن ابزاری همچون پارتیشن و NFS را به ما نشان می‌هد.

نمونه خروجی:

iostat

اطلاعات بیشتر

۸- sar– جمع آوری و گزارش فعالیت سیستم

فرمان sar برای جمع آوری، گزارش و ذخیره اطلاعات مربوط به سیستم مورد استفاده قرار می‌گیرد. (دو دستور زیر رو سیستم من اجرا نشد!)

sar -n DEV | more
sar -n DEV -f /var/log/sa/sa24 | more

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

sar 4 5

خروجی نمونه:

sar45

اطلاعات بیشتر

۹- mpstat–  پردازشگرهای چند هسته‌ای

این دستور وضعیت هر پردازشگر رو (هر یک از هسته های پردازشگر رو جدا جدا) به ما گزارش می‌ده. و کاربرد اون در پردازشگرهای چند هسته‌ای هست.

mpstat -P ALL

دستور اول وضعیت هر ۴ هسته رو برای یک بار به ما گزارش می ده. اما دستور دوم برای هر هسته ۵ بار وضعیت رو چک می کنه و برای هر هسته ۵ گزارش به ما برنامه می‌ده. فاصله گزارش گیری ها ۲ ثانیه هست. این دستور تقریبا مشابه دستور sar می باشد.

mpstat -P ALL 2 5

اطلاعات بیشتر

۱۰- pmap — پردازش حافظه استفاده شده در سیستم

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

به عنوان مثال آی‌دی پروسه‌ای به شماره ۴۷۳۹۴ را در نظر بگیرید.

pmap -d PID

خروجی نمونه:

pmap-d

خط آخر خروجی این دستور بسیار مهمه.
mapped: مقدار کل حافظه که به برنامه اختصاص داده شده
writeable/private: مقدار فضای آدرس‌های خصوصی
shared: مقدار فضای آدرس این پروسه که با دیگر برنامه ها مشترک است

اطلاعات بیشتر

۱۱ و ۱۲ – netstat و ss — آمار شبکه

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

اطلاعات بیشتر برای دستور ss و netstat

۱۳- iptraf– آمار مربوط به شبکه

از این دستور برای مانیتورینگ IP شبکه استفاده می‌شود. برنامه به صورت تعاملی و رنگی هست. و واقعا یکی از برنامه هایی هست که استفاده از اون رو به همه پیشنهاد می‌کنم . کلا با کمک این برنامه به راحتی می توان متوجه شد که آیا سیستم شما به صورت مخفیانه  با جای دیگر در ارتباط هست یا خیر؟‌ ویا اگر دوست داشته باشید، با این روش می‌توان به سرورهای اصلی و پشت صحنه یک سایت  دسترسی پیدا کرد.  برای مثال هم اکنون که فیسبوک در ایران بسته شده، جالب است بدانید که مکان محل نگهداری فیلم‌ها در فیسبوکجای دیگری غیر از خود فیسبوک می‌باشد.  با این روش یک برنامه نویس می‌تواند برنامه‌ای بسازد که با گرفتن لینک حاوی فیلم، اقدام به دریافت فیلم کند!‌ برای بدست آوردن سرعت واقعی اینترنت خود نیز می‌توانید ازاین برنامه استفاده کنید. از این برنامه به راحتی می‌توانید اطلاعات زیر را استخراج کنید:

  • آمار ترافیک شبکه توسط اتصال TCP
  • آمارترافیک IP   توسط رابط شبکه
  • آمار ترافیک شبکه توسط پروتکل
  • آمار ترافیک شبکه توسط TCP / پورت UDP و اندازه بسته
  • آمار ترافیک شبکه از طریق آدرس Layer2

Fig.02: General interface statistics: IP traffic statistics by network interface

Fig.03 Network traffic statistics by TCP connection

۱۴- tcpdump — جزئیات تحلیل ترافیک شبکه

یک دستور ساده که می‌توان پی به میزان ترافیک روی شبکه برد. با این وجود شما برای استفاده از این برنامه نیاز به داشتن آگاهی در مورد چگونگی کارکرد TCP/IP دارید. برای مثال برای نشان دادن اطلاعات مربوط به ترافیک DNS از دستور زیر استفاده میکنیم.

tcpdump -i eth1 ‘udp port 53’

برای نمایش دادن همه بسته‌هایی که از پورت ۸۰ (HTTP) و IP نسخه چهار هستند کار زیر را می‌کنیم. باید کاری کنیم که فقط بسته‌هایی که حاوی فقط اطلاعات و بسته ACKاست نشان داده شود نه برای مثال بسته‌های SYN و FIN.

tcpdump ‘tcp port 80 and (((ip[2:2] – ((ip[0]&0xf)<<2)) – ((tcp[12]&0xf0)>>2)) != 0)’

برای نشان دادن همه نشست‌های FTP به ۲۰۲٫۵۴٫۱٫۵ از دستور زیر استفاده کنید.

tcpdump -i eth1 ‘dst 202.54.1.5 and (port 21 or 20’

برای نمایش همه نشست‌های HTTP به ۱۹۲٫۱۶۸٫۱٫۵ از دستور زیر سود می‌جوییم.

tcpdump -ni eth0 ‘dst 192.168.1.5 and tcp and port http’

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

tcpdump -n -i eth1 -s 0 -w output.txt src or dst port 80

۱۵- strace — صدا زدن سیستم

برای اشکال زدایی وب سرور و پیدا کردن عیوب بسیار کار گشاست! اما چون خودم هیچی از این دستور نفهمیدم، شما رو مستقیم به چگونگی کارکرد این دستور ارجاع می‌دم :)

۱۶- فایل سیستم proc — آماری  از کرنل

فایل‌های درون فولدر proc (در آدرس روت) حاوی اطلاعات دقیق در مورد دستگاه‌های سخت افزاری مختلف و سایر اطلاعات هسته لینوکس است. به عنوان مثال موارد زیر رو در نظر بگیرید.

cat /proc/cpuinfo
cat /proc/meminfo
cat /proc/zoneinfo
cat /proc/mounts

اطلاعات بیشتر

۱۷- Nagios– مایتورینگ سرور و شبکه

Nagios یکی از محبوب ترین برنامه‌های مانیتورینگ شبکه و سیستم کامپیوتری می‌باشد. شما به آسانی می‌توانید بر تمام میزبان‌ها، تجهیزات شبکه و سرویس‌ها نظارت کنید. برنامه هنگامی که به مشکلی برخورد به شما پیغام هشدار می فرستد و همچنین زمانی که اوضاع رو به راه شد، باز هم یک هشدار می‌دهد. حالا یه برنامه به اسم فن ساخته شده که تمام کارا رو برای راه اندازی این Nagios اتومات می‌کنه (Fully Automated Nagios). این برنامه سعی کرده همه برنامه‌هایی که توسط جامعه nAgios ساخته شده رو فراهم کنه. تمام این ابزار همه در یک فایل ایزو به حجم یک سی‌دی قابل دریافت هست.

۱۸- Cacti– ابزار مانیتورینگ مبتنی بر وب

برای چگونگی نصب و تنظیم و استفاده از این ابزار کافیست به اینجا نگاهی بیندازید.

۱۹- کی‌دی‌ای سیستم گارد– گزارش دهی و نموادار فعلی سیستم

KSysguard ابزاری قوی برای مانیتورینگ در محیط کی‌دی‌ای می‌باشد.

Fig.05 KDE System Guard

اطلاعات بیشتر

۲۰- گنوم سیستم مانیتور– گزارش دهی به همراه ترسیم نمودار از وضعیت موجود سیستم

Fig.06 The Gnome System Monitor application

و ابزارهای اضافی دیگر

Nmap: اسکن در سرور شما برای پیدا کردن پورت‌های باز
Lsof: لیست پرونده‌های باز، و اتصالات شبکه
Ntop: ابزاری مبتنی بر وب مشابه دستور top . وضعیت شبکه رو با این دستور به خوبی می‌توان مشاهده کرد.
Conky: ابزار قدرتمند دیگری برای مانیتورینگ سیستم در محیط X
GkreIIM: ابزاری خوب برای مانیتورینگ پردازشگر، رم، هارد، شبکه و چیزای زیاد دیگه
Vnstat: یک کنسول مبتنی بر وب برای مانیتورینگ شبکه هست.
Htop: ورژن بهبود یافته دستور top هست که پروسس‌ها رو به صورت درختی می‌تونه نشون بده.
Mtr: برنامه‌ای که کار چند تا برنامه مثل پینگ و تریس روتر رو همگی با هم یه جا می‌تونه انجام بده.

منبع

پی‌نوشت: این مطلب رو چند هفته پیش قصد ترجمه داشتم که تا امروز کار برد. جالبه امروز سایت نرم‌افزارهای آزاد یه ترجمه نصف و نیمه از این مطلب رو تو سایتش گذاشته

دیدگاه‌ها

6 پاسخ به “۲۰ ابزار مانیتورینگ سیستم لینوکس که هر مدیر سیستمی باید با آن آشنا باشد”

  1. حسین نیم‌رخ

    فوق العاده بود. دستت درد نکنه …

    1. erghezi نیم‌رخ

      ممنون. نظر لطفته

  2. بردیا نیم‌رخ

    بسیار عالی بود .
    خیلی با اینجور مطالب حال میکنم .
    دستت درد نکنه ;)

    1. erghezi نیم‌رخ

      منم خودم خیلی حال می‌کنم. یه چند تا دیگه هست اینطوری. شاید نشستم فردا پس فردا پستشون کردم

  3. امیر حسین نیم‌رخ
    امیر حسین

    خیلی جامع و کامل بود … خسته نباشی

  4. فاراب نیم‌رخ

    بسیار عالی و کامل. برای خودم. PDF کردم. ممنونم.

پاسخ دادن به بردیا لغو پاسخ

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