鲜为人知但非常有用的 Linux 性能监控工具
引言:Linux 系统中蕴藏着许多鲜为人知但功能强大的性能监控工具,它们可以帮助实时监测系统运行状态、定位性能瓶颈、排查问题,从而提高系统稳定性和效率。本文将深入介绍五款常用的 Linux 性能监控工具:nmon、glances、w、tail 和 multitail,并提供详细的安装、使用方法和示例,帮助您更好地了解和运用这些工具。
一、nmon性能监控
nmon 可以提供系统性能的实时数据和历史数据,帮助分析系统瓶颈,定位问题。 nmon 官网:http://nmon.sourceforge.net/。
nmon 的功能:
- 实时监控系统资源:
- CPU 使用率(每个CPU核心,每个进程)
- 内存使用情况(物理内存,交换空间)
- 磁盘 I/O 性能(读写速度,队列长度)
- 网络流量(接收和发送数据包)
- 进程信息(CPU使用率,内存使用,磁盘I/O)
- 系统调用(系统调用的频率和时间)
- 其他系统信息(系统时间,内核版本,主机名等)
- 生成图表和报告:
- 将监控数据生成图形化报告,方便用户直观地分析系统性能。
- 支持多种格式,包括文本,HTML,CSV,以及图像文件等。
- 数据记录和回放:
- 可以将监控数据保存到文件中,方便用户日后分析。
- 可以将保存的监控数据文件回放,以模拟系统当时的运行状态。
- 其他功能:
- 支持对特定进程进行监控。
- 支持对特定磁盘或网络接口进行监控。
- 支持自定义监控指标和图表。
centos安装 nmon:
wget http://sourceforge.net/projects/nmon/files/nmon16e_mpginc.tar.gz
mkdir nmon16e_mpginc
tar -xvfz nmon16e_mpginc.tar.gz -C nmon16e_mpginc
cd nmon16e_mpginc
# 授权运行权限
chmod +x nmon_x86_64_centos7
# 使nmon在任何地方都能运行
mv nmon_x86_64_centos7 /usr/bin/nmon
ubuntu安装 nmon:
sudo apt-get install nmon
nmon
使用 nmon:
- 启动后,nmon 会显示当前系统的性能指标,并提供交互式菜单。使用键盘上的方向键和空格键可以切换显示的指标。
- 输入
c
键可以开始记录数据。nmon 会将数据保存在当前目录下的一个名为 “nmon.out” 的文件中。 - 输入
s
键可以停止记录数据。 - 输入
q
键可以退出 nmon。
nmon 的一些常用参数:
参数 | 说明 |
---|---|
-f <文件名> | 指定数据文件路径。按标准格式输出文件:_YYYYMMDD_HHMM.nmon |
-s <时间> | 每隔n秒抽样一次,单位:秒。 |
-h | 显示帮助信息。 |
-m <path> | 切换到路径去保存日志文件。 |
-p <PID> | 监控指定的进程。 |
-c <number> | 取出多少个抽样数量。 |
-N | include NFS sections |
为了配合性能测试,我们往往需要在后台将一个时间段内系统资源消耗情况记录下来,这时可以使用命令在远程窗口执行命令:
./nmon/ nmon_x86_rhel5 -f -N -m /nmon/log -s 30 -c 120
其中各参数表示:
-f
按标准格式输出文件:_YYYYMMDD_HHMM.nmon-N
include NFS sections-m
切换到路径去保存日志文件-s
每隔n秒抽样一次,这里为30-c
取出多少个抽样数量,这里为120,即监控=120*(30/60/60)=1小时
根据小时计算这个数字的公式为:c=h3600/s,比如要监控10小时,每隔30秒采样一次,则c=103600/30=1200
该命令启动后,会在nmon所在目录下生成监控文件,并持续写入资源数据,直至360个监控点收集完成——即监控1小时,这些操作均自动完成,无需手工干 预,测试人员可以继续完成其他操作。如果想停止该监控,需要通过“#ps –ef|grep nmon
”查询进程号,然后杀掉该进程以停止监控。
除配合性能测试的短期监控,我们也可以实现对系统的定期监控,作为运营维护阶段的参考。定期监控实现如下:
-
执行命令:
crontab –e
-
在最后一行添加如下命令:
0 8 * * 1,2,3,4,5 /nmon/nmon_x86_rhel5 -f -N -m /nmon/log -s 30 -c 1200
说明:周一到周五,从早上08点开始,监控10个小时(到18:00整为止),输出到/nmon/log
。
nmon命令 生成的nmon可以通过工具进行可视化展示,一般可以使用nmonchart、nmon_analyser。
nmonchart
nmonechart 使用Google charts 生成html报告
二、glances系统监控
glances 的功能:
-
实时监控系统资源:
- CPU: 每个 CPU 核心使用率、用户态/内核态时间、中断数量
- 内存: 物理内存、交换空间、缓存使用情况
- 磁盘: 磁盘读写速度、磁盘使用率、分区使用情况
- 网络: 网络流量(接收/发送)、网络连接状态
- 进程: 进程列表、CPU 使用率、内存使用情况、状态
- 其他: 系统负载、温度、网络连接、时间、主机名等
-
图形化界面:
- 使用 ASCII 图形直观地显示监控数据,易于理解和分析。
- 提供多种图表选项,如柱状图、折线图等。
- 可以根据需要自定义图表大小和显示信息。
-
交互式操作:
- 使用键盘快捷键可以切换显示的指标和图表。
- 可以对进程进行排序、筛选和杀死。
- 可以保存监控数据到文件。
glances 的安装:
# centos
yum install -y glances
# ubuntu
$ sudo apt-add-repository ppa:arnaud-hartmann/glances-stable
$ sudo apt-get update
$ sudo apt-get install glances
手动编译安装:
- 下载 glances 源代码: https://github.com/nicolargo/glances
- 解压并进入源代码目录。
- 运行以下命令进行编译安装:
./configure make sudo make install
执行 glances:
除了很多命令行选项之外,Glances 还提供了更多的可在其运行时开关输出信息选项的快捷键,下面是一些例子:
快捷键 | 功能 |
---|---|
a | 对进程自动排序 |
c | 按 CPU 百分比对进程排序 |
m | 按内存百分比对进程排序 |
p | 按进程名字母顺序对进程排序 |
i | 按读写频率(I/O)对进程排序 |
d | 显示/隐藏磁盘 I/O 统计信息 |
f | 显示/隐藏文件系统统计信息 |
n | 显示/隐藏网络接口统计信息 |
s | 显示/隐藏传感器统计信息 |
y | 显示/隐藏硬盘温度统计信息 |
l | 显示/隐藏日志(log) |
b | 切换网络 I/O 单位(Bytes/bits) |
w | 删除警告日志 |
x | 删除警告和严重日志 |
1 | 切换全局 CPU 使用情况和每个 CPU 的使用情况 |
h | 显示/隐藏这个帮助画面 |
t | 以组合形式浏览网络 I/O |
u | 以累计形式浏览网络 I/O |
q | 退出 (‘ESC’ 和 ‘Ctrl&C’ 也可以) |
glances 默认使用 ~/.glancesrc
文件作为配置文件。可以自定义配置文件,修改监控的指标、图表类型、更新频率等。
Glances 对于大多用户而言是个在系统资源上提供过多信息的工具。但是如果你是一个想要仅从命令行就能快速获取系统整体状况的系统管理员,那这个工具绝对是你的必备利器。
三、w 命令
w
命令显示谁登录了系统并执行了哪些程序。用于显示当前系统负载情况和登录用户的相关信息。
w
命令的语法:
w [选项]
选项 | 描述 |
---|---|
–help | 显示帮助信息 |
-V, --version | 显示版本信息 |
-s, --short | 简短输出 |
-f, --from | 显示远程主机名字段 |
-u | 忽略当前进程用户名 |
-h | 不打印头信息 |
示例:
[root@ubuntu ~]$ w -h
root pts/0 113.246.155.156 10:58 2.00s 0.23s 0.23s -bash
root pts/2 113.246.155.156 11:30 26.00s 0.06s 0.00s tail -f /data/rtc/room_server/log/roll.log
root pts/3 113.246.155.156 11:53 1:30 0.03s 0.03s -bash
四、日志监控工具 tail
tail
命令用于显示文件尾部的部分内容。它可以用来查看日志文件、配置文件等文件的最新更新内容。
语法:
tail [选项] 文件名
选项:
选项 | 描述 |
---|---|
-n, --lines=数字 | 显示最后 数字 行 |
-c, --bytes=数字 | 显示最后 数字 字节 |
-f, --follow=名称 | 持续跟踪文件,并显示新添加的内容 |
-F | 类似 -f,但更强大,可以处理文件被删除或重命名的情况 |
-s, --sleep-interval=秒数 | 在 -f 模式下,每 秒数 秒检查一次文件是否有更新 |
-q, --quiet, --silent | 不显示文件名称和时间戳 |
-v, --verbose | 显示文件名称和时间戳 |
-b, --retry-interval=秒数 | 在 -F 模式下,每 秒数 秒尝试重新打开被删除或重命名的文件 |
-z | 使用 NULL 字符作为行分隔符 |
使用示例:
-
显示文件最后 10 行:
tail -n 10 access.log
-
显示文件最后 500 字节:
tail -c 500 access.log
-
持续跟踪文件并显示新添加的内容:
tail -f access.log
-
跟踪文件,并处理文件删除或重命名的情况:
tail -F access.log
-
跟踪文件,每 2 秒检查一次是否有更新:
tail -f -s 2 access.log
-
显示文件最后 10 行,不显示文件名称和时间戳:
tail -n 10 -q access.log
-
显示文件最后 10 行,显示文件名称和时间戳:
tail -n 10 -v access.log
在实时日志上打印颜色,给每个状态给上不同的颜色,INF绿色、WARN黄色、ERROR红色
tail -f /data/rtc/room_server/log/roll.log | perl -pe 's/(INF)/\e[0;32m$1\e[0m/g,s/(WARN)/\e[0;33m$1\e[0m/g,s/(ERROR)/\e[1;31m$1\e[0m/g'
五、日志监控工具 multitail
multitail
命令是 tail
命令的增强版,可以同时跟踪多个文件的尾部内容。它允许用户将多个文件合并到同一个终端窗口中,方便观察多个文件中的日志或数据流。
multitail 命令的语法:
multitail [选项] 文件名1 文件名2 ...
选项:
选项 | 描述 |
---|---|
-l, --lines=数字 | 显示每个文件的最后 数字 行 |
-b, --bytes=数字 | 显示每个文件的最后 数字 字节 |
-n, --names | 显示每个文件的名称 |
-t, --timestamp | 显示每个文件的时间戳 |
-s, --sleep=秒数 | 在 -f 模式下,每 秒数 秒检查一次文件是否有更新 |
-f, --follow | 持续跟踪所有文件,并显示新添加的内容 |
-F | 类似 -f ,但更强大,可以处理文件被删除或重命名的情况 |
-c, --colour | 使用颜色区分不同的文件 |
-d, --delimiter=字符串 | 使用 字符串 作为文件之间的分隔符 |
-w, --width=数字 | 设置每个文件窗口的宽度 |
-h, --help | 显示帮助信息 |
-V, --version | 显示版本信息 |
使用示例:
-
跟踪两个文件的尾部内容:
multitail access.log error.log
-
显示每个文件的最后 10 行,并使用颜色区分:
multitail -l 10 -c access.log error.log
-
显示每个文件的最后 10 行,使用
---
作为分隔符:multitail -l 10 -d "---" access.log error.log
-
持续跟踪两个文件,并每 2 秒检查一次更新:
multitail -f -s 2 access.log error.log
-
持续跟踪两个文件,处理文件删除或重命名情况:
multitail -F access.log error.log
-
设置每个文件窗口宽度为 80 列:
multitail -w 80 access.log error.log
multitail
命令需要单独安装,一般情况下系统默认不会安装。可以使用 apt
或 yum
等包管理器来安装 multitail
命令。
multitail
可同时开启多视窗看log,适合用在看部署在很多机器上的项目的log -cS [color_scheme]
可以选择输出的log的颜色,推荐使用goldengate,也可自定义(修改/etc/multitail.conf
)
六、总结
本文介绍了五款常用的 Linux 性能监控工具,涵盖了系统资源监控、日志分析、进程管理等方面,并提供了详细的安装、使用方法和示例。通过使用这些工具,可以更加有效地监控和管理 Linux 系统,及时发现并解决潜在的问题,提升系统性能和稳定性。
- nmon: 提供全面的系统资源监控,并可生成图表和报告,适合进行性能分析和问题排查。
- glances: 以图形化界面呈现实时系统资源监控信息,易于理解和分析,适合快速了解系统运行状态。
- w: 显示当前系统负载情况和登录用户的相关信息,适合查看系统运行状态和用户活动情况。
- tail: 用于显示文件尾部的部分内容,适合查看日志文件、配置文件等文件的最新更新内容,并提供持续跟踪功能。
- multitail: 是
tail
命令的增强版,可以同时跟踪多个文件的尾部内容,方便查看多个文件中的日志或数据流,适合监控多个服务器上的日志文件。