简体中文 繁體中文 English 日本語 Deutsch 한국 사람 بالعربية TÜRKÇE português คนไทย Français

站内搜索

搜索

活动公告

11-02 12:46
10-23 09:32
通知:本站资源由网友上传分享,如有违规等问题请到版务模块进行投诉,将及时处理!
10-23 09:31
10-23 09:28
通知:签到时间调整为每日4:00(东八区)
10-23 09:26

CentOS系统性能监控工具推荐 十大必备工具助你实时掌握系统运行状态提升服务器管理效率

3万

主题

424

科技点

3万

积分

大区版主

木柜子打湿

积分
31917

三倍冰淇淋无人之境【一阶】财Doro小樱(小丑装)立华奏以外的星空【二阶】⑨的冰沙

发表于 2025-9-20 13:50:00 | 显示全部楼层 |阅读模式 [标记阅至此楼]

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
在当今数字化时代,服务器作为承载各种应用服务的核心基础设施,其稳定运行对业务连续性至关重要。CentOS作为企业级Linux发行版,以其稳定性、安全性和长期支持而广受欢迎,是众多企业的首选服务器操作系统。然而,即使是最稳定的系统也可能面临性能问题、资源瓶颈或异常情况。因此,有效的系统性能监控成为保障服务器健康运行的关键环节。

系统性能监控不仅可以帮助管理员及时发现和解决问题,还能提供系统资源使用趋势,为容量规划和系统优化提供数据支持。本文将介绍CentOS系统上十大必备的性能监控工具,这些工具涵盖了从基础命令行工具到图形化界面解决方案,从实时监控到长期数据分析的各种需求,帮助您全面掌握系统运行状态,提升服务器管理效率。

1. top命令

工具简介

top命令是Linux系统中最基础也是最常用的实时性能监控工具之一。它提供了一个动态更新的视图,显示系统中运行的进程以及系统资源的使用情况,包括CPU、内存、交换空间等。top命令轻量级且无需额外安装,是系统管理员日常监控的得力助手。

安装方法

top命令通常默认安装在CentOS系统中,如果意外被移除,可以通过以下命令安装:
  1. # 对于CentOS 7及以下版本
  2. sudo yum install procps-ng
  3. # 对于CentOS 8及以上版本
  4. sudo dnf install procps-ng
复制代码

使用方法和常用命令

直接在终端输入top命令即可启动:
  1. top
复制代码

top界面分为两部分:上半部分显示系统总体信息,下半部分显示各个进程的详细信息。

常用交互命令:

• P:按CPU使用率排序
• M:按内存使用率排序
• T:按运行时间排序
• c:切换显示完整命令行和命令名
• d:改变刷新时间间隔
• k:终止一个进程
• q:退出top程序

常用启动参数:

• top -d 5:指定刷新间隔为5秒
• top -p 1234:只监控PID为1234的进程
• top -u username:只显示指定用户的进程
• top -b -n 1 > top.log:将top的输出重定向到文件,适合脚本处理

优缺点分析

优点:

• 系统自带,无需额外安装
• 实时更新,提供动态视图
• 资源占用少,对系统性能影响小
• 支持交互式操作,灵活方便
• 可以通过命令行参数定制显示内容

缺点:

• 界面相对简单,不够直观
• 不支持历史数据记录和分析
• 不支持远程监控和告警功能
• 在多核系统上,CPU使用率显示可能不够直观

适用场景

top命令适用于以下场景:

• 快速查看系统当前负载和资源使用情况
• 查找占用CPU或内存资源过多的进程
• 服务器日常巡检和初步故障排查
• 资源有限的系统或嵌入式环境
• 需要快速响应的实时监控场景

2. htop工具

工具简介

htop是top命令的增强版,提供了一个更加用户友好和功能丰富的交互式进程查看器。与传统的top相比,htop具有彩色界面、垂直和水平滚动、鼠标操作支持等特性,使得系统监控更加直观和便捷。htop还支持树状视图显示进程关系,让管理员能够更清晰地了解进程间的层次结构。

安装方法

htop默认不在CentOS基础仓库中,需要从EPEL仓库安装:
  1. # 对于CentOS 7
  2. sudo yum install epel-release
  3. sudo yum install htop
  4. # 对于CentOS 8及以上版本
  5. sudo dnf install epel-release
  6. sudo dnf install htop
复制代码

使用方法和常用命令

直接在终端输入htop命令即可启动:
  1. htop
复制代码

htop界面分为三部分:顶部显示系统总体信息(CPU、内存、交换空间使用情况),中间显示进程列表,底部是功能菜单。

常用功能键:

• F1-F10:对应底部菜单的功能
• ↑/↓:选择进程
• ←/→:切换标签页
• Space:标记/取消标记进程
• F7/F8:调整进程优先级
• F9:终止进程
• F10:退出htop

常用启动参数:

• htop -d 10:设置刷新间隔为10秒
• htop -p 1234,5678:只监控指定的PID
• htop -u username:只显示指定用户的进程
• htop -s PID:按PID排序

优缺点分析

优点:

• 彩色界面,信息展示更加直观
• 支持鼠标操作,使用更加便捷
• 支持树状视图,清晰展示进程关系
• 可以垂直和水平滚动,查看更多信息
• 无需输入命令,通过功能键即可完成操作
• 支持进程标记,可批量操作

缺点:

• 需要额外安装,不是系统自带工具
• 相比top占用稍多系统资源
• 不支持历史数据记录和分析
• 不支持远程监控和告警功能

适用场景

htop适用于以下场景:

• 需要直观查看系统资源使用情况
• 需要了解进程间的层次关系
• 服务器日常管理和监控
• 教学演示和系统分析
• 对交互性和易用性要求较高的监控场景

3. vmstat工具

工具简介

vmstat(Virtual Memory Statistics)是一个报告虚拟内存统计信息的工具,它提供了关于进程、内存、分页、块IO、陷阱(中断)和CPU活动的信息。vmstat特别适合用于分析系统的性能瓶颈,尤其是内存和I/O方面的问题。它可以提供系统性能的快照,也可以以指定的时间间隔持续报告系统状态,是性能分析的重要工具之一。

安装方法

vmstat通常作为procps-ng包的一部分默认安装在CentOS系统中,如果意外被移除,可以通过以下命令安装:
  1. # 对于CentOS 7及以下版本
  2. sudo yum install procps-ng
  3. # 对于CentOS 8及以上版本
  4. sudo dnf install procps-ng
复制代码

使用方法和常用命令

基本用法:
  1. # 显示一次系统统计信息
  2. vmstat
  3. # 每2秒显示一次系统统计信息,共显示5次
  4. vmstat 2 5
  5. # 显示内存统计信息,以MB为单位
  6. vmstat -S M
  7. # 显示磁盘I/O统计信息
  8. vmstat -d
  9. # 显示磁盘分区统计信息
  10. vmstat -D
  11. # 显示 slab 信息
  12. vmstat -m
复制代码

vmstat输出字段说明:

• procs:进程信息r:运行队列中的进程数b:等待I/O的进程数
• r:运行队列中的进程数
• b:等待I/O的进程数
• memory:内存信息swpd:使用的虚拟内存量free:空闲的物理内存量buff:用作缓冲区的内存量cache:用作缓存的内存量
• swpd:使用的虚拟内存量
• free:空闲的物理内存量
• buff:用作缓冲区的内存量
• cache:用作缓存的内存量
• swap:交换分区信息si:从磁盘交换到内存的速率(KB/s)so:从内存交换到磁盘的速率(KB/s)
• si:从磁盘交换到内存的速率(KB/s)
• so:从内存交换到磁盘的速率(KB/s)
• io:输入/输出信息bi:从块设备接收的块(blocks/s)bo:发送到块设备的块(blocks/s)
• bi:从块设备接收的块(blocks/s)
• bo:发送到块设备的块(blocks/s)
• system:系统信息in:每秒中断数,包括时钟中断cs:每秒上下文切换次数
• in:每秒中断数,包括时钟中断
• cs:每秒上下文切换次数
• cpu:CPU使用率us:用户空间占用CPU百分比sy:内核空间占用CPU百分比id:空闲CPU百分比wa:等待I/O的CPU百分比st:虚拟机被hypervisor偷走的CPU时间百分比
• us:用户空间占用CPU百分比
• sy:内核空间占用CPU百分比
• id:空闲CPU百分比
• wa:等待I/O的CPU百分比
• st:虚拟机被hypervisor偷走的CPU时间百分比

• r:运行队列中的进程数
• b:等待I/O的进程数

• swpd:使用的虚拟内存量
• free:空闲的物理内存量
• buff:用作缓冲区的内存量
• cache:用作缓存的内存量

• si:从磁盘交换到内存的速率(KB/s)
• so:从内存交换到磁盘的速率(KB/s)

• bi:从块设备接收的块(blocks/s)
• bo:发送到块设备的块(blocks/s)

• in:每秒中断数,包括时钟中断
• cs:每秒上下文切换次数

• us:用户空间占用CPU百分比
• sy:内核空间占用CPU百分比
• id:空闲CPU百分比
• wa:等待I/O的CPU百分比
• st:虚拟机被hypervisor偷走的CPU时间百分比

优缺点分析

优点:

• 系统自带,无需额外安装
• 资源占用极少,对系统性能影响几乎为零
• 提供全面的系统性能信息,包括CPU、内存、I/O等
• 可以持续监控,观察系统性能变化趋势
• 输出格式简洁,便于脚本处理和自动化分析
• 适合用于性能瓶颈分析和问题诊断

缺点:

• 界面不够直观,需要专业知识解读
• 不支持图形化显示
• 不支持历史数据记录和长期分析
• 不提供进程级别的详细信息
• 不支持远程监控和告警功能

适用场景

vmstat适用于以下场景:

• 系统性能瓶颈分析
• 内存和I/O问题诊断
• 系统负载评估
• 性能测试和基准测试
• 脚本自动化监控
• 资源有限的系统环境

4. iostat工具

工具简介

iostat(Input/Output Statistics)是sysstat包中的一个工具,用于监控系统的输入/输出设备负载情况。它提供了CPU使用率和磁盘I/O统计信息,可以帮助管理员识别磁盘I/O瓶颈和性能问题。iostat可以报告整个系统的统计信息,也可以针对特定的设备进行详细分析,是诊断存储性能问题的重要工具。

安装方法

iostat属于sysstat包,需要单独安装:
  1. # 对于CentOS 7及以下版本
  2. sudo yum install sysstat
  3. # 对于CentOS 8及以上版本
  4. sudo dnf install sysstat
复制代码

安装完成后,确保sysstat服务已启动并设置为开机自启:
  1. # 启动sysstat服务
  2. sudo systemctl start sysstat
  3. # 设置为开机自启
  4. sudo systemctl enable sysstat
复制代码

使用方法和常用命令

基本用法:
  1. # 显示CPU和所有设备的统计信息
  2. iostat
  3. # 每2秒显示一次统计信息,共显示5次
  4. iostat 2 5
  5. # 显示CPU和指定设备的统计信息
  6. iostat -d sda sdb
  7. # 以MB为单位显示统计信息
  8. iostat -m
  9. # 显示更详细的设备统计信息
  10. iostat -x
  11. # 显示设备利用率和其他统计信息
  12. iostat -x -d sda
  13. # 显示TTY CPU统计信息
  14. iostat -t
复制代码

iostat输出字段说明:

• CPU部分:%user:CPU在用户级别的使用百分比%nice:CPU在带优先级的用户级别的使用百分比%system:CPU在系统级别的使用百分比%iowait:CPU等待I/O操作的百分比%steal:虚拟环境中被其他虚拟机占用的CPU时间百分比%idle:CPU空闲百分比
• %user:CPU在用户级别的使用百分比
• %nice:CPU在带优先级的用户级别的使用百分比
• %system:CPU在系统级别的使用百分比
• %iowait:CPU等待I/O操作的百分比
• %steal:虚拟环境中被其他虚拟机占用的CPU时间百分比
• %idle:CPU空闲百分比
• 设备部分:Device:设备名称tps:每秒传输次数(I/O操作数)kB_read/s:每秒从设备读取的数据量(KB)kB_wrtn/s:每秒写入设备的数据量(KB)kB_read:读取的总数据量(KB)kB_wrtn:写入的总数据量(KB)
• Device:设备名称
• tps:每秒传输次数(I/O操作数)
• kB_read/s:每秒从设备读取的数据量(KB)
• kB_wrtn/s:每秒写入设备的数据量(KB)
• kB_read:读取的总数据量(KB)
• kB_wrtn:写入的总数据量(KB)
• 扩展模式(-x参数)下额外的字段:%util:设备利用率,表示设备忙于处理I/O请求的时间百分比await:平均I/O操作等待时间(毫秒)svctm:平均服务时间(毫秒)r_await:读操作平均等待时间(毫秒)w_await:写操作平均等待时间(毫秒)
• %util:设备利用率,表示设备忙于处理I/O请求的时间百分比
• await:平均I/O操作等待时间(毫秒)
• svctm:平均服务时间(毫秒)
• r_await:读操作平均等待时间(毫秒)
• w_await:写操作平均等待时间(毫秒)

CPU部分:

• %user:CPU在用户级别的使用百分比
• %nice:CPU在带优先级的用户级别的使用百分比
• %system:CPU在系统级别的使用百分比
• %iowait:CPU等待I/O操作的百分比
• %steal:虚拟环境中被其他虚拟机占用的CPU时间百分比
• %idle:CPU空闲百分比

设备部分:

• Device:设备名称
• tps:每秒传输次数(I/O操作数)
• kB_read/s:每秒从设备读取的数据量(KB)
• kB_wrtn/s:每秒写入设备的数据量(KB)
• kB_read:读取的总数据量(KB)
• kB_wrtn:写入的总数据量(KB)

扩展模式(-x参数)下额外的字段:

• %util:设备利用率,表示设备忙于处理I/O请求的时间百分比
• await:平均I/O操作等待时间(毫秒)
• svctm:平均服务时间(毫秒)
• r_await:读操作平均等待时间(毫秒)
• w_await:写操作平均等待时间(毫秒)

优缺点分析

优点:

• 提供详细的磁盘I/O统计信息
• 可以识别磁盘I/O瓶颈
• 支持针对特定设备的监控
• 可以持续监控,观察I/O性能变化趋势
• 输出格式规范,便于脚本处理和自动化分析
• 扩展模式提供更多深入的性能指标

缺点:

• 需要额外安装sysstat包
• 界面不够直观,需要专业知识解读
• 不支持图形化显示
• 不提供进程级别的I/O信息
• 不支持历史数据记录和长期分析(虽然sysstat包包含sar工具可以记录历史数据)
• 不支持远程监控和告警功能

适用场景

iostat适用于以下场景:

• 磁盘I/O性能问题诊断
• 存储系统性能评估
• I/O瓶颈分析
• 存储设备负载均衡规划
• 性能测试和基准测试
• 脚本自动化监控

5. sar工具

工具简介

sar(System Activity Reporter)是sysstat包中的另一个强大工具,用于收集、报告和保存系统活动信息。与其他实时监控工具不同,sar可以记录历史系统性能数据,并生成详细的报告。它能够收集和报告广泛的系统活动数据,包括CPU利用率、内存使用、I/O传输、网络活动、进程创建等。sar是进行系统性能趋势分析和容量规划的宝贵工具。

安装方法

sar属于sysstat包,需要单独安装:
  1. # 对于CentOS 7及以下版本
  2. sudo yum install sysstat
  3. # 对于CentOS 8及以上版本
  4. sudo dnf install sysstat
复制代码

安装完成后,确保sysstat服务已启动并设置为开机自启:
  1. # 启动sysstat服务
  2. sudo systemctl start sysstat
  3. # 设置为开机自启
  4. sudo systemctl enable sysstat
复制代码

sysstat服务会通过cron作业定期收集系统性能数据,并保存在/var/log/sysstat/目录下。

使用方法和常用命令

基本用法:
  1. # 显示当前CPU使用情况
  2. sar -u
  3. # 显示内存使用情况
  4. sar -r
  5. # 显示交换分区使用情况
  6. sar -S
  7. # 显示块设备I/O统计信息
  8. sar -b
  9. # 显示网络统计信息
  10. sar -n DEV
  11. # 显示进程创建和上下文切换统计信息
  12. sar -w
  13. # 显示队列和负载统计信息
  14. sar -q
  15. # 显示指定时间段的系统活动数据
  16. sar -s 10:00:00 -e 12:00:00
  17. # 显示指定日期的系统活动数据
  18. sar -f /var/log/sysstat/saDD
  19. # 生成系统活动报告
  20. sar -A
复制代码

sar输出字段说明(以CPU使用情况为例):

• %user:CPU在用户级别的使用百分比
• %nice:CPU在带优先级的用户级别的使用百分比
• %system:CPU在系统级别的使用百分比
• %iowait:CPU等待I/O操作的百分比
• %steal:虚拟环境中被其他虚拟机占用的CPU时间百分比
• %idle:CPU空闲百分比

优缺点分析

优点:

• 提供全面的系统性能数据收集和报告
• 支持历史数据记录和长期趋势分析
• 可以生成详细的系统活动报告
• 支持多种性能指标,包括CPU、内存、I/O、网络等
• 数据收集自动化,无需人工干预
• 适合进行容量规划和性能优化

缺点:

• 需要额外安装sysstat包
• 配置相对复杂,需要正确设置cron作业
• 默认数据收集间隔可能不适合所有场景
• 界面不够直观,需要专业知识解读
• 不支持图形化显示(需要借助其他工具)
• 不支持实时告警功能

适用场景

sar适用于以下场景:

• 系统性能趋势分析
• 容量规划
• 性能问题回溯分析
• 系统基准测试
• 长期性能监控
• 合规性和审计需求
• 生成系统性能报告

6. netstat工具

工具简介

netstat(Network Statistics)是一个功能强大的网络统计工具,用于显示网络连接、路由表、接口统计、伪装连接和多播成员等信息。它是网络故障排查和安全审计的重要工具,可以帮助管理员了解系统的网络连接状态,监控网络流量,识别异常连接和潜在的安全威胁。netstat可以显示TCP、UDP、UNIX域套接字等各种类型的连接信息。

安装方法

netstat通常作为net-tools包的一部分安装在CentOS系统中,如果系统中没有安装,可以通过以下命令安装:
  1. # 对于CentOS 7及以下版本
  2. sudo yum install net-tools
  3. # 对于CentOS 8及以上版本
  4. sudo dnf install net-tools
复制代码

使用方法和常用命令

基本用法:
  1. # 显示所有连接
  2. netstat -a
  3. # 显示所有TCP连接
  4. netstat -at
  5. # 显示所有UDP连接
  6. netstat -au
  7. # 显示所有监听端口
  8. netstat -l
  9. # 显示进程ID和进程名称
  10. netstat -p
  11. # 显示数字格式的地址和端口(不解析名称)
  12. netstat -n
  13. # 显示网络接口统计信息
  14. netstat -i
  15. # 显示网络路由表
  16. netstat -r
  17. # 显示多播组成员信息
  18. netstat -g
  19. # 显示持续更新的网络连接信息
  20. netstat -c
  21. # 显示所有TCP连接,不解析名称,并显示进程ID
  22. netstat -antp
  23. # 显示所有监听的TCP端口,并显示进程ID
  24. netstat -lntp
  25. # 统计各协议的连接数
  26. netstat -s
复制代码

netstat输出字段说明(以TCP连接为例):

• Proto:协议类型(TCP、UDP等)
• Recv-Q:接收队列中的数据字节数
• Send-Q:发送队列中的数据字节数
• Local Address:本地地址和端口
• Foreign Address:远程地址和端口
• State:连接状态(如ESTABLISHED、LISTENING等)
• PID/Program name:进程ID和进程名称

优缺点分析

优点:

• 提供全面的网络连接信息
• 可以显示进程与网络端口的对应关系
• 支持多种协议类型的连接监控
• 可以显示网络接口统计信息和路由表
• 支持持续监控模式
• 输出格式规范,便于脚本处理和自动化分析

缺点:

• 在CentOS 8及以上版本中,netstat已被ss工具取代,被视为过时工具
• 在连接数量很大的系统上,输出可能过于冗长
• 默认情况下会解析主机名和服务名,可能影响显示速度
• 不支持历史数据记录和分析
• 不支持图形化显示
• 不支持远程监控和告警功能

适用场景

netstat适用于以下场景:

• 网络连接故障排查
• 网络服务状态检查
• 网络安全审计
• 端口占用情况检查
• 网络流量分析
• 网络配置验证
• 脚本自动化监控

7. ss工具

工具简介

ss(Socket Statistics)是netstat的现代替代品,用于显示套接字统计信息。与netstat相比,ss更快、更高效,特别是在连接数量大的系统上。ss可以直接从内核获取信息,而不是像netstat那样通过/proc文件系统,这使得它在处理大量连接时性能更好。ss提供了丰富的过滤选项,可以精确地显示所需的套接字信息,是现代Linux系统中网络监控的首选工具。

安装方法

ss通常作为iproute包的一部分默认安装在CentOS系统中,如果系统中没有安装,可以通过以下命令安装:
  1. # 对于CentOS 7及以下版本
  2. sudo yum install iproute
  3. # 对于CentOS 8及以上版本
  4. sudo dnf install iproute
复制代码

使用方法和常用命令

基本用法:
  1. # 显示所有连接
  2. ss -a
  3. # 显示所有TCP连接
  4. ss -t -a
  5. # 显示所有UDP连接
  6. ss -u -a
  7. # 显示所有监听端口
  8. ss -l
  9. # 显示进程信息
  10. ss -p
  11. # 不解析服务名称
  12. ss -n
  13. # 显示摘要信息
  14. ss -s
  15. # 显示所有TCP连接,不解析名称,并显示进程信息
  16. ss -t -n -p
  17. # 显示所有监听的TCP端口,并显示进程信息
  18. ss -l -n -p
  19. # 显示所有ESTABLISHED状态的TCP连接
  20. ss -t -n state established
  21. # 显示连接到特定端口的连接
  22. ss -t -n 'dport = :80'
  23. # 显示连接到特定IP的连接
  24. ss -t -n 'dst 192.168.1.100'
  25. # 显示特定进程的连接
  26. ss -t -n -p 'pid = 1234'
  27. # 显示套接字内存使用情况
  28. ss -m
  29. # 显示定时器信息
  30. ss -o
复制代码

ss输出字段说明(以TCP连接为例):

• State:连接状态(如ESTABLISHED、LISTEN等)
• Recv-Q:接收队列中的数据字节数
• Send-Q:发送队列中的数据字节数
• Local Address:Port:本地地址和端口
• Peer Address:Port:远程地址和端口
• Process:进程信息(使用-p参数时显示)

优缺点分析

优点:

• 比netstat更快、更高效,特别是在连接数量大的系统上
• 直接从内核获取信息,性能更好
• 提供丰富的过滤选项,可以精确显示所需的套接字信息
• 支持多种过滤条件,如状态、端口、IP、进程等
• 输出格式简洁,信息密度高
• 是现代Linux系统中网络监控的首选工具

缺点:

• 过滤语法相对复杂,需要学习成本
• 不支持历史数据记录和分析
• 不支持图形化显示
• 不支持远程监控和告警功能
• 对于习惯使用netstat的管理员,需要适应新的命令和输出格式

适用场景

ss适用于以下场景:

• 网络连接监控和分析
• 网络故障排查
• 网络安全审计
• 端口占用情况检查
• 大规模网络环境下的连接监控
• 精确过滤和查找特定连接
• 脚本自动化监控

8. nmon工具

工具简介

nmon(Nigel’s Monitor)是一个功能强大的系统性能监控工具,由IBM员工Nigel Griffiths开发。它提供了一个单一屏幕上的综合视图,显示CPU、内存、网络、磁盘、文件系统等系统资源的使用情况。nmon既可以实时监控系统,也可以将数据收集到文件中,用于后续分析。它还提供了一个图形化分析工具nmon analyzer,可以将收集的数据转换为Excel图表,便于进行性能趋势分析和报告生成。

安装方法

nmon不在CentOS默认仓库中,需要从EPEL仓库安装:
  1. # 对于CentOS 7
  2. sudo yum install epel-release
  3. sudo yum install nmon
  4. # 对于CentOS 8及以上版本
  5. sudo dnf install epel-release
  6. sudo dnf install nmon
复制代码

使用方法和常用命令

基本用法:
  1. # 启动nmon交互式界面
  2. nmon
  3. # 启动nmon并收集数据到文件,每30秒收集一次,收集120次(共1小时)
  4. nmon -f -s 30 -c 120
  5. # 启动nmon并指定数据文件名
  6. nmon -f -s 30 -c 120 -m /tmp/mydata
  7. # 显示帮助信息
  8. nmon -h
复制代码

nmon交互式界面常用按键:

• c:显示CPU信息
• m:显示内存信息
• d:显示磁盘信息
• n:显示网络信息
• j:显示文件系统信息
• k:显示内核信息
• t:显示进程信息
• h:显示帮助信息
• q:退出nmon

优缺点分析

优点:

• 提供全面的系统性能监控,包括CPU、内存、磁盘、网络等
• 交互式界面直观易用,信息展示清晰
• 支持数据收集到文件,便于后续分析
• 提供图形化分析工具,可生成Excel图表
• 资源占用少,对系统性能影响小
• 支持多种数据收集模式和参数配置

缺点:

• 需要额外安装,不是系统自带工具
• 交互式界面不适合远程监控和自动化
• 图形化分析工具需要Excel支持
• 不支持实时告警功能
• 不支持分布式监控和多服务器集中管理

适用场景

nmon适用于以下场景:

• 系统性能实时监控
• 性能问题诊断和分析
• 系统基准测试
• 容量规划
• 性能趋势分析
• 生成性能报告
• 教学和演示

9. Zabbix

工具简介

Zabbix是一个企业级的开源监控解决方案,用于监控网络和服务器的健康状况。它提供了灵活的监控机制、强大的告警功能和丰富的可视化选项。Zabbix采用分布式架构,可以监控数万台服务器,支持多种数据收集方式(如Zabbix agent、SNMP、JMX、IPMI等),并提供了强大的数据存储和分析能力。Zabbix不仅适合IT基础设施监控,还可以用于应用程序监控、云环境监控和业务流程监控。

安装方法

Zabbix的安装相对复杂,需要安装服务器端、前端和代理。以下是基本安装步骤:

1. 添加Zabbix仓库:
  1. # 对于CentOS 7
  2. sudo rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
  3. sudo yum clean all
  4. # 对于CentOS 8
  5. sudo rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/zabbix-release-5.0-1.el8.noarch.rpm
  6. sudo dnf clean all
复制代码

1. 安装Zabbix服务器、前端和代理:
  1. # 对于CentOS 7
  2. sudo yum install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-agent
  3. # 对于CentOS 8
  4. sudo dnf install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-agent
复制代码

1. 安装并配置数据库(以MySQL为例):
  1. # 安装MySQL服务器
  2. sudo yum install mysql-server
  3. sudo systemctl start mysqld
  4. sudo systemctl enable mysqld
  5. # 创建Zabbix数据库和用户
  6. mysql -uroot -p
  7. mysql> create database zabbix character set utf8 collate utf8_bin;
  8. mysql> create user zabbix@localhost identified by 'password';
  9. mysql> grant all privileges on zabbix.* to zabbix@localhost;
  10. mysql> quit;
复制代码

1. 导入初始架构和数据:
  1. zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
复制代码

1. 配置Zabbix服务器:
  1. sudo vi /etc/zabbix/zabbix_server.conf
复制代码

在配置文件中设置数据库连接信息:
  1. DBHost=localhost
  2. DBName=zabbix
  3. DBUser=zabbix
  4. DBPassword=password
复制代码

1. 启动Zabbix服务器和代理:
  1. sudo systemctl restart zabbix-server zabbix-agent httpd
  2. sudo systemctl enable zabbix-server zabbix-agent httpd
复制代码

1. 通过浏览器访问Zabbix前端(http:///zabbix)并完成安装向导。

使用方法和常用命令

Zabbix主要通过Web界面进行配置和管理,但也提供了一些命令行工具:
  1. # 检查Zabbix服务器配置
  2. zabbix_server -c /etc/zabbix/zabbix_server.conf -R config_cache_reload
  3. # 获取Zabbix代理状态
  4. zabbix_agentd -p
  5. # 测试Zabbix代理配置
  6. zabbix_agentd -t system.cpu.load
  7. # 手动发送数据到Zabbix服务器
  8. zabbix_sender -z server_ip -p 10051 -s "host_name" -k "key" -o "value"
复制代码

Zabbix Web界面主要功能:

• 主机管理:添加、配置和管理监控主机
• 监控项:定义要监控的数据和收集方式
• 触发器:设置告警条件和阈值
• 图形:创建自定义图表和仪表盘
• 模板:创建和应用监控配置模板
• 发现:自动发现网络设备和资源
• 告警:配置告警通知方式和接收者
• 报表:生成性能和可用性报表

优缺点分析

优点:

• 功能全面,支持多种监控类型和数据收集方式
• 分布式架构,可扩展性强,适合大规模环境
• 提供强大的告警机制和通知方式
• 丰富的可视化选项,包括图表、仪表盘和拓扑图
• 支持自定义脚本和扩展,灵活性高
• 活跃的社区和商业支持
• 提供API接口,便于与其他系统集成

缺点:

• 安装和配置相对复杂
• 资源占用较高,对硬件有一定要求
• 学习曲线陡峭,需要时间掌握
• 大规模环境下性能优化需要专业知识
• 默认配置可能不适合所有场景,需要定制
• 许可证模式:核心功能开源,某些高级功能需要商业许可

适用场景

Zabbix适用于以下场景:

• 企业级IT基础设施监控
• 大规模服务器和网络设备监控
• 数据中心监控和管理
• 应用程序性能监控
• 云环境监控
• 服务级别协议(SLA)监控
• 容量规划和性能优化
• 合规性和审计需求

10. Prometheus + Grafana

工具简介

Prometheus是一个开源的监控和告警系统,专门设计用于记录时间序列数据,包括指标和事件。Grafana是一个开源的可视化工具,用于查询、可视化和告警。这两个工具通常一起使用,Prometheus负责数据收集和存储,Grafana负责数据展示和告警。这种组合已经成为现代云原生环境中最流行的监控解决方案之一,特别适合于动态环境和微服务架构的监控。

安装方法

1. 创建Prometheus用户和目录:
  1. sudo useradd --no-create-home --shell /bin/false prometheus
  2. sudo mkdir /etc/prometheus
  3. sudo mkdir /var/lib/prometheus
  4. sudo chown prometheus:prometheus /etc/prometheus
  5. sudo chown prometheus:prometheus /var/lib/prometheus
复制代码

1. 下载并解压Prometheus:
  1. wget https://github.com/prometheus/prometheus/releases/download/v2.26.0/prometheus-2.26.0.linux-amd64.tar.gz
  2. tar xvf prometheus-2.26.0.linux-amd64.tar.gz
复制代码

1. 复制二进制文件:
  1. sudo cp prometheus-2.26.0.linux-amd64/prometheus /usr/local/bin/
  2. sudo cp prometheus-2.26.0.linux-amd64/promtool /usr/local/bin/
  3. sudo chown prometheus:prometheus /usr/local/bin/prometheus
  4. sudo chown prometheus:prometheus /usr/local/bin/promtool
复制代码

1. 复制配置文件:
  1. sudo cp -r prometheus-2.26.0.linux-amd64/consoles /etc/prometheus
  2. sudo cp -r prometheus-2.26.0.linux-amd64/console_libraries /etc/prometheus
  3. sudo chown -R prometheus:prometheus /etc/prometheus/consoles
  4. sudo chown -R prometheus:prometheus /etc/prometheus/console_libraries
复制代码

1. 创建Prometheus配置文件:
  1. sudo vi /etc/prometheus/prometheus.yml
复制代码

基本配置示例:
  1. global:
  2.   scrape_interval: 15s
  3. scrape_configs:
  4.   - job_name: 'prometheus'
  5.     scrape_interval: 5s
  6.     static_configs:
  7.       - targets: ['localhost:9090']
复制代码

1. 创建systemd服务文件:
  1. sudo vi /etc/systemd/system/prometheus.service
复制代码

内容如下:
  1. [Unit]
  2. Description=Prometheus
  3. Wants=network-online.target
  4. After=network-online.target
  5. [Service]
  6. User=prometheus
  7. Group=prometheus
  8. Type=simple
  9. ExecStart=/usr/local/bin/prometheus \
  10.     --config.file /etc/prometheus/prometheus.yml \
  11.     --storage.tsdb.path /var/lib/prometheus/ \
  12.     --web.console.templates=/etc/prometheus/consoles \
  13.     --web.console.libraries=/etc/prometheus/console_libraries
  14. [Install]
  15. WantedBy=multi-user.target
复制代码

1. 启动Prometheus服务:
  1. sudo systemctl daemon-reload
  2. sudo systemctl start prometheus
  3. sudo systemctl enable prometheus
复制代码

1. 添加Grafana仓库:
  1. sudo tee /etc/yum.repos.d/grafana.repo <<EOF
  2. [grafana]
  3. name=grafana
  4. baseurl=https://packages.grafana.com/oss/rpm
  5. repo_gpgcheck=1
  6. enabled=1
  7. gpgcheck=1
  8. gpgkey=https://packages.grafana.com/gpg.key
  9. sslverify=1
  10. sslcacert=/etc/pki/tls/certs/ca-bundle.crt
  11. EOF
复制代码

1. 安装Grafana:
  1. sudo yum install grafana
复制代码

1. 启动Grafana服务:
  1. sudo systemctl start grafana-server
  2. sudo systemctl enable grafana-server
复制代码

1. 访问Grafana Web界面(http://:3000),默认用户名和密码为admin/admin。

使用方法和常用命令
  1. # 检查Prometheus配置文件
  2. promtool check config /etc/prometheus/prometheus.yml
  3. # 重新加载Prometheus配置
  4. kill -HUP $(pidof prometheus)
  5. # 查询Prometheus数据
  6. curl -g 'http://localhost:9090/api/v1/query?query=up'
  7. # 查询Prometheus范围数据
  8. curl -g 'http://localhost:9090/api/v1/query_range?query=up&start=2021-04-01T00:00:00Z&end=2021-04-01T01:00:00Z&step=15s'
复制代码

1. 添加Prometheus数据源:登录Grafana Web界面导航到Configuration > Data Sources点击”Add data source”选择Prometheus输入Prometheus服务器URL(如http://localhost:9090)点击”Save & Test”
2. 登录Grafana Web界面
3. 导航到Configuration > Data Sources
4. 点击”Add data source”
5. 选择Prometheus
6. 输入Prometheus服务器URL(如http://localhost:9090)
7. 点击”Save & Test”
8. 创建仪表盘:导航到Create > Dashboard添加面板(Panel)选择数据源和查询语句配置可视化选项保存仪表盘
9. 导航到Create > Dashboard
10. 添加面板(Panel)
11. 选择数据源和查询语句
12. 配置可视化选项
13. 保存仪表盘
14. 导入预定义仪表盘:导航到Create > Import输入仪表盘ID或上传JSON文件选择数据源点击”Import”
15. 导航到Create > Import
16. 输入仪表盘ID或上传JSON文件
17. 选择数据源
18. 点击”Import”

添加Prometheus数据源:

• 登录Grafana Web界面
• 导航到Configuration > Data Sources
• 点击”Add data source”
• 选择Prometheus
• 输入Prometheus服务器URL(如http://localhost:9090)
• 点击”Save & Test”

创建仪表盘:

• 导航到Create > Dashboard
• 添加面板(Panel)
• 选择数据源和查询语句
• 配置可视化选项
• 保存仪表盘

导入预定义仪表盘:

• 导航到Create > Import
• 输入仪表盘ID或上传JSON文件
• 选择数据源
• 点击”Import”

优缺点分析

优点:

• 现代化的监控架构,特别适合云原生和微服务环境
• 强大的查询语言PromQL,支持灵活的数据查询和聚合
• 高效的时间序列数据存储和压缩
• 良好的可扩展性,支持联邦集群和远程存储
• 丰富的生态系统,包括各种Exporter和集成
• Grafana提供强大的可视化能力和灵活的告警机制
• 开源免费,社区活跃
• 支持多种数据源,不仅限于Prometheus

缺点:

• 学习曲线较陡峭,特别是PromQL查询语言
• 需要多个组件配合使用,部署和维护相对复杂
• 长期数据存储需要额外的配置和资源
• 默认情况下不提供用户友好的配置界面,主要依赖配置文件
• 告警功能相对基础,不如Zabbix等传统监控系统成熟
• 对于非时间序列数据的监控支持有限

适用场景

Prometheus + Grafana适用于以下场景:

• 云原生环境和容器编排平台监控(如Kubernetes)
• 微服务架构监控
• 时间序列数据监控和分析
• 大规模动态环境监控
• 需要高度自定义的可视化场景
• 开发运维一体化(DevOps)环境
• 需要与其他系统集成和自动化的场景
• 需要监控多种异构系统的环境

如何选择合适的监控工具

面对众多的监控工具,如何选择最适合自己需求的工具呢?以下是一些关键考虑因素:

1. 监控需求

首先需要明确自己的监控需求:

• 实时监控还是历史分析:如果只需要实时查看系统状态,top、htop等工具就足够了;如果需要长期趋势分析,则应考虑sar、Zabbix或Prometheus。
• 监控范围:是监控单台服务器还是整个基础设施?单机监控可以使用命令行工具,而多服务器监控则需要Zabbix或Prometheus等集中式解决方案。
• 监控指标:需要监控哪些指标?基本的CPU、内存、磁盘、网络,还是需要更深入的应用程序性能指标?
• 告警需求:是否需要自动告警功能?如果需要,Zabbix和Prometheus+Grafana+Alertmanager组合是更好的选择。

2. 系统资源

考虑监控工具本身的资源消耗:

• 资源受限环境:在资源有限的环境中,应选择轻量级工具如top、vmstat、iostat等。
• 资源充足环境:在资源充足的环境中,可以考虑功能更全面的工具如Zabbix或Prometheus。

3. 技术能力

考虑团队的技术能力和学习成本:

• 初学者:对于初学者,htop、nmon等图形化工具更易于上手。
• 有经验的管理员:有经验的管理员可以充分利用vmstat、iostat、sar等工具的强大功能。
• 专业团队:专业团队可以考虑部署和维护Zabbix或Prometheus等企业级解决方案。

4. 集成需求

考虑监控工具与现有系统的集成需求:

• 自动化集成:如果需要与自动化工具集成,Prometheus的API和Zabbix的API都是不错的选择。
• 可视化集成:如果需要与现有的可视化系统集成,Grafana的灵活性和多样性可能是更好的选择。
• 告警集成:如果需要与现有的告警系统集成,需要考虑工具的告警机制和集成能力。

5. 预算考虑

考虑预算限制:

• 开源免费:所有介绍的工具都是开源免费的,适合预算有限的组织。
• 商业支持:如果需要商业支持,Zabbix提供商业支持选项,Prometheus和Grafana也有提供商业支持的公司。

工具选择建议

基于以上考虑因素,以下是一些常见场景的工具选择建议:

1. 单台服务器日常监控:基础监控:top、htop深入分析:vmstat、iostat、sar网络监控:netstat、ss
2. 基础监控:top、htop
3. 深入分析:vmstat、iostat、sar
4. 网络监控:netstat、ss
5. 小型服务器集群:简单集中监控:nmon + 脚本收集基础集中监控:Zabbix现代化监控:Prometheus + Grafana
6. 简单集中监控:nmon + 脚本收集
7. 基础集中监控:Zabbix
8. 现代化监控:Prometheus + Grafana
9. 大型企业环境:传统IT基础设施:Zabbix云原生和微服务:Prometheus + Grafana混合环境:Zabbix + Prometheus + Grafana组合使用
10. 传统IT基础设施:Zabbix
11. 云原生和微服务:Prometheus + Grafana
12. 混合环境:Zabbix + Prometheus + Grafana组合使用
13. 特定需求场景:网络故障排查:netstat、ss磁盘I/O问题:iostat内存问题分析:vmstat、sar长期趋势分析:sar、Zabbix、Prometheus
14. 网络故障排查:netstat、ss
15. 磁盘I/O问题:iostat
16. 内存问题分析:vmstat、sar
17. 长期趋势分析:sar、Zabbix、Prometheus

单台服务器日常监控:

• 基础监控:top、htop
• 深入分析:vmstat、iostat、sar
• 网络监控:netstat、ss

小型服务器集群:

• 简单集中监控:nmon + 脚本收集
• 基础集中监控:Zabbix
• 现代化监控:Prometheus + Grafana

大型企业环境:

• 传统IT基础设施:Zabbix
• 云原生和微服务:Prometheus + Grafana
• 混合环境:Zabbix + Prometheus + Grafana组合使用

特定需求场景:

• 网络故障排查:netstat、ss
• 磁盘I/O问题:iostat
• 内存问题分析:vmstat、sar
• 长期趋势分析:sar、Zabbix、Prometheus

监控工具的最佳实践

无论选择哪种监控工具,以下最佳实践都可以帮助您更有效地监控系统性能:

1. 建立基线

在开始监控之前,首先需要建立系统性能的基线:

• 在正常工作负载下收集系统性能数据
• 确定各项指标的正常范围和波动模式
• 记录系统配置和应用程序版本信息
• 定期更新基线数据,特别是在系统配置或应用程序变更后

2. 选择合适的监控指标

根据系统特性和业务需求,选择最相关的监控指标:

• CPU指标:使用率、负载平均值、上下文切换、中断数
• 内存指标:使用率、交换活动、缓存和缓冲区使用情况
• 磁盘指标:使用率、IOPS、吞吐量、等待时间、队列长度
• 网络指标:带宽使用、连接数、错误率、延迟
• 应用指标:响应时间、错误率、吞吐量、资源使用情况

3. 设置合理的告警阈值

避免告警疲劳,设置合理的告警阈值:

• 基于基线数据设置阈值,考虑正常波动范围
• 使用多级告警机制,如警告、严重、紧急
• 避免设置过于敏感的阈值,导致误报
• 定期审查和调整告警阈值,适应系统变化
• 考虑使用动态阈值,基于历史数据自动调整

4. 实施分层监控

采用分层监控策略,从不同层面监控系统:

• 基础设施层:监控硬件资源使用情况
• 操作系统层:监控进程、文件系统、网络等
• 应用程序层:监控应用性能、错误率、事务处理等
• 业务层:监控业务指标,如用户活跃度、转化率等

5. 自动化监控和响应

利用自动化提高监控效率:

• 自动部署监控代理和配置
• 自动发现和添加新资源到监控系统
• 自动执行常见故障恢复操作
• 自动生成和分发性能报告
• 使用API集成监控工具和其他系统

6. 定期审查和优化

持续改进监控系统:

• 定期审查监控覆盖范围和有效性
• 分析告警历史,优化告警规则
• 评估监控工具的性能和资源消耗
• 根据业务发展调整监控策略
• 保持监控工具和组件的更新

7. 文档化和知识共享

建立监控知识库:

• 记录监控配置和告警规则
• 编写故障排查手册和最佳实践指南
• 分享监控经验和教训
• 培训团队成员使用监控工具
• 建立跨团队协作机制,共同解决监控问题

结论

系统性能监控是保障服务器稳定运行的关键环节,也是优化系统性能、提升用户体验的基础工作。本文介绍了CentOS系统上十大必备的性能监控工具,从基础的命令行工具如top、htop、vmstat,到专业的网络监控工具如netstat、ss,再到企业级监控解决方案如Zabbix和Prometheus+Grafana组合。

每种工具都有其独特的优势和适用场景,没有一种工具能够满足所有需求。在实际应用中,通常需要根据具体情况组合使用多种工具,形成全面的监控体系。例如,可以使用top和htop进行日常快速检查,使用vmstat和iostat进行深入性能分析,使用Zabbix或Prometheus进行长期监控和告警。

选择合适的监控工具需要考虑多种因素,包括监控需求、系统资源、技术能力、集成需求和预算限制。无论选择哪种工具,都应遵循监控最佳实践,如建立基线、选择合适的指标、设置合理的告警阈值、实施分层监控、自动化监控和响应、定期审查和优化,以及文档化和知识共享。

通过有效的系统性能监控,管理员可以及时发现和解决问题,优化系统性能,规划容量需求,最终提升服务器管理效率,为业务发展提供坚实的技术支撑。希望本文介绍的监控工具和最佳实践能够帮助您构建适合自己需求的监控系统,实现高效的服务器管理。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

频道订阅

频道订阅

加入社群

加入社群

联系我们|TG频道|RSS

Powered by Pixtech

© 2025 Pixtech Team.