كيفية مراقبة موارد الخادم باستخدام الأدوات Top و Netstat و Du


كيفية مراقبة موارد الخادم باستخدام الأدوات Top و Netstat و Du March 12, 2024 at 03:03PM

تتطلب الأنظمة الحاسوبية الإدارة والمراقبة المناسبة، إذ تساعد مراقبة عمل النظام على اكتشاف المشكلات وحلها بسرعة. وثمة عدة أدوات أُنشئت لهذا الغرض، سنُعَرّفك في هذا المقال على أهم هذه الأدوات والتطبيقات.

المتطلبات الأساسية

لمتابعة خطوات هذا المقال، ستحتاج إلى ما يلي:

حاسوب يعمل بنظام تشغيل لينكس Linux. يمكنك استخدام خادم خاص افتراضي VPS والاتصال به باستخدام بروتوكول SSH أو استخدام جهازك المحلي. استخدمنا في مقالنا خادم أوبنتو 20.04، لكن يمكنك اتباع أمثلتنا باستخدام أي من توزيعات لينكس. إن كنت تستخدم خادمًا بعيدًا فننصحك بالإطلاع على دليل إعداد الخادم الأولي لإعداد بيئة عمل آمنة على الخادم، ومستخدم غير جذري ذي صلاحيات sudo وجدار حماية، كما أن ذلك سيحسن مهاراتك في التعامل مع أنظمة لينكس.

الخطوة الأولى: عرض العمليات الجارية Running Processes في لينكس

يمكنك استعراض العمليات قيد التنفيذ في خادمك باستخدام الأمر top:

top

وستحصل على الخرج التالي:

Output
top - 15:14:40 up 46 min,  1 user,  load average: 0.00, 0.01, 0.05
Tasks:  56 total,   1 running,  55 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1019600k total,   316576k used,   703024k free,     7652k buffers
Swap:        0k total,        0k used,        0k free,   258976k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND           
    1 root      20   0 24188 2120 1300 S  0.0  0.2   0:00.56 init               
    2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd           
    3 root      20   0     0    0    0 S  0.0  0.0   0:00.07 ksoftirqd/0        
    6 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/0        
    7 root      RT   0     0    0    0 S  0.0  0.0   0:00.03 watchdog/0         
    8 root       0 -20     0    0    0 S  0.0  0.0   0:00.00 cpuset             
    9 root       0 -20     0    0    0 S  0.0  0.0   0:00.00 khelper            
   10 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kdevtmpfs          

لاحظ أن الأسطر الأولى من الخرج تزودنا بمعلومات أو إحصائيات statistics عن النظام، مثل حمل استخدام وحدة المعالجة المركزية والذاكرة والعدد الإجمالي للمهام قيد التشغيل. لاحظ أن هناك عملية واحدة قيد التشغيل، و 55 عملية خاملة Sleeping لأنها لا تستخدم وحدة المعالجة المركزية ويُظهر باقي الخرج العمليات الجارية وإحصائيات استخدامها.

يرتب الأمر top هذه العمليات تلقائيًا حسب استخدام وحدة المعالجة المركزية، كي ترى العمليات الأكثر استهلاكًا للموارد أولاً. يستمر top في العمل في سطر الأوامر shell إلى أن توقفه باستخدام المفتاحين Ctrl + C للخروج من العملية الجارية.إذ يُرسل هذا إشارة إيقاف kill، ويطلب من العملية التوقف بأمان إذا كان ذلك ممكنًا.

كما تتوفر في معظم مستودعات الحزم نسخة محسنة من الأمر top، تدعى htop. يمكنك تثبيت هذا الأمر على خادم أوبنتو باستخدام الأمر apt:

sudo apt install htop

شغّل بعد ذلك الأمر htop إذ أصبح متاحًا على جهازك:

htop

وستحصل على الخرج التالي:

  Mem[|||||||||||           49/995MB]     Load average: 0.00 0.03 0.05
  CPU[                          0.0%]     Tasks: 21, 3 thr; 1 running
  Swp[                         0/0MB]     Uptime: 00:58:11

  PID USER      PRI  NI  VIRT   RES   SHR S CPU% MEM%   TIME+  Command
 1259 root       20   0 25660  1880  1368 R  0.0  0.2  0:00.06 htop
    1 root       20   0 24188  2120  1300 S  0.0  0.2  0:00.56 /sbin/init
  311 root       20   0 17224   636   440 S  0.0  0.1  0:00.07 upstart-udev-brid
  314 root       20   0 21592  1280   760 S  0.0  0.1  0:00.06 /sbin/udevd --dae
  389 messagebu  20   0 23808   688   444 S  0.0  0.1  0:00.01 dbus-daemon --sys
  407 syslog     20   0  243M  1404  1080 S  0.0  0.1  0:00.02 rsyslogd -c5
  408 syslog     20   0  243M  1404  1080 S  0.0  0.1  0:00.00 rsyslogd -c5
  409 syslog     20   0  243M  1404  1080 S  0.0  0.1  0:00.00 rsyslogd -c5
  406 syslog     20   0  243M  1404  1080 S  0.0  0.1  0:00.04 rsyslogd -c5
  553 root       20   0 15180   400   204 S  0.0  0.0  0:00.01 upstart-socket-br

يزودنا htop بتصور أفضل لخيوط وحدة المعالجة المركزية CPU threads وبدعم أفضل للعمليات في الطرفيات الحديثة، وخيارات فرز أوسع، بالإضافة لعدة ميزات أخرى. وبخلاف الأمر top، لا تجد htop مُنَزَلًا تلقائيًا ولكن عليك تنزيله، ويمكن أن تَعُده بديلًا عن top. كما يمكنك الخروج من الأمر htop باستخدام المفتاحين Ctrl+C.

إليك بعض الاختصارات التي ستساعدك في استخدام htop بفاعلية أكبر:

  • M: فرز العمليات حسب استهلاك المساحة
  • P: فرز العمليات حسب استهلاك المعالج
  • ?: المساعدة
  • K: إيقاف العملية الجارية
  • F2: ضبط إعدادات htop وضبط خيارات العرض
  • /:: البحث في العمليات

كما توجد عدة خيارات أخرى يمكنك الوصول إليها من خلال خيار المساعدة أو الضبط، ارجع إليها لاستكشاف وظائف htop. أما عن خطوتنا التالية، فسنتعلم فيها كيفية مراقبة النطاق الترددي للشبكة.

الخطوة الثانية: مراقبة النطاق الترددي للشبكة

إذا شعرت بازدياد الحمل على اتصال الشبكة، ولم تدرِ ما هو التطبيق الذي يستهلك الاتصال فيمكنك الاستعانة ببرنامج nethogs لمعرفة ذلك. ثبّت nethogs على خادم أوبنتو باستخدام الأمر التالي:

sudo apt install nethogs

سيصبح بعدها الأمر nethogs متاحًا للاستخدام:

nethogs

وستحصل عند تشغيله على الخرج التالي:

NetHogs version 0.8.0

  PID USER     PROGRAM                      DEV        SENT      RECEIVED       
3379  root     /usr/sbin/sshd               eth0       0.485       0.182 KB/sec
820   root     sshd: root@pts/0             eth0       0.427       0.052 KB/sec
?     root     unknown TCP                             0.000       0.000 KB/sec

  TOTAL    

يعرض برنامج nethogs استخدام كل برنامج للشبكة. إليك بعض الاختصارات التي ستسهل عليك التعامل معه:

  • M: تغيير واحدة عرض النطاق الترددي إلى “kb/s” أو “kb” أو “b” أو “mb”
  • R: الفرز حسب حجم البيانات المستلمة
  • S: الفرز حسب حجم البيانات المُرسَلة
  • Q: خروج

كما يمكنك استخدام iptraf-ng لمراقبة استهلاك الشبكة، إذ يوفر عدة واجهات مراقبة تفاعلية.

ملاحظة: يتطلب IPTraf حجم شاشة لا يقل عن 80 عمودًا و 24 سطرًا.

ثبّت iptraf-ng على خادم أوبنتو باستخدام الأمر التالي:

sudo apt install iptraf-ng

لتشغيل الأمر iptraf-ng يجب أن تعطيه صلاحيات المستخدم الجذري، لذا عليك أن تستخدمه مع sudo:

sudo iptraf-ng

ستظهر قائمة تستخدم إطار عمل واجهة الطرفية الشائع المسمى ncurses:

iptraf ng

يمكنك بواسطة هذه القائمة اختيار الواجهة التي تود الوصول إليها. مثلًا، لإلقاء نظرة عامة على حركة البيانات في الشبكة، يمكنك اختيار القائمة الأولى ثم النقر على خيار جميع الواجهات "All interfaces"، وبعدها ستظهر لك شاشة كالتالية:

alltraffic

سترى في هذه الواجهة جميع عناوين IP المستخدمة في واجهات شبكتك. إذا أردت تحويل عناوين IP هذه إلى نطاقات، فيمكنك تفعيل البحث العكسي عن DNS عن طريق الخروج من شاشة حركة بيانات الشبكة، ثم النقر على خيار الضبط configure، ثم Reverse DNS lookups. كما يمكنك تفعيل TCP/UDP service names أي أسماء خدمات بروتوكولي TCP/UDP لعرض أسماء الخدمات الحالية بدلًا عن أرقام منافذها. ستبدو الشاشة كالتالي، عند تفعيل الخيارين السابقين:

alltraffic named

ولدينا أيضًا الأمر netstat الذي يُعد أداةً متعددة الاستخدامات للحصول على معلومات عن الشبكة. والذي يوجد عادةً تلقائيًا في الأنظمة الحديثة، كما يمكنك تثبيته يدويًا من مستودع حزم الخادم الافتراضي package repository. الحزمة التي تحتوي على الأمر netstat في معظم أنظمة لينكس ومن ضمنها أوبنتو، هي net-tools:

sudo apt install net-tools

يطبع الأمر netstat من تلقاء نفسه قائمة بالمآخذ sockets المفتوحة:

netstat

ويعرض لك الخرج التالي:

Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 192.241.187.204:ssh     ip223.hichina.com:50324 ESTABLISHED
tcp        0      0 192.241.187.204:ssh     rrcs-72-43-115-18:50615 ESTABLISHED
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  5      [ ]         DGRAM                    6559     /dev/log
unix  3      [ ]         STREAM     CONNECTED     9386     
unix  3      [ ]         STREAM     CONNECTED     9385     
. . .

إذا أضفت الخيار a-، فسوف يعرض جميع المنافذ المفتوحة listening والمغلقة not listening

netstat -a

وستحصل على النتيجة التالية:

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 *:ssh                   *:*                     LISTEN     
tcp        0      0 192.241.187.204:ssh     rrcs-72-43-115-18:50615 ESTABLISHED
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN     
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  2      [ ACC ]     STREAM     LISTENING     6195     @/com/ubuntu/upstart
unix  2      [ ACC ]     STREAM     LISTENING     7762     /var/run/acpid.socket
unix  2      [ ACC ]     STREAM     LISTENING     6503     /var/run/dbus/system_bus_socket
. . .

إذا أردت تصفية النتائج لعرض اتصال TCP فقط أو UDP فقط، فعليك استخدام الراية t- أو u- :

netstat -at
الخرج
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 *:ssh                   *:*                     LISTEN     
tcp        0      0 192.241.187.204:ssh     rrcs-72-43-115-18:50615 ESTABLISHED
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN

ولاحظ النتائج عند استخدام الراية s-

netstat -s
الخرج
Ip:
    13500 total packets received
    0 forwarded
    0 incoming packets discarded
    13500 incoming packets delivered
    3078 requests sent out
    16 dropped because of missing route
Icmp:
    41 ICMP messages received
    0 input ICMP message failed.
    ICMP input histogram:
        echo requests: 1
        echo replies: 40
. . .

إذا أردت تحديث الخرج باستمرار، يمكنك استخدام الراية c-. ثمة عدة خيارات متاحة للأمر netstat يمكنك التعرف عليها من خلال مراجعة صفحة دليلها التعليمي.

سنتعرف، في الخطوة التالية، على بعض الطرق المفيدة لمراقبة استخدام قرص التخزين

الخطوة الثالثة: مراقبة استخدام القرص

استخدم الأمر df لإلقاء نظرة سريعة على مساحة القرص المتبقية على محرك الأقراص المرفق:

df

وستحصل على الخرج التالي:

Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/vda        31383196 1228936  28581396   5% /
udev              505152       4    505148   1% /dev
tmpfs             203920     204    203716   1% /run
none                5120       0      5120   0% /run/lock
none              509800       0    509800   0% /run/shm

يعرض هذا الأمر المساحة المستخدمة بالبايتات، مما قد يجعلها صعبة القراءة، لحل هذه المشكلة اعرض الخرج بطريقة يَسهُل قراءتها على البشر human-readable، وذلك بإضافة الخيار h-:

df -h

وستحصل على الخرج التالي:

Filesystem      Size  Used Avail Use% Mounted on
/dev/vda         30G  1.2G   28G   5% /
udev            494M  4.0K  494M   1% /dev
tmpfs           200M  204K  199M   1% /run
none            5.0M     0  5.0M   0% /run/lock
none            498M     0  498M   0% /run/shm

استخدم الخيار total-- لعرض إجمالي مساحة القرص المتاحة في جميع أنظمة الملفات، حينها ستُعرض المعلومات في سطر جديد في الأسفل، كما يلي:

df -h --total
الخرج
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda         30G  1.2G   28G   5% /
udev            494M  4.0K  494M   1% /dev
tmpfs           200M  204K  199M   1% /run
none            5.0M     0  5.0M   0% /run/lock
none            498M     0  498M   0% /run/shm
total            32G  1.2G   29G   4%

لاحظ أن الأمر df يزوّدنا بمعلومات مفيدة، أما الأمر du فيستخدم التصنيف حسب المجلد، إذ يحلل الاستخدام للمجلد الحالي والمجلدات الفرعية. يبدو خرج du عند تشغيله في مجلد رئيسي فارغ كما يلي:

du
الخرج
4    ./.cache
8    ./.ssh
28    .

كما يمكنك عرض الخرج بطريقة سهلة القراءة، وذلك بإضافة الخيار h-:

 du -h

وستحصل على الخرج التالي:

4.0K    ./.cache
8.0K    ./.ssh
28K    .

ولعرض حجم الملفات والمجلدات، استخدم الخيار a-

du -a
الخرج
0    ./.cache/motd.legal-displayed
4    ./.cache
4    ./.ssh/authorized_keys
8    ./.ssh
4    ./.profile
4    ./.bashrc
4    ./.bash_history
28    .

استخدم الخيار c- لإضافة سطر لعرض المحصلة:

du -c

وسيصبح الخرج كالتالي:

4    ./.cache
8    ./.ssh
28    .
28    total

إذا أردت الحصول على المحصلة فقط دون التفاصيل استخدم الخيار s-

du -s

وسيكون الخرج كالتالي:

28    .

كما توجد واجهة ncurses للأمر du تدعى ncdu ويمكنك تثبيتها باستخدام الأمر التالي:

sudo apt install ncdu

والذي سيمثل استخدام القرص بيانيًا كالتالي:

ncdu
الخرج
--- /root ----------------------------------------------------------------------
    8.0KiB [##########] /.ssh                                                   
    4.0KiB [#####     ] /.cache
    4.0KiB [#####     ]  .bashrc
    4.0KiB [#####     ]  .profile
    4.0KiB [#####     ]  .bash_history

يمكنك التنقل في نظام الملفات باستخدام مفتاح السهم العلوي والسهم السفلي في لوحة المفاتيح والنقر على مفتاح enter لاستعراض المجلد. ستتعلم في الفقرة الأخيرة كيفية مراقبة استخدام الذاكرة.

الخطوة الرابعة: مراقبة استخدام الذاكرة

يمكنك عرض استخدام الذاكرة الحالي على نظام التشغيل باستخدام الأمر free:

free

وسيبدو الخرج كما يلي:

              total        used        free      shared  buff/cache   available
Mem:        1004896      390988      123484        3124      490424      313744
Swap:             0           0           0

لتسهيل قراءة الخرج، استخدم الخيار m- لعرض الحجم بواحدة الميغا بايت:

free -m
الخرج
              total        used        free      shared  buff/cache   available
Mem:            981         382         120           3         478         306
Swap:             0           0           0

يحتوي سطر mem على تفاصيل الذاكرة المستخدمة للتخزين المؤقت buffering and caching التي تفرغ محتوياتها عند الحاجة لاستخدامها في عملية أخرى. أما ذاكرة سواب swap فهي مكتوبة على ملف swapfile على القرص للمحافظة على الذاكرة النشطة Active memory. يعرض الأمر vmstat معلومات متعددة عن النظام بما في ذلك معلومات الذاكرة، ومعلومات الذاكرة swap، ومعلومات وحدة المعالجة المركزية، ومداخل ومخارج الأقراص.

يمكنك استخدام vmstat لعرض معلومات استخدام الذاكرة:

Vmstat
الخرج
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 1  0      0  99340 123712 248296    0    0     0     1    9    3  0  0 100  0

اعرض الخرج بواحدة الميغا بايت عن طريق كتابة الواحدة M بعد الراية S-

vmstat -S M
Output
          495 M total memory
          398 M used memory
          252 M active memory
          119 M inactive memory
           96 M free memory
          120 M buffer memory
          242 M swap cache
            0 M total swap
            0 M used swap
            0 M free swap
. . .

استخدم الأمر التالي للحصول على معلومات عامة عن استخدام الذاكرة:

vmstat -s -S M
Output
Cache                       Num  Total   Size  Pages
ext4_groupinfo_4k           195    195    104     39
UDPLITEv6                     0      0    768     10
UDPv6                        10     10    768     10
tw_sock_TCPv6                 0      0    256     16
TCPv6                        11     11   1408     11
kcopyd_job                    0      0   2344     13
dm_uevent                     0      0   2464     13
bsg_cmd                       0      0    288     14
. . .

أما للحصول على معلومات عن استخدام عمليات النظام الفردية لذاكرة التخزين المؤقت cache فاستخدم الأمر التالي:

vmstat -m -S M

وستحصل على الخرج التالي:

Cache                       Num  Total   Size  Pages
ext4_groupinfo_4k           195    195    104     39
UDPLITEv6                     0      0    768     10
UDPv6                        10     10    768     10
tw_sock_TCPv6                 0      0    256     16
TCPv6                        11     11   1408     11
kcopyd_job                    0      0   2344     13
dm_uevent                     0      0   2464     13
bsg_cmd                       0      0    288     14
. . .

الذي سيزودك بتفاصيل حول المعلومات المخزنة في ذاكرة التخزين المؤقت.

الخاتمة

أصبحت الآن قادرًا على مراقبة خادمك من سطر الأوامر باستخدام الأدوات التي تعلمتها في مقالنا. وعلى الرغم أنه ثمة عدة أدوات مراقبة أخرى تُستخدم لأغراض مختلفة، إلا أن هذه تُعد انطلاقةًجيدة. ننصحك بعد قراءة هذا المقال بالتعرف على إدارة عمليات لينكس باستخدام ps وkill وnice. لمزيد من الاستفسارات حول ما ورد في مقالنا، أو للحصول على الدعم والمساعدة أضف سؤالك في قسم الأسئلة والأجوبة في أكاديمية حسوب.

ترجمة -وبتصرف- للمقال How To Use Top, Netstat, Du, & Other Tools to Monitor Server Resources لصاحبيه Justin Ellingwood و Alex Garnett.

اقرأ أيضًا

#3qpa7meed #ArabProgrammers #المبرمجون_العرب #arab_programmers #عقبة_البرق

تعليقات