前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >善用开源, 用nmon来收集Linux资源负载数据

善用开源, 用nmon来收集Linux资源负载数据

作者头像
御剑
发布2024-03-25 10:19:39
1080
发布2024-03-25 10:19:39
举报
文章被收录于专栏:微言码道微言码道

对于Linux系统, 很多时候我们需要知道系统的负载信息, 特别是在诸如压力测试的情况下.

当然, 如果你用一些云服务, 可能它们自带就有一些监控的负载数据. 诸如CPU, 内存, 网络等情况. 但有时候, 我们并不喜欢使用云服务自带的监控, 这时候也许你需要一个更安全及私有化的解决方案.

这就是我今天要说的nmon了.

什么是nmon

如果你使用Linux, 一定使用过诸如top,free,fdisk等命令, 你会经常使用这些命令来查阅当前系统的一些资源负载情况, 比如CPU, 内存或硬盘等.

这些命令虽然很常用, 但有两个存在的问题:

  • 上面这些命令都主要是收集的瞬时数据
  • 每个命令只关注特定的一个维度的资源负载

所以, 我们当然期望有一个能够持续收集各个维度的更方便的工具. 这就是nmon的作用了.

nmon是一个系统监控与收集工具, 它可以瞬时或持续的收集系统各个维度的资源负载数据. 无论是在你需要查阅某一时刻的特定或多个资源负载, 或是在性能压力测试等场景下, 持续的收集资源负载数据. nmon都是你不可多得的好帮手.

nmon的安装

在介绍如何具体使用nmon工具之前, 简单的介绍下如何安装这个工具.

基于包管理安装

Linux上安装软件, 最方便的都是基于系统对应的包管理来安装. 对于nmon也是如此. 基本上主要的Linux操作系统, 特别是面向服务器的, 它们的包管理器中都有这个工具.

代码语言:javascript
复制
#debian/ubuntu系
sudo apt install nmon

#CentOS/RHEL系
sudo yum install nmon

#fedora
sudo dnf install nmon

#SUSE系
sudo zypper install nmon

安装完成后, 通过以下命令确认nmon安装是否成功及安装的版本信息

代码语言:javascript
复制
nmon -V
#在Debian 12上会显示 
#nmon version 16n

从官网下载

包管理安装虽然方便, 但大多都存在一个问题, 就是不是最新版本. 而是经过测试的与当前系统稳定搭配的一些旧版本.

很多时候, 我们想要某个软件的最新版本. 这时候就要从官网上下载了.

nmon的官网是https://nmon.sourceforge.io/.

nmon的下载比较简单, 它就是一个简单的二进制, 你从官网上查找对应Linux架构的最新版本, 下载到自己的Linux上.

当前官网的最新版本是16p所以, 可以看出, Debian 12上的版本并不是最新版本.

代码语言:javascript
复制
sudo mv nmon_x86_64_debian11 /usr/local/bin/nmon
sudo chmod u+x /usr/local/bin/nmon
nmon -V

nmon的使用

nmon有两种使用方式, 一种是类似top这种瞬时收集数据, 在命令行上直接展现数据. 另一种就是持续的收集负载数据并存入一个文件中

瞬时数据

瞬时数据就是直接在命令行界面上持续的刷新并显示最新的资源负载情况.

直接输入nmon命令就可以进入如何界面

当然, 你会发现似乎这个界面上没有什么负载信息.

不用担心, nmon相当于一个聚合信息收集, 但需要你来指定.

在这个界面上, 你可以看到一个简要的说明, 哪些键可以添加哪些信息数据.

比如c表示CPU信息, m表示内存信息, n表示网络数据. 我们就以这三个为例, 在这个界面上, 依次输入c, m以及n

稍等一会, 你就会看到一个你期望的信息数据界面了.

这个界面, 按照从上到下的顺序, 依次展现你刚刚添加的各种数据.

如果要取消某个维度的数据, 再次按下对应的键, 同样可以添加其它数据. 不清楚有哪些维度的数据可以添加, 按h键, 可以看到帮助信息. 同样, 按q键退出.

相比htop这种单一的数据展现, 这个nmon确实方便很多.

持续数据收集

当然, 瞬时数据不是nmon最大的优点, nmon之所有这么受到喜爱, 更多的可能还是它的持续的各维度的数据收集.

特别是在性能及压力测试等场景下, nmon可以是你的非常好的帮手.

输入如下命令:

代码语言:javascript
复制
nmon -fT -s 120 -c 720 -m /home/lingen/nmon
  • -f: 这个表示nmon将数据输出到文件
  • -T: 表示在基础收集的数据之上,额外收集TOP进程数据
  • -s 120: 每120秒收集一次数据, 也就是2分钟
  • -c 720: 执行720次收集
  • -m: 指定文件输出目录, 默认为当前目录

这样, 它就会在后面定时收集数据, 并把数据写入一个nmon文件中

代码语言:javascript
复制
├── lima-docker_240324_0834.nmon
└── lima-docker_240324_0939.nmon

nmon会按照时间, 并以.nmon后缀来存储这个数据.

数据UI化

nmon生成的数据并不直观, 所以我们需要用其它方式, 把这些数据用更直观的方式展现出来.比如用图表等.

网上关于这一块, 更多的是用excel来处理.

但我今天要推荐的是另外一种更好的方式, 也就是nmonchart来专门处理nmon收集的数据. 需要知道的是, nmonchart本身也是nmon团队开发的, 所以理所当然更可靠.

和nmon不同的是, nmonchart各个Linux的包管理工具中并没有附带, 需要你自己手动下载.

nmonchart的下载地址是https://sourceforge.net/projects/nmon/files/, 在这个上面找nmonchart的最新版本并下载.

下载的ZIP包中, 最关键的就是二进制文件nmonchart

代码语言:javascript
复制
sudo mv nmonchart /usr/local/bin
sudo chmod +x /usr/local/bin/nmonchart
## 验证nmonchar的版本信息
nmonchart -v

下载完成后, 用nmonchart命令, 可以轻松的将nmon文件转成一个更直观的HTML文件

代码语言:javascript
复制
#指定要转换的nmon文件
nmonchart instance-gmwy257g-2_240323_0949.nmon
#执行后, 会生成instance-gmwy257g-2_240323_0949.html

成功后, 就会在生成一个对应的HTML文件.

在Linux服务器上用nginx访问这个HTML, 或直接把它下载下来都行.

这个HTML会直观的按照时间 + 维度的方式来展现数据. 你可以查看一个时间段内的资源负载数据.

最后

如果你想要一个更方便的聚合系统资源负载信息的工具, 那这个开源的nmon是最简单易用的一款工具了.

在你需要的时候, 你可以想起它, 并使用它. 它会是你的好的小帮手.

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-03-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 微言码道 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是nmon
  • nmon的安装
  • nmon的使用
  • 数据UI化
  • 最后
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档