在CentOS环境下,有多种工具可以用来监控系统资源,以下是一些常用的方法和工具:
命令行工具
- top:实时显示系统进程和资源使用情况,按CPU占用率排序。
top
- htop:top命令的增强版,提供了更友好的用户界面和交互功能,支持鼠标操作。
sudo yum install htop htop
- vmstat:报告系统虚拟内存统计信息,包括CPU、内存、磁盘和交换空间的信息。
vmstat 3
- free:显示系统的内存使用情况,包括物理内存、交换内存和缓存的大小。
free -m
- iostat:报告系统的磁盘I/O统计信息,包括设备的读写速率等。
iostat -x /dev/hdb6
- sar:收集、报告和保存系统的性能数据,包括内存、CPU、磁盘等方面的信息。
sar -u 1 3
- netstat:显示网络连接、路由表、接口统计信息等。
netstat -tuln
- ss:类似于netstat,用于显示活动的网络连接和套接字统计信息。
ss -tuln
- dstat:实时显示系统的网络、CPU、内存、磁盘I/O等资源使用情况。
dstat
- iftop:实时监控网络带宽,显示发送和接收的数据量。
iftop -i eth0
图形化工具
- Glances:跨平台的实时系统监控工具,显示CPU、内存、磁盘、网络和进程等信息。
sudo yum install glances glances
- Nmon:跨平台的系统性能监控工具,显示CPU、内存、磁盘、网络和进程等信息。
sudo yum install nmon nmon
- Zabbix:功能强大的网络监控工具,可以监控服务器的CPU使用率、负载、磁盘IO等指标。
- Prometheus:开源的监控系统,具有高度的可扩展性和灵活性。
- Grafana:与Prometheus等监控工具配合使用,提供强大的可视化界面。
脚本监控
可以使用Shell脚本来定期监控系统资源,并发送告警邮件。例如:
#!/bin/bash # 获取 CPU 使用率 cpu=$(top -bn1 | grep "Cpu(s)" | awk '{print 2, 4}') # 获取内存使用率 mem=$(free -m | awk 'NR==2{printf "%.2f%%", $3*100/$2 }') # 获取磁盘使用率 disk=$(df -h | awk 'NF==1{printf "%s", $5}') # 获取网络流量 rx=$(ifconfig enp0s3 | grep "RX bytes" | awk '{print $2}') tx=$(ifconfig enp0s3 | grep "TX bytes" | awk '{print $6}') # 输出结果 echo "CPU使用率: $cpu" echo "内存使用率: $mem" echo "磁盘使用率: $disk" echo "网络流量(RX/TX): $rx / $tx"