top
Top 命令为 Linux 系统默认自带的性能监控命令:
[user@localhost home]$ top
top - 11:28:13 up 1 day, 48 min, 1 user, load average: 0.00, 0.02, 0.05
Tasks: 89 total, 2 running, 87 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
KiB Mem : 498684 total, 75676 free, 240852 used, 182156 buff/cache
KiB Swap: 2097148 total, 1824136 free, 273012 used. 243372 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 128036 3780 2312 S 0.0 0.8 0:01.44 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
4 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
5 root 20 0 0 0 0 S 0.0 0.0 0:00.51 kworker/u2:0
6 root 20 0 0 0 0 S 0.0 0.0 0:00.54 ksoftirqd/0
7 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
各项含义:
PID
:进行的标识号;USER
:运行此进程的用户;PR/PRI
:进程的优先级;NI
:进程的优先级别值,默认的为0,可以进行调整;VIRT
:进程占用的虚拟内存值;RES
:进程占用的物理内存值;SHR
:进程占用的共享内存值;S
:进程的运行状况,R表示正在运行、S表示休眠,等待唤醒、Z表示僵死状态;%CPU
:该进程占用的CPU使用率;%MEM
:该进程占用的物理内存和总内存的百分比;TIME+
:该进程启动后占用的总的CPU时间;COMMAND
:进程启动的启动命令名称;htop
htop 是 top 的扩展版本,能更全面的监控进程(比如:全命令展示,可视化、gui 和 ui)通过点击鼠标进行交互,更有很丰富的指导说明如何管理进程
安装命令(CentOS ):
yum -y install epel-release
yum -y install htop
直接运行命令:
[user@localhost home]$ htop
效果如下:
我们可以通过直接点击各列来进行排序,比如点击 CPU% 则按 CPU 的占比进行排序。
iotop
iotop 可以实时监控 IO 的情况,它将显示出被监控进程的详细的写入读出(IO) 情况。
安装命令(CentOS ):
yum install iotop
直接运行命令,监控所有进程:
[user@localhost home]$ 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
1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % systemd
2 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kthreadd]
4 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kworker/0:0H]
5 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kworker/u2:0]
可以指定进程:
[user@localhost home]$ iotop -p 2003
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
2003 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % java -jar demo-server-1.2.2.jar
列出信息中最有用的就是 DISK WRITE 列了,从这就能看到每个进程的 IO 到底是多少 K/秒。
glances
Glances 命令会分栏显示一些很有用的实时动态数据, 其目标就是利用最小的空间显示尽可能多的有用信息。Glances 监控了 PerCPU,负载,内存,数据交换,网络,磁盘I/O,加载数据和进程。
安装命令(CentOS ):
yum install -y glances
运行命令:
[user@localhost home]$ glnaces
localhost.localdomain (CentOS Linux 7.8.2003 64bit / Linux 3.10.0-1127.el7.x86_64) Uptime: 1 day, 1:11:36
CPU [ 3.2%] CPU 3.2% nice: 0.0% MEM 52.7% active: 138M SWAP 13.2% LOAD 1-core
MEM [ 52.7%] user: 2.3% irq: 0.0% total: 487M inactive: 192M total: 2.00G 1 min: 0.00
SWAP [ 13.2%] system: 0.6% iowait: 0.0% used: 257M buffers: 24K used: 271M 5 min: 0.01
idle: 97.1% steal: 0.0% free: 230M cached: 183M free: 1.74G 15 min: 0.05
NETWORK Rx/s Tx/s TASKS 89 (218 thr), 2 run, 87 slp, 0 oth sorted automatically by cpu_percent, flat view
docker0 0b 0b
eth0 152b 152b CPU% MEM% VIRT RES PID USER NI S TIME+ IOR/s IOW/s Command
eth1 152b 880b 2.9 3.2 225M 15.5M 3159 root 0 R 0:00.54 0 0 /usr/bin/python /us
lo 0b 0b 0.3 0.2 57.1M 824K 1299 polkitd 0 S 1:24.00 0 0 redis-server *:6379
_h2d311a8 0b 0b 0.3 0.0 0 0 3158 root 0 S 0:00.10 0 0 kworker/0:1
_h77ccd2c 0b 0b 0.3 22.8 2.10G 111M 2003 root 0 S 1:02.70 0 0 java -jar config-se
0.0 0.0 0 0 6 root 0 R 0:00.57 0 0 ksoftirqd/0
DISK I/O R/s W/s 0.0 0.0 0 0 16 root -20 S 0:00.00 0 0 writeback
sda 0 988 0.0 0.0 0 0 21 root -20 S 0:00.00 0 0 kblockd
sda1 0 988 0.0 0.0 0 0 47 root -20 S 0:00.00 0 0 ipv6_addrconf
0.0 0.0 0 0 45 root -20 S 0:00.00 0 0 kaluad
FILE SYS Used Total 0.0 0.1 204M 620K 1243 root 0 S 0:00.50 0 0 /usr/bin/docker-pro
/ (sda1) 7.53G 40.0G 0.0 0.1 54.2M 688K 299 root -4 S 0:00.60 0 0 /sbin/auditd
0.0 0.6 683M 2.71M 416 root 0 S 0:01.96 0 0 /usr/sbin/NetworkMa
0.0 0.0 0 0 20 root -20 S 0:00.00 0 0 bioset
bottom
这是一个使用 Rust 编写的跨平台图形界面监控工具,其开源项目地址:https://github.com/ClementTsang/bottom。
安装命令(CentOS):
# 安装 dnf
yum install dnf
# 使用 dnf 安装 copr
dnf install 'dnf-command(copr)'
# 安装 bottom
dnf copr enable atim/bottom
dnf install bottom
运行 bottom:
[user@localhost home]$ btm
netdata
炫酷的监控工具,同时也是开源免费的项目,开源地址为:https://github.com/netdata/netdata
一键脚本安装命令:
wget -O /tmp/netdata-kickstart.sh https://my-netdata.io/kickstart.sh && sh /tmp/netdata-kickstart.sh
Docker 安装(建议首选该方式!):
docker run -d --name=netdata \
-p 19999:19999 \
-v netdataconfig:/etc/netdata \
-v netdatalib:/var/lib/netdata \
-v netdatacache:/var/cache/netdata \
-v /etc/passwd:/host/etc/passwd:ro \
-v /etc/group:/host/etc/group:ro \
-v /proc:/host/proc:ro \
-v /sys:/host/sys:ro \
-v /etc/os-release:/host/etc/os-release:ro \
--restart unless-stopped \
--cap-add SYS_PTRACE \
--security-opt apparmor=unconfined \
netdata/netdata
如果是 docker 安装的话就使用 docker 相关命令控制该容器的启动和关闭即可,下面介绍脚本安装的操作命令:
# 启动 netstat
systemctl start netdata
# 关闭 netstat
systemctl stop netdata
# 查看 netstat 运行状态
systemctl status netdata
启动成功之后可以看到以下运行状态:
[user@localhost home]$ systemctl status netdata
● netdata.service - Real time performance monitoring
Loaded: loaded (/usr/lib/systemd/system/netdata.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2022-03-01 16:12:32 CST; 6s ago
Process: 9088 ExecStartPre=/bin/chown -R netdata:netdata /var/run/netdata (code=exited, status=0/SUCCESS)fd
Process: 9086 ExecStartPre=/bin/mkdir -p /var/run/netdata (code=exited, status=0/SUCCESS)
Process: 9083 ExecStartPre=/bin/chown -R netdata:netdata /var/cache/netdata (code=exited, status=0/SUCCESS)
Process: 9082 ExecStartPre=/bin/mkdir -p /var/cache/netdata (code=exited, status=0/SUCCESS)
Main PID: 9090 (netdata)
Tasks: 38
Memory: 77.8M
CGroup: /system.slice/netdata.service
├─9090 /usr/sbin/netdata -P /var/run/netdata/netdata.pid -D
├─9094 /usr/sbin/netdata --special-spawn-server
├─9211 bash /usr/libexec/netdata/plugins.d/tc-qos-helper.sh 1
├─9215 /usr/libexec/netdata/plugins.d/apps.plugin 1
├─9219 /usr/libexec/netdata/plugins.d/go.d.plugin 1
└─9222 /usr/bin/python3 /usr/libexec/netdata/plugins.d/python.d.plugin 1
启动成功之后,在浏览器输入:http://ip:19999
(ip 为 netdata 所在服务器地址)即可看到(记得开放 19999 端口):
注意: 该工具会占用比较大的内存和 CPU,并且 Netdata 为了监控,还安装了很多其它软件,长期在后台运行,严重影响了服务器速度,所以不建议实际生产环境服务器安装!!!