首页 > 行业资讯 > 聊聊 Linux 运维排查问题的分析思路

聊聊 Linux 运维排查问题的分析思路

时间:2023-03-17 来源: 浏览:

聊聊 Linux 运维排查问题的分析思路

原创 twt社区 twt企业IT社区
twt企业IT社区

talkwithtrend

talkwithtrend.com社区(即twt社区)官方公众号,持续发布优秀社区原创内容。内容深度服务企业内各方向的架构师、运维主管、开发和运维工程师等IT专业岗位人群,让您时刻和国内企业IT同行保持信息同步。

收录于合集

社区探讨,供大家参考:

大家在Linux系统运维时排查问题时, 一般的分析思路有哪些呢?聊聊常见的分析思路和小技巧!

问题和以下分享均来自社区会员

@zhanxuechao 数字研究院 咨询专家:

1.整体情况

top/htop/atop 命令查看进程/线程、CPU、内存使用情况,CPU使用情况;
dstat 2 查看CPU、磁盘IO、网络IO、换页、中断、切换,系统I/O状态;
vmstat 2 查看内存使用情况,内存状态;
iostat -d -x 2 查看所有磁盘的IO情况,系统I/O状态;
iotop 查看IO靠前的进程,系统的I/O状态;
perf top 查看占用CPU最多的函数,CPU使用情况;
perf record -ag -- sleep 15 perf report 查看CPU事件占比,调用栈,CPU使用情况;
sar -n DEV 2 查看网卡的吞吐,网卡状态;
/usr/share/bcc/tools/filetop -C 查看每个文件的读写情况,系统的I/O状态;
/usr/share/bcc/tools/opensnoop 显示正在被打开的文件,系统的I/O状态;
mpstat -P ALL 1 单核CPU是否被打爆;
ps aux --sort=-%cpu 按CPU使用率排序,找出CPU消耗最多进程;
ps -eo pid,comm,rss | awk ’{m=$3/1e6;s["*"]+=m;s[$2]+=m} END{for (n in s) printf"%10.3f GB %sn",s[n],n}’ | sort -nr | head -20 统计前20内存占用;
awk ’NF>3{s[""]+=s[$1]=$3$4/1e6} END{for (n in s) printf"%10.1f MB %sn",s[n],n}’ /proc/slabinfo | sort -nr | head -20 统计内核前20slab的占用;
2.进程分析,进程占用的资源
pidstat 2 -p 进程号,查看可疑进程CPU使用率变化情况;
pidstat -w -p 进程号,查看可疑进程的上下文切换情况;
pidstat -d -p 进程号,查看可疑进程的IO情况;
lsof -p 进程号,查看进程打开的文件;
strace -f -T -tt -p 进程号,显示进程发起的系统调用;
3.协议栈分析,连接/协议栈状态
ethtool -S 查看网卡硬件情况;
cat /proc/net/softnet_stat/ifconfig eth1 查看网卡驱动情况;
netstat -nat|awk ’{print awk $NF}’|sort|uniq -c|sort -n 查看连接状态分布;
ss -ntp 或者 netstat -ntp 查看连接队列;
netstat -s 查看协议栈情况;
4.方法论
RED方法:监控服务的请求数(Rate)、错误数(Errors)、响应时间(Duration)。Weave Cloud在监控微服务性能时提出的思路。

USE方法:监控系统资源的使用率(Utilization)、饱和度(Saturation)、错误数(Errors)

@匿名用户:

来自chatgpt——

在Linux系统运维中,排查问题的分析思路通常如下:

确认问题表现:先明确问题的具体表现,如何出现的,何时出现的等等。这有助于缩小问题排查范围。

查看系统日志:系统日志记录了系统运行中的各种信息,包括错误、警告等,可以帮助找到问题的原因。

检查系统资源:查看系统资源使用情况,如内存、CPU、磁盘等,是否达到了系统的限制或者出现了异常。

检查配置文件:检查系统配置文件,是否有错误或者不合理的设置。

进行测试和验证:进行一系列测试和验证,包括网络连接、服务运行情况等等。

查找相关文档和资料:查找相关的文档和资料,了解相关的技术和解决方案,寻找其他可能的解决方案。

进行复盘:在问题得到解决后,进行复盘总结,记录下问题的原因和解决方法,为以后的排查问题提供参考。

以上是一般的排查思路,具体的操作还需要根据实际情况来确定。

@zhaoxiaoyong081 平安科技 资深工程师

1、观察现象:首先需要了解问题的现象和表现形式,比如服务器出现宕机、应用程序出现异常等,需要通过观察现象了解问题的大体情况。

2、收集信息:收集系统和应用程序的相关信息,比如系统日志、应用程序日志、进程信息、网络连接情况等。可以通过各种命令(比如top、ps、netstat等)和工具(比如syslog、dmesg、tcpdump等)来获取相关信息。

3、确定问题范围:根据收集的信息,确定问题的范围,比如是操作系统问题、应用程序问题、网络问题等,缩小问题的范围可以更快地定位问题。

4、分析问题原因:根据收集到的信息和确定的问题范围,分析问题的原因,可能是系统配置问题、软件漏洞、硬件故障等。

5、解决问题:找到问题的原因后,可以采取相应的措施来解决问题,比如修改配置、更新软件、修复硬件等。

6、预防问题:在解决问题的同时,也要思考如何预防类似问题的发生,比如增强系统的安全性、优化系统性能等。

主机层面的问题,可以使用工具排查:

CPU 相关问题,可以使用 top、vmstat、pidstat、ps 等工具排查;

内存相关问题,可以使用 free、top、ps、vmstat、cachestat、sar 等工具排查;

IO 相关问题,可以使用 lsof、iostat、pidstat、sar、iotop、df、du 等工具排查;

网络相关问题,可以使用 ifconfig、ip、nslookup、dig、ping、tcpdump、iptables 等工具排查。

分析问题的套路:

第一,分析问题一定是需要依据的,靠猜是猜不出来的,需要提前做好基础监控的建设。监控的话,需要在基础运维层、应用层、业务层等多个层次进行。定位问题的时候,我们同样需要参照多个监控层的指标表现综合分析。

第二,定位问题要先对原因进行大致分类,是CPU 相关问题还是内存相关问题、仅仅是接口的问题还是整个应用的问题,然后再去进一步细化探索,一定是从大到小来思考问题;在追查问题遇到瓶颈的时候,我们可以先退出细节,再从大的方面捋一下涉及的点,再重新来看问题。

第三,分析问题很多时候靠的是经验,很难找到完整的方法论。遇到重大问题的时候,往往也需要根据直觉来第一时间找到最有可能的点,这里甚至有运气成分。建议你在平时解决问题的时候多思考、多总结,提炼出更多自己分析问题的套路和拿手工具。

最后,值得一提的是,定位到问题原因后,我们要做好记录和复盘。每一次故障和问题都是宝贵的资源,复盘不仅仅是记录问题,更重要的是改进。复盘时,我们需要做到以下四点:记录完整的时间线、处理措施、上报流程等信息;分析问题的根本原因;给出短、中、长期改进方案,包括但不限于代码改动、流程,并记录跟踪每一个方案进行闭环;定期组织团队回顾过去的故障。

@匿名用户:

1、收集系统信息:首先要收集系统的基本信息,包括系统版本、硬件配置、系统日志等,以便于后续的分析。
2、分析系统日志:通过分析系统日志,可以找出系统出现问题的原因,从而找出解决问题的方法。
3、检查系统资源:检查系统的CPU、内存、磁盘空间等资源,以确定是否存在资源不足的情况。
4、检查系统进程:检查系统进程,以确定是否存在异常的进程,以及进程是否正常运行。
5、检查系统服务:检查系统服务,以确定是否存在异常的服务,以及服务是否正常运行。
6、检查系统配置:检查系统配置,以确定是否存在配置错误,以及配置是否正确。
7、检查系统网络:检查系统网络,以确定是否存在网络问题,以及网络是否正常运行。
8、检查系统安全:检查系统安全,以确定是否存在安全漏洞,以及系统是否安全。
  您怎么看?

欢迎来探讨

欢迎点击文末 阅读原文 到社区阅读和讨论交流,发表您的看法

觉得本文有用,请 转发 或点击 ,让更多同行看到

 资料/文章推荐:

  • Linux 系统性能优化思路和优化方法

  • Linux 系统巡检报告参考模板

  • Linux 系统加固规范 

欢迎关注社区以下   “系统运维”技术主题  ,将会不断更新优质资料、文章。地址:

http://www.talkwithtrend.com/Topic/112795

下载 twt 社区客户端 APP

长按识别二维码即可下载

或到应用商店搜索“twt”

长按二维码关注公众号

*本公众号所发布内容仅代表作者观点,不代表社区立场

版权:如无特殊注明,文章转载自网络,侵权请联系cnmhg168#163.com删除!文件均为网友上传,仅供研究和学习使用,务必24小时内删除。
相关推荐