איך להשתמש ב-Top, Netstat, Du וכלים אחרים לניטור משאבי שרת

הקדמה

כל מערכת מחשב תהנה מניהול ומעקב נכונים. לשמור על מעקב על אופן הפעולה של המערכת שלך יסייע לך לגלות בעיות ולפתור אותן במהירות.

ישנם הרבה יישומים פקודתיים שנוצרו למטרה זו. מדריך זה יציג לך כמה מהיישומים הכי מועילים לכלי העבודה שלך.

דרישות מוקדמות

כדי להשתתף במדריך זה, יש לך צורך בגישה למחשב המריץ מערכת הפעלה בסיסית של Linux. זה יכול להיות או שרת פרטי וירטואלי שהתחברת אליו באמצעות SSH או המחשב המקומי שלך. שים לב שמדריך זה אומת בשימוש בשרת Linux הרץ ב-Ubuntu 20.04, אך הדוגמאות שניתנו אמורות לעבוד על מחשב שרץ בגרסה כלשהי של כל הפצות Linux.

אם אתה מתכנן להשתמש בשרת רחוק כדי לעקוב אחר המדריך הזה, אנו ממליצים לך להשלים תחילה את מדריך הגדרת השרת ההתחלתית שלנו. על ידי כך תוכל להתקין את סביבת השרת המאובטחת שלך – כולל משתמש לא-root עם הרשאות sudo וגיבוי מוגדר עם UFW – שתוכל להשתמש בה כדי לבנות את מיומנויות ה-Linux שלך.

שלב 1 – כיצד לצפות בתהליכים הרצים ב-Linux

ניתן לראות את כל התהליכים הרצים על השרת שלך באמצעות הפקודה top:

  1. 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

השורות הראשונות מספקות סטטיסטיקות מערכת, כגון עומס CPU/זיכרון וסך הכל מספר המשימות הרצות.

ניתן לראות שיש תהליך אחד הרץ, ו-55 תהליכים שנחשבים להיות משנות מכיוון שהם לא משתמשים באופן פעיל במחזורי CPU.

יתרת הפלט המוצג מראה את התהליכים הרצים ואת סטטיסטיקות השימוש שלהם. בברירת המחדל, top ממיין אוטומטית את אלו לפי שימוש ב-CPU, כך שתוכל לראות את התהליכים הכי עמוסים תחילה. top תמשיך לרוץ בפקודת הגב שלך עד שתעצור אותו באמצעות השילוב המקובל של מקשים Ctrl+C כדי לצאת מתהליך הרצה. זה שולח אות אותו kill, שמפנה לתהליך להפסיק בשקט אם הוא יכול.

גרסה משופרת של top, בשם htop, זמינה ברוב המאגרים של החבילות. ב-Ubuntu 20.04, ניתן להתקין אותו באמצעות apt:

  1. sudo apt install htop

לאחר מכן, הפקודה htop תהיה זמינה:

  1. htop
Output
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 מספק תצוגה טובה יותר של תהליכי רקע במעבד, מודעות טובה יותר לתמיכת בצבעים בטרמינלים מודרניים, ואפשרויות מיון נוספות, בנוסף לתכונות נוספות. בניגוד ל־top, זה לא מותקן תמיד כברירת מחדל, אך ניתן לשקול להשתמש בו כתחליף ישיר. ניתן לצאת מ־htop על ידי לחיצה על Ctrl+C כמו ב־top.

הנה כמה קיצורי מקלדת שיעזרו לך להשתמש ב־htop באופן יעיל יותר:

  • M: Sort processes by memory usage
  • P: Sort processes by processor usage
  • ?: גישה לעזרה
  • k: Kill current/tagged process
  • F2: הגדרת htop. ניתן לבחור כאן אפשרויות תצוגה.
  • /:: חיפוש תהליכים

ישנן עוד אפשרויות רבות שניתן לגשת אליהן דרך העזרה או הגדרה. אלו צריכים להיות העצות הראשונות שלך בחקירת הפונקציות של htop. בשלב הבא, תלמד כיצד לעקוב אחר רוחב הפס של הרשת שלך.

שלב 2 – כיצד לעקוב אחר רוחב הפס של הרשת שלך

אם חיבור הרשת שלך נראה מעורר חשש עלול להיות מושם עד כדי שימוש יתר, ואין לך בטוחות לאיזו יישום להאשים, תוכנת nethogs היא בחירה טובה לזיהוי זה.

ב־Ubuntu, ניתן להתקין את nethogs באמצעות הפקודה הבאה:

  1. sudo apt install nethogs

לאחר מכן, הפקודה nethogs תהיה זמינה:

  1. nethogs
Output
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 0.912 0.233 KB/sec

nethogs משייך כל יישום לתעבורת הרשת שלו.

יש רק מספר מצוות שניתן להשתמש בהם כדי לשלוט nethogs:

  • M: Change displays between “kb/s”, “kb”, “b”, and “mb”.
  • R: Sort by traffic received.
  • S: Sort by traffic sent.
  • Q: quit

iptraf-ng הוא דרך נוספת למעקב אחר תעבורת רשת. הוא מספק מספר ממשקים אינטראקטיביים שונים.

הערה: IPTraf דורש גודל מסך של לפחות 80 עמודות על 24 שורות.

באובונטו, ניתן להתקין iptraf-ng בעזרת הפקודה הבאה:

  1. sudo apt install iptraf-ng

iptraf-ng צריך להתפעל עם הרשאות root, לכן עליך להוסיף את sudo לפניו:

  1. sudo iptraf-ng

תתבקש לבחור בתפריט שמשתמש במסגרת ממשק שורת פקודה פופולרית הנקראת ncurses.

עם תפריט זה, ניתן לבחור אילו ממשקים ברצונך לגשת אליהם.

לדוגמה, כדי לקבל סקירה על כל תעבורת הרשת, ניתן לבחור בתפריט הראשון ולאחר מכן "כל הממשקים". זה יציג לך מסך שיראה כמו זה:

כאן, ניתן לראות אילו כתובות IP אתה תקשור בהן בכל ממשקי הרשת שלך.

אם ברצונך לקבל את הכתובות האלה מפושרות לדומיינים, ניתן להפעיל חיפוש DNS הפוך על ידי יציאה ממסך התעבורה, בחירת הגדר ואז הפעלת חיפושי DNS הפוכים.

ניתן גם להפעיל שמות שירותי TCP/UDP כדי לראות את שמות השירותים שמופעלים במקום מספרי הפתחות.

עם שני האפשרויות הללו מופעלות, התצוגה עשויה להיראות כמו זו:

הפקודה netstat היא כלי נוסף ונושך לקביעת מידע רשת.

netstat מותקן כברירת מחדל ברוב המערכות המודרניות, אך תוכל להתקין אותו בעצמך על ידי הורדתו ממאגרי החבילות המותקנים ברירת המחדל של השרת שלך. ברוב מערכות ה-Linux, כולל Ubuntu, החבילה המכילה את netstat היא net-tools:

  1. sudo apt install net-tools

ברירת המחדל, פקודת netstat לבדה מדפיסה רשימה של יציאות פתוחות:

  1. netstat
Output
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, היא תציג את כל היציאות, גם פתוחות וגם לא פתוחות:

  1. netstat -a
Output
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 בהתאם:

  1. netstat -at
Output
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":

  1. netstat -s
Output
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 שתוכל ללמוד עליהן בעת עיון בדף ה-manual שלו.

בשלב הבא, תלמד כמה דרכים שימושיות למעקב אחר השימוש בדיסקים שלך.

שלב 3 – כיצד לעקוב אחר השימוש בדיסק

עבור סקירה מהירה של כמה שטח פנוי נשאר על הדיסקים שלך, תוכל להשתמש בתוכנית df.

ללא אפשרויות, הפלט שלו נראה כך:

  1. df
Output
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

הפלט מציג את השימוש בדיסק בבתים, שעשוי להיות קצת קשה לקריאה.

כדי לפתור את הבעיה הזו, תוכל לציין פלט בפורמט שקריא לאדם:

  1. df -h
Output
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. זה יוסיף שורה בתחתית עם מידע סיכום:

  1. df -h --total
Output
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 בהרצתו בתיקיית בית ריקה כמעט נראה כך:

  1. du
Output
4 ./.cache 8 ./.ssh 28 .

שוב, אפשר לציין פלט בפורמט קריא על ידי מעבר לו את -h:

  1. du -h
Output
4.0K ./.cache 8.0K ./.ssh 28K .

כדי לראות גם גדלי קבצים ולא רק ספריות, תקליד את הפקודה הבאה:

  1. du -a
Output
0 ./.cache/motd.legal-displayed 4 ./.cache 4 ./.ssh/authorized_keys 8 ./.ssh 4 ./.profile 4 ./.bashrc 4 ./.bash_history 28 .

לסכום בתחתית, ניתן להוסיף את האפשרות -c:

  1. du -c
Output
4 ./.cache 8 ./.ssh 28 . 28 total

אם אתה רוצה רק את הסך הכולל ולא את הפרטים, אפשר להפעיל:

  1. du -s
Output
28 .

קיים גם ממשק ncurses עבור du, שנקרא ncdu, שתוכל להתקין:

  1. sudo apt install ncdu

זה ייצוג גרפי של השימוש בדיסק שלך:

  1. ncdu
Output
--- /root ---------------------------------------------------------------------- 8.0KiB [##########] /.ssh 4.0KiB [##### ] /.cache 4.0KiB [##### ] .bashrc 4.0KiB [##### ] .profile 4.0KiB [##### ] .bash_history

אפשר לקדם בין המערכת הקבצים באמצעות החצים למעלה ולמטה וללחוץ Enter על כל רשומת ספרייה.

בסעיף האחרון, תלמד כיצד לעקוב אחר השימוש בזיכרון שלך.

שלב 4 – כיצד לעקוב אחר השימוש בזיכרון שלך

אתה יכול לבדוק את שימוש הזיכרון הנוכחי במערכת שלך באמצעות הפקודה free.

כאשר משמשים ללא אפשרויות, הפלט נראה כמו זה:

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

כדי להציג בפורמט שקריא יותר, ניתן להעביר את האפשרות -m כדי להציג את הפלט במגה-בתים:

  1. free -m
Output
total used free shared buff/cache available Mem: 981 382 120 3 478 306 Swap: 0 0 0

השורה Mem כוללת את הזיכרון שנמצא בשימוש למטרות חידוש ומטמון, והוא משוחרר מיידית כאשר נדרש למטרות אחרות. Swap הוא זיכרון שנכתב לקובץ ה-swap על הדיסק כדי לשמור על זיכרון פעיל.

לבסוף, פקודת vmstat יכולה להפיק מידע שונה אודות המערכת שלך, כולל זיכרון, סוואפ, io של דיסק ומידע אודות ה-CPU.

ניתן להשתמש בפקודה כדי לקבל מבט נוסף על שימוש בזיכרון:

  1. vmstat
Output
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

ניתן לראות זאת במגה-בתים על ידי ציון יחידות עם הדגל -S:

  1. vmstat -S M
Output
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 96 120 242 0 0 0 1 9 3 0 0 100 0

כדי לקבל סטטיסטיקות כלליות על שימוש בזיכרון, הקלד:

  1. vmstat -s -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 . . .

כדי לקבל מידע אודות שימוש במטמון של תהליכי מערכת אישיים, הקלד:

  1. vmstat -m -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 . . .

זה יקנה לך פרטים אודות אילו סוגי מידע מאוחסנים במטמון.

מסקנה

באמצעות הכלים הללו, תוכל להתחיל לצפות בשרת שלך מקו הפקודות. ישנם הרבה כלי ניטור אחרים המשמשים למטרות שונות, אך אלו הם נקודת ההתחלה הטובה.

השלב הבא הוא ללמוד אודות ניהול תהליכים ב-Linux באמצעות ps, kill ו-nice.

Source:
https://www.digitalocean.com/community/tutorials/how-to-use-top-netstat-du-other-tools-to-monitor-server-resources