【Linux】之 Linux 性能监控工具

目录


  • 一、字符界面工具
    • top
    • htop
    • iotop
    • glances
  • 二、图形化界面工具
    • bottom
    • netdata

一、字符界面工具

1、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:进程启动的启动命令名称;

2、htop

htoptop 的扩展版本,能更全面的监控进程(比如:全命令展示,可视化、gui 和 ui通过点击鼠标进行交互,更有很丰富的指导说明如何管理进程

安装命令(CentOS ):

yum -y install epel-release
yum -y install htop

直接运行命令:

[user@localhost home]$ htop

效果如下:
【Linux】之 Linux 性能监控工具_第1张图片
我们可以通过直接点击各列来进行排序,比如点击 CPU% 则按 CPU 的占比进行排序。

3、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/秒。

4、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

二、图形化界面工具


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

(可以添加颜色主题参数,比如:--color nord
【Linux】之 Linux 性能监控工具_第2张图片

2、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:19999ipnetdata 所在服务器地址)即可看到(记得开放 19999 端口):
【Linux】之 Linux 性能监控工具_第3张图片

注意: 该工具会占用比较大的内存和 CPU,并且 Netdata 为了监控,还安装了很多其它软件,长期在后台运行,严重影响了服务器速度,所以不建议实际生产环境服务器安装!!!

你可能感兴趣的:(Linux,linux)