目录
一、字符界面工具 tophtopiotopglances 二、图形化界面工具 bottomnetdata一、字符界面工具
1、top
Top命令为Linux系统默认自带的性能监控命令:
[user@localhost home]$ toptop - 11:28:13 up 1 day, 48 min, 1 user, load average: 0.00, 0.02, 0.05Tasks: 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 stKiB Mem : 498684 total, 75676 free, 240852 used, 182156 buff/cacheKiB Swap: 2097148 total, 1824136 free, 273012 used. 243372 avail MemPID USERPR NI VIRT RES SHR S %CPU %MEMTIME+ COMMAND1 root20 0 128036 3780 2312 S 0.0 0.8 0:01.44 systemd2 root20 0 000 S 0.0 0.0 0:00.00 kthreadd4 root 0 -20 000 S 0.0 0.0 0:00.00 kworker/0:0H5 root20 0 000 S 0.0 0.0 0:00.51 kworker/u2:06 root20 0 000 S 0.0 0.0 0:00.54 ksoftirqd/07 rootrt 0 000 S 0.0 0.0 0:00.00 migration/08 root20 0 000 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
:进程启动的启动命令名称;
2、htop
htop是top的扩展版本,能更全面的监控进程(比如:全命令展示,可视化、gui 和 ui)通过点击鼠标进行交互,更有很丰富的指导说明如何管理进程
安装命令(CentOS):
yum -y install epel-releaseyum -y install htop
直接运行命令:
[user@localhost home]$ htop
效果如下:
我们可以通过直接点击各列来进行排序,比如点击CPU%则按CPU的占比进行排序。
3、iotop
iotop可以实时监控IO的情况,它将显示出被监控进程的详细的写入读出(IO) 情况。
安装命令(CentOS):
yum install iotop
直接运行命令,监控所有进程:
[user@localhost home]$ iotopTotal DISK READ : 0.00 B/s | Total DISK WRITE : 0.00 B/sActual DISK READ: 0.00 B/s | Actual DISK WRITE: 0.00 B/sTID PRIO USERDISK READ DISK WRITE SWAPINIO> COMMAND1 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 Total DISK READ : 0.00 B/s | Total DISK WRITE : 0.00 B/sActual DISK READ: 0.00 B/s | Actual DISK WRITE: 0.00 B/sTID PRIO USERDISK READ DISK WRITE SWAPINIO> COMMAND 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/秒。
4、glances
Glances命令会分栏显示一些很有用的实时动态数据, 其目标就是利用最小的空间显示尽可能多的有用信息。Glances监控了PerCPU,负载,内存,数据交换,网络,磁盘I/O,加载数据和进程。
安装命令(CentOS):
yum install -y glances
运行命令:
[user@localhost home]$ glnaceslocalhost.localdomain (CentOS Linux 7.8. 64bit / Linux 3.10.0-1127.el7.x86_64) Uptime: 1 day, 1:11:36CPU [ 3.2%] CPU 3.2% nice:0.0% MEM52.7% active:138M SWAP13.2% LOAD 1-coreMEM [ 52.7%] user:2.3% irq:0.0% total: 487M inactive: 192M total: 2.00G 1 min: 0.00SWAP [ 13.2%] system: 0.6% iowait: 0.0% used: 257M buffers:24K used:271M 5 min: 0.01idle: 97.1% steal: 0.0% free: 230M cached:183M free: 1.74G 15 min: 0.05NETWORKRx/s Tx/s TASKS 89 (218 thr), 2 run, 87 slp, 0 oth sorted automatically by cpu_percent, flat viewdocker0 0b0beth0 152b 152bCPU% MEM% VIRT RES PID USER NI STIME+ IOR/s IOW/s Commandeth1 152b 880b2.9 3.2 225M 15.5M 3159 root 0 R 0:00.5400 /usr/bin/python /uslo 0b0b0.3 0.2 57.1M 824K 1299 polkitd0 S 1:24.0000 redis-server *:6379_h2d311a80b0b0.3 0.000 3158 root 0 S 0:00.1000 kworker/0:1_h77ccd2c0b0b0.3 22.8 2.10G 111M root 0 S 1:02.7000 java -jar config-se0.0 0.0006 root 0 R 0:00.5700 ksoftirqd/0DISK I/OR/s W/s0.0 0.000 16 root -20 S 0:00.0000 writebacksda 0 9880.0 0.000 21 root -20 S 0:00.0000 kblockdsda1 0 9880.0 0.000 47 root -20 S 0:00.0000 ipv6_addrconf0.0 0.000 45 root -20 S 0:00.0000 kaluadFILE SYS Used Total0.0 0.1 204M 620K 1243 root 0 S 0:00.5000 /usr/bin/docker-pro/ (sda1) 7.53G 40.0G0.0 0.1 54.2M 688K 299 root -4 S 0:00.6000 /sbin/auditd0.0 0.6 683M 2.71M 416 root 0 S 0:01.9600 /usr/sbin/NetworkMa0.0 0.000 20 root -20 S 0:00.0000 bioset
二、图形化界面工具
1、bottom
这是一个使用Rust编写的跨平台图形界面监控工具,其开源项目地址:/ClementTsang/bottom。
安装命令(CentOS):
# 安装 dnfyum install dnf# 使用 dnf 安装 coprdnf install 'dnf-command(copr)'# 安装 bottomdnf copr enable atim/bottomdnf install bottom
运行bottom:
[user@localhost home]$ btm
(可以添加颜色主题参数,比如:--color nord
)
2、netdata
炫酷的监控工具,同时也是开源免费的项目,开源地址为:/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相关命令控制该容器的启动和关闭即可,下面介绍脚本安装的操作命令:
# 启动 netstatsystemctl start netdata# 关闭 netstatsystemctl stop netdata# 查看 netstat 运行状态systemctl status netdata
启动成功之后可以看到以下运行状态:
[user@localhost home]$ systemctl status netdata● netdata.service - Real time performance monitoringLoaded: loaded (/usr/lib/systemd/system/netdata.service; enabled; vendor preset: disabled)Active: active (running) since Tue -03-01 16:12:32 CST; 6s agoProcess: 9088 ExecStartPre=/bin/chown -R netdata:netdata /var/run/netdata (code=exited, status=0/SUCCESS)fdProcess: 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: 38Memory: 77.8MCGroup: /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为了监控,还安装了很多其它软件,长期在后台运行,严重影响了服务器速度,所以不建议实际生产环境服务器安装!!!