5.5-9監控Linux系統狀態5-9

vmstat命令監控系統狀態-綜合工具、判定瓶頸點

監控網卡流量

查看進程

查看網絡鏈接情況

抓包工具

vmstat命令監控系統狀態-綜合工具、判定瓶頸點

[root@www ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  0      0 557116   2076 304764    0    0    50    18   41   89  0  1 98  1  0

使用w命令查看的是系統總體上的負載,沒法判斷具體是哪些硬件負載壓力過大,這就用到了vmstat命令,vmstat顯示的內容一共分爲六部分php

  • procs顯示進程的相關信息
  • r(run):表示運行或等待CPU時間片的進程數。該數值若是長期大於CPU核數就意味着CPU不夠用了
  • b(block):表示等待資源的進程數,這裏的資源指的是I/O、內存等。好比說有個數據CPU很快處理完了,可是硬盤在頻繁的讀寫當中,該數據等待寫入硬盤時,這個進程就是b的狀態。該數據長時間大於1就須要找找問題了。
  • memory顯示內存的相關信息
  • swpd:表示切換到交換分區中的內存數量,單位爲KB
  • free:表示當前空閒的內存大小,單位KB
  • buff:表示(即將寫入磁盤的)緩衝大小,單位KB
  • cache:表示(從磁盤中讀取的)緩存大小,單位KB
  • swap顯示內存的交換狀況
  • si:表示由交換分區寫內存的數據量,單位KB
  • so:表示由內存寫入交換分區的數據量
  • io顯示磁盤的使用狀況
  • bi:表示從塊設備讀取數據的量(讀磁盤)
  • bo:表示從塊設備寫入數據的量(寫磁盤)
  • system顯示採集間隔內發生的中斷次數
  • in:表示在某一時間間隔內觀測到的每秒設備的中斷次數
  • cs:表示每秒產生的上下文切換次數
  • CPU顯示cpu的使用狀態
  • us:顯示用戶下所花費CPU的時間百分比
  • sy:顯示系統花費CPU的時間百分比
  • id:表示CPU處於空閒狀態的時間百分比
  • wa:表示I/O等待所佔用的CPU時間百分比
  • st:表示被偷走的CPU所佔的百分比(通常爲0,不用關注)
  • vmstat 2 10 意思是每兩秒輸出一次狀態,輸出10次

監控網卡流量

  • netstat列出端口信息
  • netstat -lnp列出系統監聽端口
  • netstat -an查看系統的網絡鏈接情況
  • netstat -lntp 列出監聽端口,只看tcp的,不包括socket
  • ss -an 跟netstat -an做用同樣
[root@www ~]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      6017/php-fpm: maste 
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      5913/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      6014/master         
tcp6       0      0 :::22                   :::*                    LISTEN      5913/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      6014/master

sar命令

  • sar命令是Linux系統中特別強大的一個命令,經過sar命令能夠全面獲取系統的CPU、運行隊列、磁盤I/O、交換區、內存、cpu中斷、網絡等性能數據
  • sar命令和iostat命令都是由sysstat安裝包安裝的

sar命令行的經常使用格式:

  • sar [options] [-A] [-o file] t [n] 在命令行中, n 和 t 兩個參數組合起來定義採樣間隔和次數, t 爲採樣間隔, 是必須有的參數, n 爲採樣次數,是可選的,默認值是 1, -o file 表示將命令結果以二進制格式存放在文件中, file 在此處不是關鍵字,是文件名。 options 爲命令行選項:
  • -A:全部報告的總和
  • -u:CPU利用率
  • -v:進程、節點、文件和鎖表狀態
  • -p:當前系統中指定CPU使用信息
  • -d:硬盤使用報告
  • -r:顯示系統內存的使用狀況
  • -n:顯示網絡運行狀態。參數後面可跟DEV、EDEV、SOCK和FULL。DEV顯示網絡接口信息,EDEV顯示網絡錯誤的統計數據,SOCK顯示套接字信息,FULL顯示前三參數全部信息
  • -q:顯示運行隊列的大小,它與系統當前的平均負載有關
  • -B:內存分頁狀況
  • -R:顯示進程在採樣時間內的活動狀況
  • -g:串口I/O的狀況
  • -b:緩衝區使用狀況
  • -a:文件讀寫狀況
  • -c:系統調用狀況
  • -R:進程的活動狀況
  • -y:終端設備活動狀況
  • -W:系統交換活動

使用sar命令查看網卡流量狀況,下面這個狀況是查看網卡流量狀況,一秒讀取一次,一共讀取兩次

[root@www ~]# sar -n DEV 1 2
Linux 3.10.0-957.el7.x86_64 (www.aaa.com) 	2019年03月09日 	_x86_64_	(1 CPU)

00時56分26秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
00時56分27秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
00時56分27秒     ens33      0.00      0.00      0.00      0.00      0.00      0.00      0.00

00時56分27秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
00時56分28秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
00時56分28秒     ens33      1.03      1.03      0.06      0.39      0.00      0.00      0.00

平均時間:     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
平均時間:        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
平均時間:     ens33      0.51      0.51      0.03      0.19      0.00      0.00      0.00
  • 上面輸出結果中,IFACE是網卡名字
  • rxpck/s是網卡每秒接收數據包的數量
  • txpck/s是網卡每秒發送數據包的數量
  • rxkB/s是網卡每秒接收數據的大小
  • txkB/s是網卡每秒發送數據的大小
  • 其他內容不用太關注

nload命令

  • nload命令是動態查看網卡流量狀況
  • nload安裝包是由擴展源提供的,須要先安裝擴展源,yum install -y epel-release而後再安裝yum install nload -y
  • 直接運行nload就能夠查看網卡流量,按上下箭頭能夠切換不一樣的網卡
  • 或者使用nload eth0查看指定網卡流量

ethtool和mii-tool命令

  • ethtool eth0這個命令查看網卡的信息,以及有無網線鏈接
  • mii-tool eth0查看網口有無網線鏈接
[root@www ~]# ethtool ens33
Settings for ens33:
	Supported ports: [ TP ]
	Supported link modes:   10baseT/Half 10baseT/Full 
	                        100baseT/Half 100baseT/Full 
	                        1000baseT/Full 
	Supported pause frame use: No
	Supports auto-negotiation: Yes
	Supported FEC modes: Not reported
	Advertised link modes:  10baseT/Half 10baseT/Full 
	                        100baseT/Half 100baseT/Full 
	                        1000baseT/Full 
	Advertised pause frame use: No
	Advertised auto-negotiation: Yes
	Advertised FEC modes: Not reported
	Speed: 1000Mb/s
	Duplex: Full
	Port: Twisted Pair
	PHYAD: 0
	Transceiver: internal
	Auto-negotiation: on
	MDI-X: off (auto)
	Supports Wake-on: d
	Wake-on: d
	Current message level: 0x00000007 (7)
			       drv probe link
	Link detected: yes
[root@www ~]# mii-tool ens33
ens33: negotiated 1000baseT-FD flow-control, link ok

查看進程

ps命令

  • 直接運行ps命令是查看當前終端下的進程
[root@www ~]# ps
  PID TTY          TIME CMD
 6202 pts/0    00:00:00 bash
 8173 pts/0    00:00:00 ps
  • ps-aux查看系統中全部用戶的進程
[root@www ~]# ps -aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.6 128040  6620 ?        Ss   3月08   0:03 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root         2  0.0  0.0      0     0 ?        S    3月08   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    3月08   0:00 [ksoftirqd/0]
root         5  0.0  0.0      0     0 ?        S<   3月08   0:00 [kworker/0:0H]
root         7  0.0  0.0      0     0 ?        S    3月08   0:00 [migration/0]
root         8  0.0  0.0      0     0 ?        S    3月08   0:00 [rcu_bh]
root         9  0.0  0.0      0     0 ?        R    3月08   0:02 [rcu_sched]
root        10  0.0  0.0      0     0 ?        S<   3月08   0:00 [lru-add-drain]
root        11  0.0  0.0      0     0 ?        S    3月08   0:00 [watchdog/0]
root        13  0.0  0.0      0     0 ?        S    3月08   0:00 [kdevtmpfs]
root        14  0.0  0.0      0     0 ?        S<   3月08   0:00 [netns]
root        15  0.0  0.0      0     0 ?        S    3月08   0:00 [khungtaskd]
root        16  0.0  0.0      0     0 ?        S<   3月08   0:00 [writeback]
root        17  0.0  0.0      0     0 ?        S<   3月08   0:00 [kintegrityd]
root        18  0.0  0.0      0     0 ?        S<   3月08   0:00 [bioset]
root        19  0.0  0.0      0     0 ?        S<   3月08   0:00 [bioset]
root        20  0.0  0.0      0     0 ?        S<   3月08   0:00 [bioset]
root        21  0.0  0.0      0     0 ?        S<   3月08   0:00 [kblockd]
root        22  0.0  0.0      0     0 ?        S<   3月08   0:00 [md]
root        23  0.0  0.0      0     0 ?        S<   3月08   0:00 [edac-poller]
root        24  0.0  0.0      0     0 ?        S<   3月08   0:00 [watchdogd]
root        30  0.0  0.0      0     0 ?        S    3月08   0:00 [kswapd0]
root        31  0.0  0.0      0     0 ?        SN   3月08   0:00 [ksmd]
root        32  0.0  0.0      0     0 ?        SN   3月08   0:00 [khugepaged]
root        33  0.0  0.0      0     0 ?        S<   3月08   0:00 [crypto]
root        41  0.0  0.0      0     0 ?        S<   3月08   0:00 [kthrotld]
root        43  0.0  0.0      0     0 ?        S<   3月08   0:00 [kmpath_rdacd]
root        44  0.0  0.0      0     0 ?        S<   3月08   0:00 [kaluad]
root        45  0.0  0.0      0     0 ?        S<   3月08   0:00 [kpsmoused]
root        47  0.0  0.0      0     0 ?        S<   3月08   0:00 [ipv6_addrconf]
root        60  0.0  0.0      0     0 ?        S<   3月08   0:00 [deferwq]
root        92  0.0  0.0      0     0 ?        S    3月08   0:00 [kauditd]
root       684  0.0  0.0      0     0 ?        S<   3月08   0:00 [ata_sff]
root       700  0.0  0.0      0     0 ?        S    3月08   0:00 [scsi_eh_0]
root       704  0.0  0.0      0     0 ?        S<   3月08   0:00 [scsi_tmf_0]
root       710  0.0  0.0      0     0 ?        S    3月08   0:00 [scsi_eh_1]
root       712  0.0  0.0      0     0 ?        S<   3月08   0:00 [scsi_tmf_1]
root      1587  0.0  0.0      0     0 ?        S<   3月08   0:00 [mpt_poll_0]
root      1590  0.0  0.0      0     0 ?        S<   3月08   0:00 [mpt/0]
root      1626  0.0  0.0      0     0 ?        S    3月08   0:00 [scsi_eh_2]
root      1631  0.0  0.0      0     0 ?        S<   3月08   0:00 [scsi_tmf_2]
root      1857  0.0  0.0      0     0 ?        S<   3月08   0:00 [ttm_swap]
root      1859  0.0  0.0      0     0 ?        S    3月08   0:00 [irq/16-vmwgfx]
root      2509  0.0  0.0      0     0 ?        S<   3月08   0:00 [kworker/0:1H]
root      2512  0.0  0.0      0     0 ?        S<   3月08   0:00 [bioset]
root      2517  0.0  0.0      0     0 ?        S<   3月08   0:00 [xfsalloc]
root      2522  0.0  0.0      0     0 ?        S<   3月08   0:00 [xfs_mru_cache]
root      2527  0.0  0.0      0     0 ?        S<   3月08   0:00 [xfs-buf/sda3]
root      2529  0.0  0.0      0     0 ?        S<   3月08   0:00 [xfs-data/sda3]
root      2530  0.0  0.0      0     0 ?        S<   3月08   0:00 [xfs-conv/sda3]
root      2532  0.0  0.0      0     0 ?        S<   3月08   0:00 [xfs-cil/sda3]
root      2533  0.0  0.0      0     0 ?        S<   3月08   0:00 [xfs-reclaim/sda]
root      2534  0.0  0.0      0     0 ?        S<   3月08   0:00 [xfs-log/sda3]
root      2535  0.0  0.0      0     0 ?        S<   3月08   0:00 [xfs-eofblocks/s]
root      2536  0.0  0.0      0     0 ?        S    3月08   0:03 [xfsaild/sda3]
root      2602  0.0  0.3  37172  3396 ?        Ss   3月08   0:01 /usr/lib/systemd/systemd-journald
root      2631  0.0  0.5  48472  5996 ?        Ss   3月08   0:01 /usr/lib/systemd/systemd-udevd
root      4464  0.0  0.0      0     0 ?        S<   3月08   0:00 [kworker/u129:0]
root      4466  0.0  0.0      0     0 ?        S<   3月08   0:00 [hci0]
root      4467  0.0  0.0      0     0 ?        S<   3月08   0:00 [hci0]
root      4469  0.0  0.0      0     0 ?        S<   3月08   0:00 [kworker/u129:2]
root      4531  0.0  0.0      0     0 ?        S<   3月08   0:00 [xfs-buf/sda1]
root      4532  0.0  0.0      0     0 ?        S<   3月08   0:00 [xfs-data/sda1]
root      4536  0.0  0.0      0     0 ?        S<   3月08   0:00 [xfs-conv/sda1]
root      4543  0.0  0.0      0     0 ?        S<   3月08   0:00 [xfs-cil/sda1]
root      4544  0.0  0.0      0     0 ?        S<   3月08   0:00 [xfs-reclaim/sda]
root      4546  0.0  0.0      0     0 ?        S<   3月08   0:00 [xfs-log/sda1]
root      4547  0.0  0.0      0     0 ?        S<   3月08   0:00 [xfs-eofblocks/s]
root      4598  0.0  0.0      0     0 ?        S    3月08   0:00 [xfsaild/sda1]
root      5321  0.0  0.0  55520   896 ?        S<sl 3月08   0:00 /sbin/auditd
root      5344  0.0  0.1  26376  1752 ?        Ss   3月08   0:00 /usr/lib/systemd/systemd-logind
polkitd   5345  0.0  1.4 612996 14988 ?        Ssl  3月08   0:00 /usr/lib/polkit-1/polkitd --no-debug
root      5347  0.0  0.6  99664  6104 ?        Ss   3月08   0:00 /usr/bin/VGAuthService -s
root      5348  0.1  0.6 301088  6536 ?        Ssl  3月08   1:48 /usr/bin/vmtoolsd
dbus      5352  0.0  0.2  66468  2588 ?        Ssl  3月08   0:01 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfi
root      5401  0.0  0.1 126320  1736 ?        Ss   3月08   0:00 /usr/sbin/crond -n
root      5405  0.0  0.0 110092   856 tty1     Ss+  3月08   0:00 /sbin/agetty --noclear tty1 linux
root      5417  0.0  2.9 358564 29316 ?        Ssl  3月08   0:01 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
root      5446  0.0  1.0 555968 10804 ?        Ssl  3月08   0:02 /usr/sbin/NetworkManager --no-daemon
root      5913  0.0  0.4 112856  4304 ?        Ss   3月08   0:00 /usr/sbin/sshd -D
root      5914  0.0  0.4 214504  5008 ?        Ssl  3月08   0:07 /usr/sbin/rsyslogd -n
root      5917  0.0  1.9 573920 19172 ?        Ssl  3月08   0:11 /usr/bin/python2 -Es /usr/sbin/tuned -l -P
root      6014  0.0  0.2  89644  2160 ?        Ss   3月08   0:00 /usr/libexec/postfix/master -w
postfix   6016  0.0  0.4  89816  4088 ?        S    3月08   0:00 qmgr -l -t unix -u
root      6017  0.0  0.6 230976  6352 ?        Ss   3月08   0:06 php-fpm: master process (/usr/local/php-fpm/etc/php-fpm.conf)
php-fpm   6018  0.0  0.6 230976  6104 ?        S    3月08   0:00 php-fpm: pool www
php-fpm   6019  0.0  0.6 230976  6104 ?        S    3月08   0:00 php-fpm: pool www
root      6199  0.0  0.5 158860  5600 ?        Ss   3月08   0:01 sshd: root@pts/0
root      6202  0.0  0.2 115544  2116 pts/0    Ss   3月08   0:00 -bash
root      6254  0.0  0.0      0     0 ?        S    3月08   0:01 [kworker/u128:2]
root      7978  0.0  0.0      0     0 ?        S    3月08   0:00 [kworker/u128:0]
root      8096  0.0  0.0      0     0 ?        S    00:50   0:00 [kworker/0:1]
root      8100  0.0  0.0      0     0 ?        S    00:55   0:00 [kworker/0:0]
root      8125  0.0  0.0      0     0 ?        R    01:01   0:00 [kworker/0:2]
root      8168  0.0  0.0      0     0 ?        S    01:05   0:00 [kworker/0:3]
postfix   8172  0.0  0.4  89748  4060 ?        S    01:07   0:00 pickup -l -t unix -u
root      8180  0.0  0.1 155360  1892 pts/0    R+   01:10   0:00 ps -aux
  •  輸出結果:
  1. USER:用戶
  2. PID:進程號
  3. %CPU:CPU使用率
  4. %MEM:內存使用率
  5. VSZ:虛擬內存大小
  6. RSS:物理內存大小
  7. TTY,顯示?的tty都是在後臺運行的
  8. STAT:進程狀態
  9. START:進程啓動的時間
  10. TIME:進程空閒的時間
  11. COMMAND:對應的指令
  • 上面輸出的結果中STAT一列顯示的內容有:
  1. S Sleep
  2. R Running
  3. s 父進程
  4. N 低優先級
  5. < 高優先級
  6. +前臺進程
  7. l多線程進程
  8. Z殭屍進程
  • ps-elf跟aux相似,也是查看系統中全部的進程
[root@www ~]# ps -elf
F S UID        PID  PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
4 S root         1     0  0  80   0 - 32010 ep_pol 3月08 ?       00:00:03 /usr/lib/systemd/systemd --switched-root --system --deseri
1 S root         2     0  0  80   0 -     0 kthrea 3月08 ?       00:00:00 [kthreadd]
1 S root         3     2  0  80   0 -     0 smpboo 3月08 ?       00:00:00 [ksoftirqd/0]
1 S root         5     2  0  60 -20 -     0 worker 3月08 ?       00:00:00 [kworker/0:0H]
1 S root         7     2  0 -40   - -     0 smpboo 3月08 ?       00:00:00 [migration/0]

1 S root      8125     2  0  80   0 -     0 worker 01:01 ?        00:00:00 [kworker/0:2]
4 S postfix   8172  6014  0  80   0 - 22437 ep_pol 01:07 ?        00:00:00 pickup -l -t unix -u
1 S root      8181     2  0  80   0 -     0 worker 01:15 ?        00:00:00 [kworker/0:0]
0 R root      8182  6202  0  80   0 - 38840 -      01:18 pts/0    00:00:00 ps -elf
  • ps-eLf查看線程
[root@www ~]# ps -eLf
UID        PID  PPID   LWP  C NLWP STIME TTY          TIME CMD
root         1     0     1  0    1 3月08 ?       00:00:03 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root         2     0     2  0    1 3月08 ?       00:00:00 [kthreadd]
root         3     2     3  0    1 3月08 ?       00:00:00 [ksoftirqd/0]
root         5     2     5  0    1 3月08 ?       00:00:00 [kworker/0:0H]
root         7     2     7  0    1 3月08 ?       00:00:00 [migration/0]
root         8     2     8  0    1 3月08 ?       00:00:00 [rcu_bh]

root       684     2   684  0    1 3月08 ?       00:00:00 [ata_sff]
root       700     2   700  0    1 3月08 ?       00:00:00 [scsi_eh_0]
root       704     2   704  0    1 3月08 ?       00:00:00 [scsi_tmf_0]
root       710     2   710  0    1 3月08 ?       00:00:00 [scsi_eh_1]
root       712     2   712  0    1 3月08 ?       00:00:00 [scsi_tmf_1]

root      8125     2  8125  0    1 01:01 ?        00:00:00 [kworker/0:2]
postfix   8172  6014  8172  0    1 01:07 ?        00:00:00 pickup -l -t unix -u
root      8181     2  8181  0    1 01:15 ?        00:00:00 [kworker/0:0]
root      8184  6202  8184  0    1 01:19 pts/0    00:00:00 ps -eLf
  • ls /proc/pid(具體進程數)可查看一個進程的xian詳細信息

查看網絡鏈接情況

  • netstat -lnp(查看監聽端口)
  • netstat -lntp(只查看TCP協議相關)
  • netstat -lntup(查看TCP,UDP協議相關)
  • netstat -an(查看全部網絡鏈接情況) #呈現的內容中關於State字段的含義:LISTEN 監聽 TIME_WAIT已鏈接等待中 ESTABLISHED鏈接已創建(正在通訊)
  • 查看netstat-an有什麼用?能夠排查問題,是否有syn工具,ack攻擊
  • ss -an跟netstat -an輸入結果相似,可是相應速度比它快

抓包工具

tcpdump(安裝:yum install -y tcpdump)

tcpdump -nn -i 網卡名稱 port 端口號python

tcpdump -nn -i 網卡名稱 -c 100 -w 1.caplinux

tcpdump -i 網卡名稱 -nn not port 22 and not  host IP地址 ios

tcpdump -nn -r 1.cap 數組

參數解釋:-nn    以數字形式表示連接緩存

                 -i    指定網卡bash

                 -c    加數字指定輸出多少條記錄網絡

                 -w    將內容寫到指定文件多線程

                 -r    讀取指定文件的內容(約定以.cap爲後綴)    .cap文件比直接使用命令輸出的結果更詳細ssh

                 port    指定端口

                 host    指定IP              

                多個篩選條件之間使用and鏈接

wireshark分析抓包工具(安裝:yum install -y wireshark)

tshark -i 網卡名稱  -n -t a -R http.request -T fields -e "frame.time" -e "ip.src" -e "http.host" -e "http.request.method" -e "http.request.uri"

#tshark是wireshark包的命令,帶有分析功能

 輸出結果相似於訪問日誌 #能夠看來源IP 時間 域名 URL 

 小常識:

bit 比特(帶寬單位)
Byte 字節 (速度傳輸單位) 迅雷 磁盤存儲也是B單位
8b=1B
相關文章
相關標籤/搜索