运维分析问题方法和思路

简介: 运维分析问题方法和思路

这是写给初入运维小伙伴的,大佬们勿喷。许多初入运维的小伙伴在遇到问题时,会显得很慌乱,随便拿着少许报错,就上必应、百度等,在服务器上狂操作,既浪费了时间,又没有解决问题,本篇文章,可以和大家分享一下,小弟我是如何分析问题方法和思路。



从基础监控入手


遇到问题,最好花接近一分钟查查服务器基础环境,例如: cpu负载情况、内存情况、磁盘使用率、磁盘inode等、确定这些没问题后,再查询其他的服务。


这里举个小栗子:


本小学生刚毕业不久,还在一家小型游戏公司做运维,具体的业务是卡牌类休闲游戏,游戏架构是及其标准的微服务,各个服务之间使用我们自建的RabbitMQ进行通信,在某个午间遇到了问题,所有用户在登录成提示登录成功,但是卡在登录界面,进不去大厅。收到消息后,立即将跳板机权限下放到开发,然后查询了接近1个小时,终于弄清楚了,登录服在用户登录成功后,向mq发布了消息,而大厅服务器没收到! 最后发现,自建RabbitMQ那台机器磁盘满了导致MQ拒绝接收新请求,但是MQ进程还是存在的,于是乎手动清理部分日志后,问题得以恢复。


如上问题,映射出一个问题,良好的监控系统至关重要,若没有,请在发生问题后,手动确认基础环境是否有问题,有些问题明明5分钟就可以解决问题的,却闹了接近2个小时得以解决,最后还要背锅。哦,这家公司后来倒闭了。



基础监控命令


内存

free -h

使用如上命令,可以看到目前服务器内存情况,注意,在centos 7.*中需要关注的点为available而非free,例如

image.png


cpu负载

uptime

如上命令,请关注load average即可,三个值,分别是 1分钟负载 、 5分钟负载 、 15 分钟负载。

image.png


而该值,取决于cpu线程数,例如线程 ,最理想的负载情况应该是 16 * 0.8 = 12.8 ,超过该值,就应该去找下具体原因了。


cpu线程数可以使用cat /proc/cpuinfo | grep -c processor来看。

image.png


磁盘使用率

查看磁盘相关信息,可以使用df -hdf -i进行查询,前者查看磁盘使用率,而后者查询inode使用率。


这里再补充一个小点

在遇到磁盘满了的情况下,需要删除日志,请不要使用rm -f进行删除,请使用>将文件重定向空即可。




巧用日志查询


遇到问题后,在查询基础监控还是无法入手情况下,一定要查询下系统日志,目录在/var/log/,当你发现出问题后,监控系统查询那段时间,都没任何数据上报,记得查询一下message,查询下,是否是因为某些进程导致系统OOM了。


这里也举个例子:


也是刚毕业不久,开发在抱怨,测试服务器登录不上去了,于是乎,手动尝试后,发现也不行,再次期间登录云平台准备查询监控,而后在等待3分钟后,又可以登录了,在查询监控后发现有一段监控是“空白”的,而机器又没有被重启,当时第一反应是系统“宕机”了(因为再次之前,这个云账号下有机器陆续在“宕机”,每隔几分钟又好了)。于是乎联系云厂商进行分析查看,最后分析的结果是某个进程OOM了,而后在询问开发过程中,发现,有个程序大哥某段逻辑写错了,写成了死循环,既费cpu又耗内存,最后导致OOM了。


查询是否有进程oom

grep -i 'out of memory' message




最后才是应用日志


其实,在我遇到的绝大多数问题,都是我们自己的程序的Bug或者异常引起的,那么为什么要先查询基础服务和系统日志呢? 傻孩子,晒过谷子么,当看天不好的时候,都是先收自家谷子,确保自家谷子收完了,有空了再去隔壁帮忙收别家的谷子呀,我们定位问题也是类似的。


这个时候一般就要下放权限,或者提供相关日志给程序,请他们帮忙协助定位问题,这个就没有什么技巧提供了,关键是看项目架构理解程度了,顺着看日志会方便的多。



总结


是不是有发现,始终没有提及网络分析,有了网络原因,这个有点复杂,所以就不在本篇讨论范围之类。


各位可能发现了,运维在遇到问题的时候,一般而言都是从底层慢慢网上查询,而程序遇到问题后,一般都是以顶层根据报错,或者猜想,慢慢向下查询,总之,目的都是解决该问题。前者适用于已经发布数月或者数年的系统,因为逻辑基本上都跑过了,报错基本上是因为某些底层、中间件抛错引起的,而后者主要是查询一些刚发布不久或者是正在开发中的项目。报错大部分是代码引起的。


其实想写的东西很多,但是不知道如何下笔,问题的呈现也是各种各样,但是万变不离其宗,其实还有一点,让我思考很久的,与其到处救火,不如做好防范措施。该监控的监控,该写程序自动管理的,就写程序。


怎么样,好玩吧,快来动动小手指,额,今天这个这个好像动不了小手指,今天,你学废了么?




相关实践学习
RocketMQ一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
1月前
|
缓存 运维 安全
运维:推荐一款非常专业好用的磁盘空间分析神器TreeSize
【2月更文挑战第16篇】Optimizer 是一个多功能系统优化清理工具,它支持垃圾清理、注册表修复、启动项管理,关闭视窗系统中不需要的功能,帮您恢复您的隐私与增加您的安全性,建议在全新、干净的Windows安装之后进行优化,以实现最大的隐私性与安全性,根据您的Windows版本,Optimizer还允许您执行一些
运维:推荐一款非常专业好用的磁盘空间分析神器TreeSize
|
11月前
|
运维 网络架构
《企业运维之云上网络原理与实践》——第五章 云上网络互连——配套实验:通过现网的配置分析当前 CEN TR 的组网拓扑(1)
《企业运维之云上网络原理与实践》——第五章 云上网络互连——配套实验:通过现网的配置分析当前 CEN TR 的组网拓扑(1)
87 0
|
11月前
|
运维
《企业运维之云上网络原理与实践》——第五章 云上网络互连——配套实验:通过现网的配置分析当前 CEN TR 的组网拓扑(2)
《企业运维之云上网络原理与实践》——第五章 云上网络互连——配套实验:通过现网的配置分析当前 CEN TR 的组网拓扑(2)
78 0
|
11月前
|
弹性计算 运维
《企业运维之云上网络原理与实践》——第五章 云上网络互连——配套实验:通过现网的配置分析当前 CEN TR 的组网拓扑(3)
《企业运维之云上网络原理与实践》——第五章 云上网络互连——配套实验:通过现网的配置分析当前 CEN TR 的组网拓扑(3)
69 0
|
SQL 缓存 运维
【大数据开发运维解决方案】GoldenGate replicat进程延迟分析步骤
GoldenGate几乎支持市面上流行的所有主流的操作系统平台和数据库。 博主所在单位目前使用Oracle GoldenGate将各个业务生产库汇聚到一起做数仓***实时ODS平台***, 我们采用异构同步,即源端同步过来的表在ODS新增了一个etltime字段,用来记录当前数据变更时间。 为了记录数据的事务变更历史记录,我们将数据的变更记录映射同步到一张tab_name_audit表中。为了防止源端业务库误删数据,我们将被删除的数据映射同步到一张tab_name_his表中。原表映射到ods后还是正常的映射同步dml操作。
【大数据开发运维解决方案】GoldenGate replicat进程延迟分析步骤
|
运维
《智能运维里的时间序列:异常检测、根源分析、预测》电子版地址
智能运维里的时间序列:异常检测、根源分析、预测
186 0
《智能运维里的时间序列:异常检测、根源分析、预测》电子版地址
|
运维 监控 搜索推荐
阿里云林小平:如何实现资源高效运维及成本分析
通过标签功能进行资源运维及精细化的权限管理,实现高效能、低成本的目标。
阿里云林小平:如何实现资源高效运维及成本分析
|
弹性计算 运维 网络架构
企业运维训练营之云上网络原理与实践 — 第五讲配套实验:通过现网的配置分析当前CEN TR的组网拓扑
1、了解和熟悉云企业网TR的基本操作; 2、理解云企业网关联转发和路由学习原理; 3、学会如何打通云上多个VPC之间网络以及云内网元之间配置。
企业运维训练营之云上网络原理与实践 — 第五讲配套实验:通过现网的配置分析当前CEN TR的组网拓扑
|
运维 监控 Oracle
XX电网运维业务系统用户体验分析平台案例|华汇数据
能够从最终用户角度来评价业务系统运行质量和用户体验状况,促进IT运维质量不断提高。 通过对用户行为和体验障碍的监控,确保在用户报告之前知晓问题,并帮助运维人员快速确认、诊断和定位问题,加快问题解决速度,提升用户满意度。
396 0
XX电网运维业务系统用户体验分析平台案例|华汇数据
|
SQL 监控 安全
从运维的角度分析使用阿里云数据库RDS的必要性--你不应该在阿里云上使用自建的MySQL/SQL Server/Oracle/PostgreSQL数据库
开宗明义,你不应该在阿里云上使用自建的MySQL or SQL Server数据库,对了,还有Oracle or PostgreSQL数据库。 云数据库 RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务。
4750 0