Linux相关

安全咨询 0 2502

系统运行状态分析工具大体如下:


静态代码检测工具或平台:cppcheck、PC-lint、Coverity、QAC C/C++、Clang-Tidy、Clang Static Analyzer、SonarQube+sonar-cxx(推荐)、Facebook的infer

profiling工具:gnu prof、Oprofile、google gperftools(推荐)、perf、intel VTune、AMD CodeAnalyst

内存泄漏:valgrind、AddressSanitizer(推荐)、mtrace、dmalloc、ccmalloc、memwatch、debug_new

CPU使用率:pidstat(推荐)、vmstat、mpstat、top、sar

上下文切换:pidstat(推荐)、vmstat

网络I/O:dstat、tcpdump(推荐)、sar

磁盘I/O:iostat(推荐)、dstat、sar

系统调用追踪:strace(推荐)

网络吞吐量:iftop、nethogs、sar

网络延迟:ping

文件系统空间:df

内存容量:free、vmstat(推荐)、sar

进程内存分布:pmap

CPU负载:uptime、top

软中断硬中断:/proc/softirqs、/proc/interrupts

确定哪些进程正在使用一组给定的文件:lsof

很多的监控工具 Ubuntu/CentOS 都不自带,需要手动安装,在开始前我们最好先把所有可能用得上的监控工具都装上。(它们都很小,基本不占空间)



大一统的监控工具 

下面介绍两个非常方便的大一统监控工具,它们将一台服务器的所有监控数据汇总到一个地方,方便监控。


多机监控推荐用 prometheus+grafana,不过这一套比较吃性能,个人服务器没必要上。


NetData: 极简安装、超详细超漂亮的 Web UI。


这里只介绍单机监控。NetData 也支持中心化的多机监控,待进一步研究。netdata 也可以被用作 prometheus 的 exporter.


NetData 我要吹爆!它是 Github 上最受欢迎的系统监控工具,目前已经 44.5k star 了。

CPU 占用率低(0.1 核),界面超级漂亮超级详细,还对各种指标做了很详细的说明,安装也是一行命令搞定。相当适合萌新运维。


默认通过 19999 端口提供 Web UI 界面。

2568566dc76c56d445499fa03ae8546c.png

Linux主要性能指标说明

一台 Linux 服务器的四类指标如下:


CPU:使用率、平均负载(load average)

RAM:used | free | buffer/cache | avaliable

Disk:空闲容量大小、IO 状态

Network:网速、延迟、丢包率等

1)CPU指标


1. CPU 使用率


CPU 使用率即 CPU 运行在非空闲状态的时间占比,它反应了 CPU 的繁忙程度。

2. 平均负载(Load Average)

平均负载(Load Average)是指单位时间内,系统处于 可运行状态(Running / Runnable) 和 不可中断态 的平均进程数,也就是 平均活跃进程数。


我们知道实际上一个 CPU 核只能跑一个进程,操作系统通过分时调度提供了多进程并行的假象。所以当平均负载(平均活跃进程数)不大于 CPU 逻辑核数时,系统可以正常运转。

如果平均负载超过了核数,那就说明有一部分进程正在活跃中,但是它却没有使用到 CPU(同一时间只能有 1 个进程在使用 CPU),这只可能有两个原因:


这部分进程在排队等待 CPU 空闲。

这部分 CPU 在进行 IO 操作。

不论是何种状况,都说明系统的负载过高了,需要考虑降负或者升级硬件。

3. CPU 使用率与平均负载的关系


CPU 使用率是单位时间内 CPU 繁忙程度的统计。而平均负载不仅包括正在使用 CPU 的进程,还包括等待 CPU 或 I/O 的进程(前面讲过平均负载过高的两种情况)。


因此 CPU 使用率是包含在平均负载内的。这两个参数有两种组合需要注意:


两个参数值都很高:需要降低 CPU 使用率!

CPU 使用率很低,可平均负载却超过了CPU逻辑核数:IO 有瓶颈了!需要排查 内存/磁盘/网络 的问题。

最常遇到的场景:内存用尽导致负载飙升。


也许您对下面的内容还感兴趣:

留言0

评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。