監控Linux系統狀態java
查看系統的負載:mysql
w/uptime 最後三個數字表示1分鐘,5分鐘,15分鐘平均有多少個進程佔用cpu,佔用cpu的進程能夠是running,也能夠是waiting,某一時刻1顆cpu只能有一個進程在使用其資源 # w 17:14:43 up 2:08, 1 user, load average: 0.10, 0.12, 0.08 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root pts/0 192.168.1.6 15:08 3.00s 28.66s 0.01s w # uptime 17:20:09 up 2:14, 1 user, load average: 0.01, 0.06, 0.06
top命令:ios
動態查看系統狀態工具,默認按cpu佔用百分比排序,能夠按M鍵按照內存使用率大小排序,按數字1,能夠顯示全部cpu使用率狀況nginx
# top top - 17:23:31 up 2:17, 1 user, load average: 0.07, 0.05, 0.05 Tasks: 111 total, 1 running, 110 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.7 us, 0.3 sy, 0.0 ni, 99.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 995924 total, 168744 free, 404788 used, 422392 buff/cache KiB Swap: 2047996 total, 2047996 free, 0 used. 417724 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 7272 root 20 0 2504700 69916 13232 S 1.7 7.0 0:25.74 java 6794 mysql 20 0 1725288 92360 11884 S 0.7 9.3 0:15.63 mysqld 2907 root 20 0 0 0 0 S 0.3 0.0 0:01.88 xfsaild/s+ 6609 root 20 0 220784 4716 3328 S 0.3 0.5 0:01.08 rsyslogd 7253 root 20 0 2794968 128804 14784 S 0.3 12.9 0:23.57 java 7356 root 20 0 161996 2240 1572 R 0.3 0.2 0:00.17 top 1 root 20 0 125428 3904 2624 S 0.0 0.4 0:01.42 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd 3 root 20 0 0 0 0 S 0.0 0.0 0:00.24 ksoftirqd+ 5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0+ 7 root rt 0 0 0 0 S 0.0 0.0 0:00.05 migration+ 8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh 9 root 20 0 0 0 0 S 0.0 0.0 0:01.93 rcu_sched 10 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 lru-add-d+ 11 root rt 0 0 0 0 S 0.0 0.0 0:00.08 watchdog/0 12 root rt 0 0 0 0 S 0.0 0.0 0:00.07 watchdog/1 13 root rt 0 0 0 0 S 0.0 0.0 0:00.05 migration+ 14 root 20 0 0 0 0 S 0.0 0.0 0:00.13 ksoftirqd+ 16 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/1+ 18 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kdevtmpfs 19 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 netns 20 root 20 0 0 0 0 S 0.0 0.0 0:00.00 khungtaskd 21 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 writeback 22 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kintegrit+ 23 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 bioset 按q退出動態的top # top -bnl //按cpu拍訊展現,不動態展現,方便在shell中使用命令
查看內核信息:sql
# cat /proc/cpuinfo //能夠查看系統有幾核cpu # lscpu //也能夠查看cpu信息
free命令:shell
free查看內存和swap使用狀況,關注最後一列的avaliable服務器
# free total used free shared buff/cache available Mem: 995924 403284 169696 7768 422944 418948 Swap: 2047996 0 2047996 buffer:這部份內存是從cpu產生即將寫入到磁盤裏去的那部分數據 cached:這部分數據是先從磁盤裏讀出來,而後臨時存到內存裏的那部分數據 free -h -k -m -g 等參數按指定單位展現內存使用狀況
手動增長swap:網絡
[root@wangzb01 ~]# dd if=/dev/zero of=/bigfile bs=1M count=1000 記錄了1000+0 的讀入 記錄了1000+0 的寫出 1048576000字節(1.0 GB)已複製,3.89422 秒,269 MB/秒 [root@wangzb01 /]# du -sh /bigfile //查看文件大小 1000M /bigfile [root@wangzb01 ~]# mkswap /bigfile //格式化空間 正在設置交換空間版本 1,大小 = 1023996 KiB 無標籤,UUID=bfb15484-027d-4a52-b58c-5962b355e3dc [root@wangzb01 ~]# chmod 600 /bigfile //修改權限 [root@wangzb01 ~]# swapon /bigfile //掛載
監控磁盤:多線程
命令1:iostat --> yum install -y sysstatdom
# yum install -y sysstat [root@wangzb01 /]# iostat Linux 3.10.0-957.el7.x86_64 (wangzb01) 2019年02月24日 _x86_64_ (2 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 0.35 0.00 0.28 0.03 0.00 99.34 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn scd0 0.00 0.07 0.00 1028 0 sda 3.45 65.32 75.94 913291 1061800 [root@wangzb01 /]# iostat -dx Linux 3.10.0-957.el7.x86_64 (wangzb01) 2019年02月24日 _x86_64_ (2 CPU) Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util scd0 0.00 0.00 0.00 0.00 0.07 0.00 114.22 0.00 1.39 1.39 0.00 1.06 0.00 sda 0.00 0.04 3.04 0.40 65.11 75.48 81.65 0.00 0.55 0.41 1.62 0.35 0.12 [root@wangzb01 /]# iostat -dx 1 //1表示每隔一秒鐘顯示一次 [root@wangzb01 /]# iostat 1 5 //1,5表示每一個1秒鐘顯示5次
命令2:iotop --> yum install -y iotop
能夠把全部的進程使用磁盤的百分比列出來
[root@wangzb01 /]# yum install -y iotop [root@wangzb01 /]# iotop Total DISK READ : 0.00 B/s | Total DISK WRITE : 0.00 B/s Actual DISK READ: 0.00 B/s | Actual DISK WRITE: 0.00 B/s TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
vmstat 1 10 命令
[root@wangzb01 /]# vmstat 1 10 //每隔1秒顯示一次,共顯示10次 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 1544 132384 0 455264 0 0 32 37 62 103 0 0 99 0 0 0 0 1544 132408 0 455276 0 0 0 0 175 295 0 0 100 0 0 0 0 1544 132408 0 455276 0 0 0 0 165 263 1 1 99 0 0 0 0 1544 132408 0 455276 0 0 0 0 175 295 1 0 99 0 0 0 0 1544 132408 0 455276 0 0 0 0 172 288 1 1 99 0 0 0 0 1544 132408 0 455276 0 0 0 0 163 278 0 0 100 0 0 0 0 1544 132408 0 455276 0 0 0 0 190 302 0 1 99 0 0 0 0 1544 132408 0 455276 0 0 0 0 165 282 1 0 99 0 0 0 0 1544 132408 0 455276 0 0 0 0 190 299 1 1 99 0 0 0 0 1544 132408 0 455276 0 0 0 0 174 279 1 1 99 0 0
關注:r、b、si、so、bi、bo、id、wa
id這一列表示cpu空閒比例 si = swap in ==> 表示從swap出來進入到內存裏(讀swap) procs表示進程佔用cpu的進程 b表示被阻塞的進程 wa表示等待cpu的百分比
監控網卡流量的命令:sar
sar和iostat都是有包sysstat安裝的
[root@wangzb01 /]# sar -n DEV 1 5 Linux 3.10.0-957.el7.x86_64 (wangzb01) 2019年02月24日 _x86_64_ (2 CPU) 20時14分45秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 20時14分46秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 20時14分46秒 ens33 0.00 0.00 0.00 0.00 0.00 0.00 0.00 20時14分46秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 20時14分47秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 20時14分47秒 ens33 1.00 1.00 0.06 0.38 0.00 0.00 0.00 20時14分47秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 20時14分48秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 20時14分48秒 ens33 2.00 2.00 0.12 0.44 0.00 0.00 0.00 20時14分48秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 20時14分49秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 20時14分49秒 ens33 1.00 1.00 0.06 0.38 0.00 0.00 0.00 20時14分49秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 20時14分50秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 20時14分50秒 ens33 1.00 1.00 0.06 0.38 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 1.00 1.00 0.06 0.32 0.00 0.00 0.00 [root@wangzb01 /]# sar //查看cpu Linux 3.10.0-957.el7.x86_64 (wangzb01) 2019年02月24日 _x86_64_ (2 CPU) 19時50分01秒 CPU %user %nice %system %iowait %steal %idle 20時00分01秒 all 0.77 0.00 0.33 0.01 0.00 98.89 20時10分01秒 all 0.38 0.00 0.19 0.00 0.00 99.43 20時20分01秒 all 0.39 0.00 0.23 0.00 0.00 99.38 平均時間: all 0.51 0.00 0.25 0.00 0.00 99.23 [root@wangzb01 /]# sar -b //查看磁盤 Linux 3.10.0-957.el7.x86_64 (wangzb01) 2019年02月24日 _x86_64_ (2 CPU) 19時50分01秒 tps rtps wtps bread/s bwrtn/s 20時00分01秒 1.21 0.52 0.70 36.74 15.80 20時10分01秒 0.45 0.25 0.20 13.66 3.12 20時20分01秒 0.19 0.00 0.19 0.00 2.90 平均時間: 0.62 0.25 0.36 16.80 7.27 [root@wangzb01 /]# sar -q //查看歷史系統負載 Linux 3.10.0-957.el7.x86_64 (wangzb01) 2019年02月24日 _x86_64_ (2 CPU) 19時50分01秒 runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked 20時00分01秒 0 237 0.02 0.05 0.05 0 20時10分01秒 0 238 0.00 0.01 0.05 0 20時20分01秒 0 238 0.00 0.01 0.05 0 平均時間: 0 238 0.01 0.02 0.05 0
nload命令:
動態顯示網卡流量,按右鍵切換網卡
[root@wangzb01 /]# yum install -y epel-release [root@wangzb01 /]# yum install -y nload [root@wangzb01 /]# nload Device ens33 [192.168.1.34] (1/2): ======================================================================================== Incoming: Curr: 944.00 Bit/s Avg: 1.39 kBit/s Min: 936.00 Bit/s Max: 3.55 kBit/s Ttl: 2.54 MByte Outgoing:
查看網卡的信息:
[root@wangzb01 /]# 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 Curr: 7.79 kBit/s Avg: 7.69 kBit/s Min: 3.77 kBit/s Max: 7.85 kBit/s Ttl: 122.42 MByte
查看網卡是否在鏈接狀態:
[root@wangzb01 /]# mii-tool ens33 ens33: negotiated 1000baseT-FD flow-control, link ok
查看進程:
[root@wangzb01 /]# ps aux //查看全部用戶的進程 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.3 125428 3752 ? Ss 15:56 0:04 /usr/lib/systemd/syste root 2 0.0 0.0 0 0 ? S 15:56 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S 15:56 0:00 [ksoftirqd/0] root 5 0.0 0.0 0 0 ? S< 15:56 0:00 [kworker/0:0H] root 7 0.0 0.0 0 0 ? S 15:56 0:00 [migration/0] root 8 0.0 0.0 0 0 ? S 15:56 0:00 [rcu_bh] root 9 0.0 0.0 0 0 ? S 15:56 0:05 [rcu_sched] root 10 0.0 0.0 0 0 ? S< 15:56 0:00 [lru-add-drain] root 11 0.0 0.0 0 0 ? S 15:56 0:00 [watchdog/0] root 12 0.0 0.0 0 0 ? S 15:56 0:00 [watchdog/1] 字段說明 USER 進程的屬主; PID 進程的ID; PPID 父進程; %CPU 進程佔用的CPU百分比; %MEM 佔用內存的百分比; NI 進程的NICE值,數值大,表示較少佔用CPU時間; VSZ 進程使用的虛擬內存量(KB); RSS 該進程佔用的固定內存量(KB)(駐留中頁的數量); TTY 該進程在那個終端上運行(登錄者的終端位置),若與終端無關,則顯示(?)。 若爲pts/0等,則表示由網絡鏈接主機進程 WCHAN 當前進程是否正在進行,若爲-表示正在進行; START 該進程被觸發啓動時間; TIME該進程實際使用CPU運行的時間; COMMAND 命令的名稱和參數; # ps -elf //也能夠查看系統全部用戶的進程 # ps -eLf //能夠查看到全部用戶的線程 [root@wangzb01 /]# ps -eLf | grep mysql root 6661 1 6661 0 1 15:56 ? 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/wangzb01.pid mysql 6794 6661 6794 0 40 15:56 ? 00:00:00 /usr/local/mysql/bin/mysqd --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/mysql/mariadb.log --pid-file=/data/mysql/wangzb01.pid --socket=/tmp/mysql.sock mysql 6794 6661 6818 0 40 15:56 ? 00:00:00 /usr/local/mysql/bin/mysqd --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/mysql/mariadb.log --pid-file=/data/mysql/wangzb01.pid --socket=/tmp/mysql.sock mysql 6794 6661 6860 0 40 15:56 ? 00:00:00 /usr/local/mysql/bin/mysqd --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/mysql/mariadb.log --pid-file=/data/mysql/wangzb01.pid --socket=/tmp/mysql.sock mysql 6794 6661 6873 0 40 15:56 ? 00:00:03 /usr/local/mysql/bin/mysqd --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/mysql/mariadb.log --pid-file=/data/mysql/wangzb01.pid --socket=/tmp/mysql.sock STAT說明: S sleep R Running s 父進程 N 低進程 < 高優先級 + 前臺進程 1 多線程進程 Z 殭屍進程 //父進程已被殺死,只剩下子進程,這種進程只能重啓服務器
查看網絡鏈接情況:netstat
[root@wangzb01 /]# netstat -lnp // 查看監聽端口 Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 7161/nginx: master tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 7095/pure-ftpd (SER tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 6606/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 6862/master tcp6 0 0 127.0.0.1:44200 :::* LISTEN 7272/java tcp6 0 0 127.0.0.1:24200 :::* LISTEN 7272/java tcp6 0 0 :::8009 :::* LISTEN 7253/java tcp6 0 0 :::3306 :::* LISTEN 6794/mysqld tcp6 0 0 :::8080 :::* LISTEN 7253/java tcp6 0 0 :::21 :::* LISTEN 7095/pure-ftpd (SER tcp6 0 0 :::22 :::* LISTEN 6606/sshd tcp6 0 0 127.0.0.1:54200 :::* LISTEN 7272/java tcp6 0 0 ::1:25 :::* LISTEN 6862/master tcp6 0 0 127.0.0.1:8005 :::* LISTEN 7253/java udp 0 0 127.0.0.1:323 0.0.0.0:* 5978/chronyd udp6 0 0 ::1:323 :::* 5978/chronyd raw6 0 0 :::58 :::* 7 6124/NetworkManager Active UNIX domain sockets (only servers) Proto RefCnt Flags Type State I-Node PID/Program name Path unix 2 [ ACC ] SEQPACKET LISTENING 21273 1/systemd /run/udev/control unix 2 [ ACC ] STREAM LISTENING 37181 6794/mysqld /tmp/mysql.sock unix 2 [ ACC ] STREAM LISTENING 38240 6862/master public/pickup unix 2 [ ACC ] STREAM LISTENING 38244 6862/master public/cleanup unix 2 [ ACC ] STREAM LISTENING 38247 6862/master public/qmgr unix 2 [ ACC ] STREAM LISTENING 38269 6862/master public/flush [root@wangzb01 /]# netstat -lnpt //只查看監聽端口 [root@wangzb01 /]# netstat -lntup [root@wangzb01 /]# ss -an //查看系統全部的網絡鏈接情況,方便排查問題
抓包工具:tcpdump
[root@wangzb01 ~]# yum install -y tcpdump [root@wangzb01 ~]# tcpdump -nn -i ens33 port 22 -c 10 -w 1.cap //抓取網卡ens33 端口22的包 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes 21:32:46.400419 IP 192.168.1.34.22 > 192.168.1.6.59757: Flags [P.], seq 906713938:906714134, ack 897767194, win 308, length 196 21:32:46.401299 IP 192.168.1.6.59757 > 192.168.1.34.22: Flags [.], ack 196, win 2050, length 0 21:32:46.401671 IP 192.168.1.34.22 > 192.168.1.6.59757: Flags [P.], seq 196:472, ack 1, win 308, length 276 21:32:46.401884 IP 192.168.1.34.22 > 192.168.1.6.59757: Flags [P.], seq 472:620, ack 1, win 308, length 148 21:32:46.402164 IP 192.168.1.6.59757 > 192.168.1.34.22: Flags [.], ack 620, win 2049, length 0 21:32:46.402298 IP 192.168.1.34.22 > 192.168.1.6.59757: Flags [P.], seq 620:768, ack 1, win 308, length 148 21:32:46.402939 IP 192.168.1.34.22 > 192.168.1.6.59757: Flags [P.], seq 768:916, ack 1, win 308, length 148 21:32:46.403545 IP 192.168.1.6.59757 > 192.168.1.34.22: Flags [.], ack 916, win 2048, length 0 21:32:46.403678 IP 192.168.1.34.22 > 192.168.1.6.59757: Flags [P.], seq 916:1064, ack 1, win 308, length 148 21:32:46.403911 IP 192.168.1.34.22 > 192.168.1.6.59757: Flags [P.], seq 1064:1308, ack 1, win 308, length 244 10 packets captured 11 packets received by filter 0 packets dropped by kernel -c 抓10個包 -w 寫入到1.tcp文件裏 [root@wangzb01 ~]# tcpdump -i ens33 -nn not port 22
另外一個抓包工具:wireshark,用法和tcpdump差很少
[root@wangzb01 ~]# yum install -y wireshark [root@wangzb01 ~]# tshark -nn -i ens33 [root@wangzb01 ~]# tshark -nn -i ens33 -c 10 Running as user "root" and group "root". This could be dangerous. Capturing on 'ens33' 1 0.000000000 192.168.1.6 -> 192.168.1.34 TCP 60 59757 > 22 [ACK] Seq=1 Ack=1 Win=2050 Len=0 2 0.502757965 192.168.1.34 -> 192.168.1.6 SSH 202 Encrypted response packet len=148 3 0.543771136 192.168.1.6 -> 192.168.1.34 TCP 60 59757 > 22 [ACK] Seq=1 Ack=149 Win=2049 Len=0 4 1.045100849 192.168.1.34 -> 192.168.1.6 SSH 282 Encrypted response packet len=228 5 1.085949444 192.168.1.6 -> 192.168.1.34 TCP 60 59757 > 22 [ACK] Seq=1 Ack=377 Win=2048 Len=0 6 1.589157528 192.168.1.34 -> 192.168.1.6 SSH 282 Encrypted response packet len=228 7 1.629390888 192.168.1.6 -> 192.168.1.34 TCP 60 59757 > 22 [ACK] Seq=1 Ack=605 Win=2047 Len=0 8 2.138065847 192.168.1.34 -> 192.168.1.6 SSH 282 Encrypted response packet len=228 9 2.178521381 192.168.1.6 -> 192.168.1.34 TCP 60 59757 > 22 [ACK] Seq=1 Ack=833 Win=2053 Len=0 10 2.680993724 192.168.1.34 -> 192.168.1.6 SSH 282 Encrypted response packet len=228 10 packets captured