任务:
第十二周
完成实验楼上Linux安全类实验中的一个,两人一组,题目不能重复。
作业标题 "学号《Linux内核原理与分析》第X周作业",重点是遇到的问题和解决方案内容涵盖教材学习和视频,提交格式用Markdown,同时提交转换的 PDF(VSCode 有相关插件)。
实验:Linux系统监控实战
我们的系统一旦上线跑起来我们自然希望它一直相安无事,不要宕机,不要无响应,不要慢腾腾的。但是这不是打开机器电源然后放任不管就可以得到的。所以我们要监视系统的运行状况,发现问题及时处理。
下面来学习 linux 下常用的监控命令。
1、top:
Linux 下的 top 命令是一个性能监控程序,许多系统管理员常常用它来监控 Linux 性能,在许多 Linux 或者类 Unix 操作系统里都有这个命令。top 命令用于按一定的顺序显示所有正在运行而且处于活动状态的实时进程,而且会定期更新显示结果。这条命令显示了 CPU 的使用率、内存使用率、交换内存使用大小、高速缓存使用大小、缓冲区使用大小,进程 PID、所使用命令以及其他。它还可以显示正在运行进程的内存和 CPU 占用多的情况。

在图中依次可以看到进程 PID,进程用户,CPU 使用率,内存使用率、交换内存使用大小等等信息。top 命令提供了实时的对系统处理器的状态监视,它将显示系统中 CPU 最"敏感"的任务列表。
2、通过man top可以查看到详细的 top 命令使用方式。
man top

3、vmstat采样系统信息
Linux 的 vmstat 命令用于显示虚拟内存、内核线程、磁盘、系统进程、I/O 块、中断、CPU 活动等的统计信息。
一般 vmstat 工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数。
vmstat 2 1
vmstat 2 2

如果要求 vmstat 每 2 秒采集数据,一直采集,直到结束程序(Ctrl+C)。则省略采集次数:
vmstat 2

测试参数讲解:
参数 描述
r 表示运行队列,如果运行队列过大,表示你的 CPU 很繁忙,一般会造成 CPU 使用率很高
b 表示阻塞的进程数
swpd 虚拟内存已使用的大小,如果大于 0,表示机器物理内存不足了,如果不是程序内存泄露的原因,那么你该升级内存了或者把耗内存的任务迁移到其他机器
free 空闲的物理内存的大小
buff 系统占用的缓存大小
cache 直接用来记忆我们打开的文件,给文件做缓冲
si 每秒从磁盘读入虚拟内存的大小,如果这个值大于 0,表示物理内存不够用或者内存泄露了
cs 每秒上下文切换数
us 用户 CPU 时间
so 每秒虚拟内存写入磁盘的大小,如果这个值大于 0,同上
sy 系统 CPU 时间,如果太高,表示系统调用时间长,例如是 IO 操作频繁
id 空闲 CPU 时间,一般来说,id + us + sy = 100
wa IO 等待时间百分比 wa 的值高时,说明 IO 等待比较严重,这可能由于磁盘大量作随机访问造成,也有可能磁盘出现瓶颈(块操作)
st 来自于一个虚拟机偷取的 CPU 时间的百分比
4、lsof显示所有打开的文件和进程
它常用于以列表的形式显示所有打开的文件和进程。打开的文件包括磁盘文件、网络套接字、管道、设备和进程。使用这条命令的主要情形之一就是在无法挂载磁盘和显示正在使用或者打开某个文件的错误信息的时候,使用这条命令,你可以很容易地看到正在使用哪个文件。
实验环境中没有安装这个命令,需要手动安装 sudo apt-get install lsof 然后在终端输入:
lsof

5、tcpdump网络包分析器
tcpdump 是最广泛使用的网络包分析器或者包监控程序之一,它用于捕捉或者过滤网络上指定接口上接收或者传输的 TCP/IP 包。它还有一个选项用于把捕捉到的包保存到文件里,以便以后进行分析。
参数 描述
-h 查看命令帮助
-i 网络接口
-c 需要输出包数量
sudo apt-get update
sudo apt-get install tcpdump
tcpdump -h
sudo tcpdump -i eth0 -c 3


6、进程监控
htop 是一个非常高级的交互式的实时 Linux 进程监控工具。它和 top 命令十分相似,但是它具有更丰富的特性,例如用户可以友好地管理进程,快捷键,垂直和水平方式显示进程等等。htop 是一个第三方工具,它不包含在 Linux 系统中,你需要使用管理工具去安装它。
sudo apt-get install htop
htop

7、iostat输入/输出统计
iostat 是一个计算机系统监视工具,用于收集和显示操作系统存储的输入和输出统计数据。这个工具常常用来追踪存储设备的性能问题,其中存储设备包括本地磁盘以及诸如用 NFS 等的远端磁盘。
sudo apt-get install sysstat
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 总数
查看帮助:
man iostat

8、IPTraf实时局域网 IP 监控
IPTraf 是一个在 Linux 控制台运行的、开放源代码的实时网络(局域网)监控应用。它采集了大量信息,比如通过网络的 IP 流量监控,包括 TCP 标记、ICMP 详细信息、TCP/UDP 流量分离、TCP 连接包和字节数。同时还采集有关接口状态的常见信息和详细信息:TCP、UDP、IP、ICMP、非 IP,IP 校验和错误,接口活动等。
sudo apt-get install iptraf
sudo iptraf



查看命令帮助信息:
sudo iptraf -h

