当前位置: 首页 > news >正文

Linux:监控命令

目录

1、需要监控的核心要点

1.1 资源监控

1.2 服务与应用监控

1.3 日志监控

1.4 安全性与合规监控

2、容易出现的问题

2.1 系统突然变慢,响应卡顿

2.2 “No space left on device” 错误

2.3 服务无法启动或端口无法访问

2.4 网络连接失败、丢包或延迟高

2.5 内存泄漏导致系统崩溃

2.6 安全入侵事件

3、常见监控与排查命令

3.1 系统整体状态监控

3.2 CPU相关

3.3 磁盘I/O相关

3.4 网络相关

3.5 进程与日志相关

4、排查问题的经典思路

第1步:明确问题现象 & 收集信息

第2步:检查系统整体状态(全局视野)

第3步:深入资源瓶颈维度

第4步:定位到具体进程 & 分析上下文

第5步:提出假设 & 验证解决


1、需要监控的核心要点

1.1 资源监控

这是最基础也是最重要的部分,直接反映了系统的健康度。

  • CPU:

    • 使用率: 用户态、系统态、I/O等待、软硬中断、空闲时间。重点关注 %us(用户进程)和 %sy(系统进程)是否长期过高,以及 %wa(I/O等待)是否过高。

    • 负载: 系统平均负载。对于单核CPU,1.0是临界点;对于N核CPU,N是临界点。负载高于CPU核数就意味着有进程在等待CPU。

    • 上下文切换和中断次数: 频繁的上下文切换会消耗CPU资源。

  • 内存:

    • 使用率: 总内存、已用内存、空闲内存、缓冲和缓存。

    • Swap使用率: 一旦开始使用Swap,性能就会急剧下降。Swap频繁读写是内存不足的明确信号。

    • 内存泄漏: 观察可用内存是否在持续下降,即使重启了相关应用。

  • 磁盘 I/O:

    • 使用率: 每个分区的使用百分比。根分区/填满是致命问题。

    • Inode使用率: 即使磁盘空间充足,inode耗尽也无法创建新文件。

    • I/O 读写速率、IOPS、响应时间: 反映磁盘的繁忙程度和性能。响应时间过长通常意味着磁盘瓶颈。

  • 网络:

    • 带宽使用率: 流入和流出的流量。

    • 连接数: TCP/UDP连接状态(如 ESTABLISHEDTIME_WAITCLOSE_WAIT)。CLOSE_WAIT 过多可能意味着应用程序未正确关闭连接。

    • 错误包和丢包率: 网卡、驱动或网络拥堵问题。

1.2 服务与应用监控

光有资源正常还不够,上面跑的服务也必须正常。

  • 进程状态: 关键进程(如 Nginx, MySQL, Redis, 你的业务进程)是否在运行。

  • 端口状态: 关键服务监听的端口是否能正常连接。

  • 应用性能指标:

    • Web服务: 请求量、响应时间、错误率(5xx)。

    • 数据库: 查询速度、连接数、慢查询、锁等待。

    • 中间件: 队列长度、缓存命中率。

1.3 日志监控

日志是发现问题和追溯根源的宝库。

  • 错误日志: 实时扫描 /var/log/ 以及应用日志中的 ERRORFATALException 等关键字。

  • 访问日志: 分析流量模式、异常访问(如某个IP短时间内大量请求)。

  • 系统日志: /var/log/messages 或 /var/log/syslog 中的内核和系统级报错。

1.4 安全性与合规监控

  • 登录情况: 成功/失败的登录记录(/var/log/secure 或 /var/log/auth.log)。重点关注暴力破解。

  • 文件完整性: 关键系统文件(如 /etc/passwd/etc/shadow, 二进制程序)是否被篡改。

  • root权限变更: 任何使用 sudo 或 su 切换到root的操作。

2、容易出现的问题

2.1 系统突然变慢,响应卡顿

  • 问题根源:

    • CPU瓶颈: %us 或 %sy 持续100%,或平均负载远高于CPU核数。

    • 内存瓶颈: 可用内存耗尽,开始大量使用Swap,导致I/O等待(%wa)飙升。

    • I/O瓶颈: 磁盘利用率100%,I/O响应时间过长(例如超过几十毫秒)。

  • 排查命令: tophtopvmstat 1iostat -x 1

2.2 “No space left on device” 错误

  • 问题根源:

    • 磁盘空间耗尽。

    • 更隐蔽的情况: inode 耗尽。即使 df -h 显示有空间,但 df -i 会显示 inode 已满,通常是由于大量小文件造成。

  • 排查命令: df -hdf -idu -sh /* 逐级定位大目录。

2.3 服务无法启动或端口无法访问

  • 问题根源:

    • 进程崩溃或被误杀。

    • 配置文件语法错误。

    • 依赖的服务(如数据库)不可用。

    • 防火墙规则阻止了访问。

  • 排查命令: systemctl status <service_name>journalctl -u <service_name>netstat -tunlp | grep <port>iptables -L

2.4 网络连接失败、丢包或延迟高

  • 问题根源:

    • 网络带宽打满。

    • 防火墙/安全组策略。

    • 物理网络问题或网卡故障。

    • 本地连接数达到上限(ulimit 或内核参数限制)。

  • 排查命令: pingtraceroutenetstat -sss -sethtool <interface>

2.5 内存泄漏导致系统崩溃

  • 问题根源: 某个应用程序(如Java/Python应用)持续申请内存却不释放,最终耗尽所有内存和Swap,触发OOM Killer杀死进程,可能导致服务雪崩。

  • 排查命令: 观察 free -h 中可用内存的长期趋势,使用 ps aux --sort=-%mem 查看内存消耗最大的进程。

2.6 安全入侵事件

  • 问题根源:

    • 弱密码被暴力破解。

    • 系统或软件存在未修复的漏洞。

    • 部署了带有后门的恶意软件。

  • 排查迹象: 未知的登录IP和用户、未知的进程、异常的网络连接(如向外网IP发送数据)、系统文件被修改。

3、常见监控与排查命令

3.1 系统整体状态监控

命令主要用途常用参数/示例关键信息
top / htop实时动态查看系统整体性能状态,包括负载、进程、CPU、内存等。top htop (更友好)负载平均值(load average), CPU使用率(%Cpu(s)), 内存使用(MiB Mem), 运行中的进程。
uptime快速查看系统运行时间、用户数和平均负载。uptimeload average: 1min, 5min, 15min 是核心指标
vmstat报告关于进程、内存、分页、块IO、陷阱和CPU活动的信息。vmstat 1 (每秒刷新一次)procs.r (就绪队列长度), si/so (Swap In/Out, 不为0需警惕), us/sy/id (用户/系统/空闲CPU时间)。
dstat全能系统信息统计工具,可以替代 vmstatiostatnetstat 等。dstat -cdlmnpsy 1同时查看CPU、磁盘、负载、网络、内存、分页、系统统计。

3.2 CPU相关

命令主要用途常用参数/示例关键信息
top / htop查看每个进程的CPU使用率。在 top 界面按 P (按CPU排序)%CPU 列。
pidstat用于监控每个进程的CPU使用情况,可动态输出。pidstat -u 1%usr%system%CPU
perf强大的性能分析工具,可以分析CPU周期、缓存命中、系统调用等。perf top perf record -g -p <PID>函数级别的性能热点。
mpstat查看每个CPU核心的详细状态。mpstat -P ALL 1查看是否有单个核心被跑满。

3.3 磁盘I/O相关

命令主要用途常用参数/示例关键信息
iostat查看磁盘的读写速率、IOPS、吞吐量和平均等待时间。iostat -xz 1%util (设备带宽利用率),await (平均I/O等待时间),r/s, w/s (读写速率)。
iotop类似 top,实时显示磁盘I/O的进程。iotop哪个进程在进行大量I/O操作。
pidstat监控每个进程的I/O。pidstat -d 1kB_rd/skB_wr/s (每秒读写KB数)。
df查看磁盘空间使用情况。df -h检查是否因磁盘满导致问题。
du查看目录/文件占用的磁盘空间。du -sh /path/to/dir定位大文件。

3.4 网络相关

命令主要用途常用参数/示例关键信息
netstat / ss查看网络连接、路由表、接口统计等。ss 更现代、更快ss -tlnp (查看监听端口) ss -tunp (查看所有连接)连接状态(ESTABTIME_WAIT),本地/远程地址。
sar系统活动报告,可以查看历史网络流量。sar -n DEV 1rxkB/stxkB/s (网络进出口流量)。
ethtool查看和配置网卡参数。ethtool eth0查看网卡速率、双工模式。
tcpdump强大的网络抓包工具。tcpdump -i any -n host 1.2.3.4进行深度网络问题排查。
ping / traceroute测试网络连通性和路由。ping example.com traceroute example.com基础连通性检查。
nslookup / dig诊断DNS问题。dig @8.8.8.8 example.com检查域名解析是否正确。

3.5 进程与日志相关

命令主要用途常用参数/示例关键信息
ps显示当前进程的快照。ps aux ps -ef ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu进程状态、资源占用、父进程ID。
lsof列出被进程打开的文件。lsof -p <PID> lsof -i :8080 (查看谁在监听8080端口)进程打开了哪些文件、网络连接。
strace / ltrace跟踪进程的系统调用或库函数调用。strace -ff -p <PID>查看进程在底层做了什么,用于调试程序异常。
journalctl查看 systemd 管理的服务日志。journalctl -u nginx -f (追踪nginx日志) journalctl --since "1 hour ago"集中式的系统和服务日志。
tail / grep查看和搜索日志文件。tail -f /var/log/nginx/access.log grep "error" /var/log/messages实时监控和关键字过滤。

4、排查问题的经典思路

第1步:明确问题现象 & 收集信息

  • 现象是什么? 是服务响应慢?还是直接报错“502 Bad Gateway”?或者是服务器卡死?

  • 影响范围? 是单个用户还是所有用户?是单个服务还是整个系统?

  • 发生时间? 是特定时间点还是持续发生?最近是否有过代码发布、配置变更?

第2步:检查系统整体状态(全局视野)

使用 top 或 htop 快速获取全局状态。

  1. 看负载 (load average)

    • 如果1分钟负载远高于CPU核心数,说明系统繁忙。

    • 对比1分钟、5分钟、15分钟负载,看趋势是上升、下降还是平稳。

  2. 看CPU (%Cpu(s))

    • %us 高:用户态进程占用CPU高,可能是应用代码问题。

    • %sy 高:内核态占用CPU高,可能是系统调用频繁或上下文切换过多。

    • %wa 高:I/O等待高,说明CPU在等待磁盘或网络I/O,瓶颈在I/O。

    • %id 高:CPU空闲,问题可能不在CPU。

  3. 看内存 (MiB Mem)

    • free 内存是否几乎为0?

    • available 有多少?如果很小,系统可能在使用Swap。

  4. 看Swap (MiB Swap)

    • used 是否大于0?如果Swap被频繁使用(si/sovmstat中很高),会极大影响性能。

此时,已经能初步判断瓶颈大致在哪个资源上(CPU、内存、I/O)。

第3步:深入资源瓶颈维度

根据上一步的初步判断,使用更精细的命令深入排查。

  • 如果怀疑CPU问题:

    1. 在 top 中按 P,找到占用CPU最高的进程。

    2. 使用 pidstat -u 1 持续观察该进程的CPU使用情况。

    3. 使用 perf top -p <PID> 分析该进程内部哪个函数最耗CPU。

  • 如果怀疑内存问题:

    1. 使用 free -h 确认内存和Swap使用情况。

    2. 在 top 中按 M,找到占用内存最高的进程。

    3. 使用 pidstat -r 1 观察可疑进程的内存变化。

    4. 检查 /proc/meminfo,关注 SlabSUnreclaim 等,看是否是内核对象占用过多。

  • 如果怀疑磁盘I/O问题:

    1. 使用 iostat -xz 1 查看所有磁盘的 %util 和 await

    2. 使用 iotop 找到进行大量I/O读写的进程。

    3. 使用 df -h 检查是否是磁盘空间已满。

  • 如果怀疑网络问题:

    1. 使用 ss -tunp 查看网络连接数和状态。大量 TIME_WAIT 或 CLOSE_WAIT 可能意味着连接管理有问题。

    2. 使用 sar -n DEV 1 查看网卡带宽是否被打满。

    3. 使用 ping/traceroute 检查到目标地址的网络质量。

    4. 使用 tcpdump 进行抓包分析(最后手段)。

第4步:定位到具体进程 & 分析上下文

通过以上步骤,你已经能定位到有问题的进程(PID)。

  1. 查看进程详情: ps -fp <PID> (查看启动命令、用户等)。

  2. 查看进程打开的文件和连接: lsof -p <PID>

  3. 跟踪进程执行: 如果进程行为异常(如卡住、崩溃),使用 strace -p <PID> 跟踪其系统调用,看它卡在哪个调用上。

  4. 分析应用日志: 找到该进程对应的应用日志文件,使用 tail -fgrep 等工具搜索错误(Error)、异常(Exception)等关键字。

第5步:提出假设 & 验证解决

根据收集到的所有信息,提出一个合理的根本原因假设。

  • 假设: “Nginx服务变慢是因为磁盘I/O等待过高,原因是某个PHP进程在执行一个巨大的SQL查询,导致MySQL写入了大量临时文件。”

  • 验证:

    1. 用 iotop 确认是 mysqld 进程在大量写盘。

    2. 连接MySQL,使用 SHOW PROCESSLIST; 查看当前执行的慢查询。

    3. 找到并优化那个慢查询。

http://www.dtcms.com/a/614347.html

相关文章:

  • 官方网站开发用什么语言厦门建网站的公司
  • 做网站设计需要哪些软件兖州做网站
  • 马来西亚医疗旅游理事会举办“2025马来西亚深圳医疗旅游周“发力中国医疗旅游市场
  • wordpress 微信授权做网站建设优化的公司排名
  • 网站制作招聘音乐网站可做哪些内容
  • 一块中国好屏,和智能终端共舞
  • 240. Java 集合 - 使用集合工厂方法创建和处理数据
  • 南京app定制台州商品关键词优化
  • 代码生成工具Amazon CodeWhisperer介绍
  • 做视频网站的流程注册公司流程需要多久
  • 域名与空间购买后怎么做网站一般网站海报做一张多久
  • 网站建设合同规定橘子建站是什么
  • LangChain框架入门:全方位解析记忆组件
  • Python如何写一个可迭代对象
  • 命名规范snake_case
  • 即插即用涨点系列 (八):AMDNet 详解!AAAI 2025 SOTA,MLP 融合多尺度分解(MDM)与 AMS 的涨点新范式。
  • riscv64开启llama.cpp的RVV
  • colima 扩容
  • 第十篇 扫雷游戏 下(初版·思路)
  • 哪些网站可以做外链室内设计培训机构排行
  • 个人网站设计说明photoshop网页制作视频教程
  • 2025年10月总结
  • 《Agent 应用开发与落地全景》笔记
  • 字节码(Bytecode)深度解析:跨平台运行的魔法基石
  • 从零实现 REINFORCE/GRPO —— 大模型推理强化微调实践
  • 通州网站建设站开发评价效果图网站密码破解
  • 社区互助|社区​交易|基于springboot+vue的社区​互助交易系统(源码+数据库+文档)
  • 多线程和线程池的理解运用
  • 专业的传媒行业网站开发做医疗网站颜色选择
  • 网站免费搭建平台中山企业网站制作公司