系统一旦跑起来,我们就希望它稳定运行,不要宕机,不要速度慢,对于系统管理员来说每天监控和调试Linux系统的性能问题是一项繁重的工作。监控和保持系统启动并运行是很不容易的一件事。接下来介绍部分linux的系统监控命令。
1.CPU监控 —— top
Linux下的Top命令是一个性能监控程序,用于按一定的顺序显示所有正在运行而且处于活动状态的实时进程,而且会定期更新显示结果。
这条命令显示了CPU的使用率、内存使用率、交换内存使用大小、高速缓存使用大小、缓冲区使用大小,进程PID、所使用命令以及其他。它还可以显示正在运行进程的内存和CPU占用多的情况。
$ top
2.虚拟内存监控vmstat
Linux 的 VmStat 命令用于显示虚拟内存、内核线程、磁盘、系统进程、I/O 块、中断、CPU 活动 等的统计信息。
一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数,
$ vmstat 2 2
下面是部分参数的详解:
r :表示运行队列,如果运行队列过大,表示你的CPU很繁忙,一般会造成CPU使用率很高
b :表示阻塞的进程数
swpd :虚拟内存已使用的大小,如果大于0,表示你的机器物理内存不足了,如果不是程序内存泄露的原因,那么你该升级内存了或者把耗内存的任务迁移到其他机器
free :空闲的物理内存的大小
buff : 系统占用的缓存大小
cache :直接用来记忆我们打开的文件,给文件做缓冲
si :每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了
us :用户CPU时间
sy :系统CPU时间
so : 每秒虚拟内存写入磁盘的大小,如果这个值大于0,同上。
sy : 系统CPU时间,如果太高,表示系统调用时间长,例如是IO操作频繁。
id : 空闲 CPU时间,一般来说,id + us + sy = 100
wa: IO等待时间百分比 wa的值高时,说明IO等待比较严重,这可能由于磁盘大量作随机访问造成,也有可能磁盘出现瓶颈(块操作)。
id: 空闲时间百分比
3. 列出打开的文件:lsof
它常用于以列表的形式显示所有打开的文件和进程。打开的文件包括磁盘文件、网络套接字、管道、设备和进程。使用这条命令的主要情形之一就是在无法挂载磁盘和显示正在使用或者打开某个文件的错误信息的时候。使用这条命令,你可以很容易地看到正在使用哪个文件。
4.网络包分析工具:tcpdump
Tcpdump是最广泛使用的网络包分析器或者包监控程序之一,它用于捕捉或者过滤网络上指定接口上接收或者传输的TCP/IP包。它还有一个选项用于把捕捉到的包保存到文件里,以便以后进行分析。
-h:查看命令帮助
-i:网络接口
-c :需要输出包数量
$ sudo tcpdump -i eth0 -c 3
5.网络状态统计:netstat
Netstat是一个用于监控进出网络的包和网络接口统计的命令行工具。它是一个非常有用的工具,系统管理员可以用来监控网络性能,定位并解决网络相关问题。
- h: 查看帮助
- r: 查看路由表
- i: 查看网络接口
$ netstat -r
$ netstat -i
6.监控Linux磁盘I/O:iostat
iostat是一个用于收集显示系统存储设备输入和输出状态统计的简单工具。这个工具常常用来追踪存储设备的性能问题,其中存储设备包括设备、本地磁盘,以及诸如使用NFS等的远端磁盘。
$ iostat
各项含义: avg-cpu段:
%user: 在用户级别运行所使用的CPU的百分比.
%nice:优先进程消耗的CPU时间,占所有CPU的百分比.
%system: 在系统级别(kernel)运行所使用CPU的百分比.
%iowait: CPU等待硬件I/O时,所占用CPU百分比.
%steal: 管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比.
%idle: CPU空闲时间的百分比.
Device段:
tps: 每秒钟发送到的I/O请求数.
KB_read /s: 每秒读取的block数.
KB_wrtn/s: 每秒写入的block数.
KB_read: 启动到现在 读入的block总数.
KB_wrtn: 启动到现在写入的block总数.
7.监控系统内存:free
$ free -m
以上都是常用的办法。如果系统宕机怎么办呢,总结一下,总共有一下方法排查问题:
序号 |
排查点 |
排查方法 |
判断依据 |
1 |
系统的Uptime时间 |
uptime |
如果发现系统uptime时间很短,则需要检查系统是否重启过 |
系统命令的执行 | history | 查看系统命令的执行历史记录,可排查是否有人工导致宕机的可能 | |
2 |
检查文件系统的使用率 |
df -h |
对于OS的文件系统,如果发现使用率高于90%就应该再进一步检查是什么原因引起的文件系统使用率上涨。对于应用系统使用的文件系统,我们重点在于发现有没有文件系统使用率到达95%以上,若有,把情况报告给相关的人员。 |
3 |
检查网络状态 |
ping |
网络连通性检查 |
ifconfig |
检查当前处于up状态的网卡 |
||
mii-tool |
link ok 显示各个网卡所接链路的状况 |
||
ethtool eth[n] |
查看指定网卡所接链路的状况 |
||
ls -al /etc/resolv.conf |
确保以上文件的权限是other可读 |
||
cat /etc/hosts |
主机名在hosts文件中只应该与机器的物理IP映射,如果出现有机器的浮动IP与主机映射就需要做进一步检查 |
||
ls -al /etc/resolv.conf |
确保以上文件的权限是other可读 |
||
netstat –rn |
排查路由表,正常情况下应该只设置了网关,而没有其它的静态路由,如果在列表中发现有其它的路由,则需要确认是否正确 |
||
nethogs | 监视每个进程的网络带宽情况 | ||
view /etc/sysconfig/network-scripts/ifcfg-eth* |
先检查子网掩码设置是否正确 |
||
4 |
检查ntp时间服务器设置 |
ntpq -p |
正常情况下应该有如下输出信息: |
5 |
进程状态 |
ps –ef | grep defunct;ps -ef | wc -l;ps -ef | grep -v root | wc -l |
如果系统中存在大量的僵尸进程则属于异常的状态需要检查处理。如果只是个别进程就不需要处理。 |
6 |
内存状态 |
free -m |
检查内存使用情况 |
7 |
swap状态 |
swapon -s |
查看swap使用百分比 |
8 |
检查机器性能 |
vmstat |
CPU:如果cpu的id字段长时间<10,该机器的CPU负载比较高 |
9 |
检查磁盘性能 |
iostat |
检查iowait 时长是否过大? |
10 |
检查系统日志 |
view /var/log/messages |
可以通过检索error,fail,warn等字眼加快检查的速度 |
11 |
收集系统日志 |
sosreport -a --batch |
收集系统日志 |
12 |
收集硬件日志 |
DSET |
Dell PC Server :用DSET 工具收集硬件日志 |