对于Linux系统, 很多时候我们需要知道系统的负载信息, 特别是在诸如压力测试的情况下.
当然, 如果你用一些云服务, 可能它们自带就有一些监控的负载数据. 诸如CPU, 内存, 网络等情况. 但有时候, 我们并不喜欢使用云服务自带的监控, 这时候也许你需要一个更安全及私有化的解决方案.
这就是我今天要说的nmon了.
如果你使用Linux, 一定使用过诸如top
,free
,fdisk
等命令, 你会经常使用这些命令来查阅当前系统的一些资源负载情况, 比如CPU, 内存或硬盘等.
这些命令虽然很常用, 但有两个存在的问题:
所以, 我们当然期望有一个能够持续收集各个维度的更方便的工具. 这就是nmon的作用了.
nmon是一个系统监控与收集工具, 它可以瞬时或持续的收集系统各个维度的资源负载数据. 无论是在你需要查阅某一时刻的特定或多个资源负载, 或是在性能压力测试等场景下, 持续的收集资源负载数据. nmon都是你不可多得的好帮手.
在介绍如何具体使用nmon工具之前, 简单的介绍下如何安装这个工具.
基于包管理安装
Linux上安装软件, 最方便的都是基于系统对应的包管理来安装. 对于nmon也是如此. 基本上主要的Linux操作系统, 特别是面向服务器的, 它们的包管理器中都有这个工具.
#debian/ubuntu系
sudo apt install nmon
#CentOS/RHEL系
sudo yum install nmon
#fedora
sudo dnf install nmon
#SUSE系
sudo zypper install nmon
安装完成后, 通过以下命令确认nmon安装是否成功及安装的版本信息
nmon -V
#在Debian 12上会显示
#nmon version 16n
从官网下载
包管理安装虽然方便, 但大多都存在一个问题, 就是不是最新版本. 而是经过测试的与当前系统稳定搭配的一些旧版本.
很多时候, 我们想要某个软件的最新版本. 这时候就要从官网上下载了.
nmon的官网是https://nmon.sourceforge.io/.
nmon的下载比较简单, 它就是一个简单的二进制, 你从官网上查找对应Linux架构的最新版本, 下载到自己的Linux上.
当前官网的最新版本是16p所以, 可以看出, Debian 12上的版本并不是最新版本.
sudo mv nmon_x86_64_debian11 /usr/local/bin/nmon
sudo chmod u+x /usr/local/bin/nmon
nmon -V
nmon有两种使用方式, 一种是类似top这种瞬时收集数据, 在命令行上直接展现数据. 另一种就是持续的收集负载数据并存入一个文件中
瞬时数据
瞬时数据就是直接在命令行界面上持续的刷新并显示最新的资源负载情况.
直接输入nmon
命令就可以进入如何界面
当然, 你会发现似乎这个界面上没有什么负载信息.
不用担心, nmon相当于一个聚合信息收集, 但需要你来指定.
在这个界面上, 你可以看到一个简要的说明, 哪些键可以添加哪些信息数据.
比如c
表示CPU信息, m
表示内存信息, n
表示网络数据. 我们就以这三个为例, 在这个界面上, 依次输入c
, m
以及n
键
稍等一会, 你就会看到一个你期望的信息数据界面了.
这个界面, 按照从上到下的顺序, 依次展现你刚刚添加的各种数据.
如果要取消某个维度的数据, 再次按下对应的键, 同样可以添加其它数据. 不清楚有哪些维度的数据可以添加, 按h
键, 可以看到帮助信息. 同样, 按q
键退出.
相比htop
这种单一的数据展现, 这个nmon确实方便很多.
持续数据收集
当然, 瞬时数据不是nmon
最大的优点, nmon之所有这么受到喜爱, 更多的可能还是它的持续的各维度的数据收集.
特别是在性能及压力测试等场景下, nmon可以是你的非常好的帮手.
输入如下命令:
nmon -fT -s 120 -c 720 -m /home/lingen/nmon
-f
: 这个表示nmon将数据输出到文件-T
: 表示在基础收集的数据之上,额外收集TOP进程数据-s 120
: 每120秒收集一次数据, 也就是2分钟-c 720
: 执行720次收集-m
: 指定文件输出目录, 默认为当前目录这样, 它就会在后面定时收集数据, 并把数据写入一个nmon文件中
├── lima-docker_240324_0834.nmon
└── lima-docker_240324_0939.nmon
nmon会按照时间, 并以.nmon
后缀来存储这个数据.
nmon生成的数据并不直观, 所以我们需要用其它方式, 把这些数据用更直观的方式展现出来.比如用图表等.
网上关于这一块, 更多的是用excel来处理.
但我今天要推荐的是另外一种更好的方式, 也就是nmonchart
来专门处理nmon收集的数据. 需要知道的是, nmonchart本身也是nmon团队开发的, 所以理所当然更可靠.
和nmon不同的是, nmonchart各个Linux的包管理工具中并没有附带, 需要你自己手动下载.
nmonchart的下载地址是https://sourceforge.net/projects/nmon/files/, 在这个上面找nmonchart的最新版本并下载.
下载的ZIP包中, 最关键的就是二进制文件nmonchart
sudo mv nmonchart /usr/local/bin
sudo chmod +x /usr/local/bin/nmonchart
## 验证nmonchar的版本信息
nmonchart -v
下载完成后, 用nmonchart
命令, 可以轻松的将nmon文件转成一个更直观的HTML文件
#指定要转换的nmon文件
nmonchart instance-gmwy257g-2_240323_0949.nmon
#执行后, 会生成instance-gmwy257g-2_240323_0949.html
成功后, 就会在生成一个对应的HTML文件.
在Linux服务器上用nginx访问这个HTML, 或直接把它下载下来都行.
这个HTML会直观的按照时间 + 维度的方式来展现数据. 你可以查看一个时间段内的资源负载数据.
如果你想要一个更方便的聚合系统资源负载信息的工具, 那这个开源的nmon
是最简单易用的一款工具了.
在你需要的时候, 你可以想起它, 并使用它. 它会是你的好的小帮手.