故障恢复指恢复业务连续性的应急操作,很多故障是在不断尝试验证解决恢复的动作,所以故障恢复环节与故障定位环节有一定的交叠,或在这两个环节之间不断试错的循环,即故障恢复操作可能和故障诊断是同时,也可能是诊断之后或诊断之前 1.已知预案下的恢复三把斧 在故障管理过程中,通常大部分故障有一些明确的故障恢复预案,比如基础设施、服务器、网络设备、网络线路,以及应用系统层中关于服务可用性等故障因素,以及基于历史故障经验积累的方案。 以一个复杂故障应急场景中,很多时候故障处置的决策人员通常一方面协调人员现场分析问题,另一方面指挥启动已知预案的应急。 、数据完整性的故障恢复,这些故障恢复通常需要现场临时决断恢复。 结束 注:“3.4 事中处置”另外3个环节内容链接: 1.故障发现、故障响应 2.故障定位
故障定位指诊断故障直接原因或根因,故障定位有助于故障恢复动作更加有效。故障定位通常是整个故障过程中耗时最长的环节,定位的目标围绕在快速恢复的基础上,而非寻找问题根因,后者由问题管理负责。 3)测试复现 复杂系统的故障定位必然是一个跨团队协同的过程,测试复现是一个协同定位的解决方案。从岗位看,测试与bug打交道的机会最多,对于逻辑、数据引发的故障更敏感。 对于多个监控告警进行告警事件的收敛管理,基于CMDB关系数据进行初步的定位。 利用监控数据与AIOps算法,构建智能化的故障定位场景应用,增加故障定位的能力。 消费&落地关系数据库、内存数据库、日志数据,与关系/链路的配置数据多维关联,形成评价系统是否“健康”的多维度指标 5)知识管理 知识管理是一个大家都知道应该要做,但大部分都没做好的事情。 比如,运维知识图谱能赋能故障的决策,将运维知识图谱融入到运维应急工具中,可以将运维人员的故障定位决策过程数字化,构建决策支持知识图谱,借助机器对海量定位决策操作行为进行穷举式遍历。
在面对故障的时候,我也有类似的感觉:不怕出故障,就怕你不知道故障的原因,故障却隔三差五的找上门来。 在继续定位故障原因前,我们先通过「man brk」来查询一下它的含义: brk() sets the end of the data segment to the value specified by 0x1d9a000 <0.000067> brk(0x1dda000) = 0x1dda000 <0.001134> brk(0x1e1a000) = 0x1e1a000 <0.000065> brk(0x1e5a000 ) = 0x1e5a000 <0.012396> brk(0x1e9a000) = 0x1e9a000 <0.000092> 通过「grep」我们很方便就能获取相关的上下文,反复运行几次,发现每当请求某些 3119 24 total 显而易见,「brk」已经不见了,取而代之的是「recvfrom」和「accept」,不过这些操作本来就是很耗时的,所以可以定位
一 OSPF邻居down故障原因 本类故障的常见原因主要包括: BFD故障; 对端设备故障; CPU利用率过高; 链路故障; 接口没有Up; 两端IP地址不在同一网段; RouterID配置冲突; 两端区域类型配置不一致; 两端OSPF参数配置不一致; 二 故障定位步骤 1、通过日志查看OSPF邻居Down的原因 执行display logbuffer size Kill Neighbor(NbrEvent=5) 表示接口Down或BFD Down。 2、检查链路是否故障 请执行ping命令和在接口视图下执行display this interface命令,检查设备链路是否故障(包括传输设备故障)。如果链路正常,请执行步骤3。 5、检查两端IP地址是否在同一网段 请执行display interface interface-type [ interface-number ]命令查看两端接口的IP地址。
前面发的Observability的文章,引起了不少的共鸣,在群里或私聊时很多朋友提到一个点: 故障处理时,运维的逻辑是快速恢复,所以根因是什么不重要,但是不知道根因发生的位置在哪儿,怎么做应急处置呢 这是个非常好的问题,这里我们就要区分两个经常挂在嘴边,但是确很少有人去能理解透彻的概念:定界和定位。 我们讲故障时可以不用定位,指的是在故障时,不用去定位故障原因是什么,但是不能不做定界。 重要的事情讲三遍: 定界和定位是两回事。 定界和定位是两回事。 定界和定位是两回事。 定界不做,那接下来的恢复就无从谈起了。 举个简单的场景案例: 当一次故障发生,业务指标受影响,硬件层面、网络层面、数据库层面,分布式组件层面、存储层面、应用层面,可能都会有告警。 所以,定界的能力,其实比定位更重要,定界必须要高效,定位在绝大多数情况下是可以在事后做的。 一定一定要区分开看,不能混为一谈。
来自:数据中心运维管理 网络故障排除对于网络技术专家和网络工程师是颇具挑战的工作。每当添加新的设备或网络发生变更时,新的问题就会出现,而且很难确定问题出在哪里。 每一位网络工程师或专家都有自己的经验和必备工具,能让他们快速定位网络故障。以下的这些工具,是否是你的工具箱中的选项。 1. Nmap Nmap是开源工具,它被称作网络故障排除的“瑞士军刀”。 5. TRACERT和Traceroute 对于任何网络团队而言,TRACERT和Traceroute都是重要的工具。他们可以深入了解数据采用的路径以及中间主机的响应时间。 Batfish 强烈建议你将网络配置分析添加到故障排除工具包中。 更好的是,可以使用Batfish或类似的验证工具来确保网络故障不会发生。 15. Fiddler 当考虑网络故障工具时,现在可用的SaaS很多。
一 BGP邻居无法建立故障原因 本类故障的常见原因主要包括: BGP报文转发不通 ACL过滤了TCP的179端口 邻居的Router ID冲突 配置的邻居的AS号错误 用Loopback 用Loopback口建立EBGP邻居未配置peer ebgp-max-hop peer valid-ttl-hops配置错误 对端配置了peer ignore 两端的地址族不匹配 二 故障定位步骤 如果不能Ping通,请处理Ping不通问题排除链路传输的故障问题。 2、检查是否配置ACL禁止TCP的179端口 在两端执行display acl all命令查看是否禁止TCP的179端口。 如果AS号配置没有错误,请执行步骤5。 5、检查BGP配置是否影响邻居建立 通过display current-configuration configuration bgp查看BGP的配置,进行如配置检查。
Wireshark 就像网络世界的显微镜,我们可以在它的帮助下了解网络中发生的一切。
我们基本上都会从以下步骤入手,这些也是绝大多数运维工程师在定位故障时前几分钟的主要排查点: 一、尽可能搞清楚问题的前因后果 不要一下子就扎到服务器前面,你需要先搞明白对这台服务器有多少已知的情况, 还有故障的具体情况。 必须搞清楚的问题有: 故障的表现是什么?无响应?报错? 故障是什么时候发现的? 故障是否可重现? 关注那些明显的问题,比如在一个典型的LAMP(Linux+Apache+Mysql+Perl)应用环境里: Apache & Nginx; 查找访问和错误日志, 直接找 5xx 错误, 再看看是否有 limit_zone 结论 经过这5分钟之后,你应该对如下情况比较清楚了: 在服务器上运行的都是些啥? 这个故障看起来是和 IO/硬件/网络 或者 系统配置 (有问题的代码、系统内核调优, …)相关。
在日常的计算机使用过程中,硬件故障是无法避免的问题。但如何快速、准确地定位到问题所在,是每个技术爱好者和专业人士都应该掌握的技能。 引言 硬件是计算机的基础,但随着时间的流逝和使用的增加,硬件的老化和故障是不可避免的。对于IT从业者和技术爱好者来说,快速、准确地定位硬件故障,不仅可以节省时间,还可以避免不必要的损失。 正文 1. 常见的硬件故障及其原因 1.1 硬盘故障 老化:长时间使用导致的性能下降。 物理损坏:如摔打、高温等。 软件冲突:如病毒、恶意软件或者软件冲突导致的硬盘故障。 3.3 选择合适的替换部件 当某个硬件部分确实出现故障时,选择合适的替换部件是关键。 总结 硬件故障是计算机使用过程中的常见问题,但通过正确的诊断和处理方法,我们可以快速解决问题,确保计算机的正常运行。希望这篇文章能帮助大家在面对硬件故障时,有更多的自信和方法。
在下面的描述中,ZK指的是zookeeper,Watch丢通知故障简称为丢消息,因个人水平的原因,文章中定位出的原因,未必是真实的原因,仅供参考。 image.png 故障现象 用户在客户端执行一些配置更新后,经常反馈计算节点的配置没有更新成功,还在跑着旧版本。 定位过程 首先简单介绍代码。 针对这个故障,考虑到在网络故障的短暂时间内存在丢消息的可能,因此解决方案比较直接: func (m *McAgent) HandleEvent(ev zk.Event) { switch 从故障Agent的日志看,没有任何异常,也没有任何ZK连接变化相关的日志信息。去ZK节点上捞取日志,通过一系列检索过程,发现了故障场景的共性。
2 收集日志信息 当设备出现故障时,收集设备日志信息,有助于用户了解设备运行过程中发生的情况,定位故障点。 日志信息主要记录用户操作、系统故障、系统安全等信息,包括用户日志和诊断日志。
cache 优化: 改造业务,避免每次请求都查dns,比如 java 设置 networkaddress.cache.ttl ; 部署 NodeLocal DNS 作为本地 DNS 缓存 常见故障定位 通过 docker 或 crictl 查看容器 id 对应的进程号; 使用 nsenter –n --target 进入容器进程的 netns; 使用宿主机上的抓包工具进行抓包 (tcpdump) 5、 controller-manager 异常; CNI 网络错误; 程序启动慢被存活检查 kill; 7、Pod 发生 Crash; 可能原因: cgroup OOM / 系统 OOM ; DNS 故障导致解析失败 端口区间 (30000-32768); 外部服务防火墙没有放开容器网段 (如 CDB、自建 DNS); DNS 异常; 高负载; 进程没有监听端口; 12、节点状态异常; 可能原因: 节点高负载; 磁盘故障 超时后 kubectl 继续重 试,造成 5s 延时现象; 解决方案: 换基础镜像,不用 alpine; 挂载 nsswitch.conf 文件 (hostPath或configMap);
作者:vivo 互联网服务器团队- Liu Xin、Yu Dan本文基于故障定位项目的实践,围绕根因定位算法的原理进行展开介绍。 如果使用故障定位平台,只需从vivo的paas平台上进入故障定位首页,找到故障服务和故障时间,剩下的事情就交给系统完成。 下图是调用链告警示例:调用链是vivo服务级监控的重要手段,上图红框内原因链接是故障定位平台提供的根因定位能力。 2.3 分析效果通过以上两种方式进入故障定位平台后,首先看到的是故障现场,下图表示服务A的平均响应时间突增。 所以异常波动是红线以上的时间线,如下图:(4)时间点标记:红线与时间线第一次相交的时间点是波动开始时间,红线与时间线最后一次相交的时间点是波动结束时间,起始时间和波动结束时间关于波动开始时间对称,如下图:(5)
故障类型 ---- 线上的jvm故障基本可以分为两大类: CPU____占用过高。 内存问题,通常可以理解为gc的问题,因为java的内存用gc进行管理。 故障排查兵器谱 ---- 命令行工具 jps等工具都是对tools.jar类的包装,使用起来方便简单.在下边的故障排查中会用到我们这里提到的工具,大家平时应该熟记于心. top: top命令用于实时显示 1. top命令定位到cpu消耗最高的进程,并记住进程pid 通过 top -Hp pid 找到问题线程,记住线程 tid 2. 一天一次左右gc超过5秒,说明系统内存过大,如果YGC频率过高,说明Eden区过小,可以增加Eden去。 ,从而定位代码。
主要是不符合产品的需求逻辑,可能会影响用户体验 线上故障:这个阶段是最严重的,对公司的收益、用户体验都会造成影响,主要为服务不可用等 在本文的示例中,我们针对的第三个阶段,即线上故障进行定位和分析的一种方式 ,希望借助本文,能够对你的故障定位能力有一定的帮助。 3 == 1: use of reserved bit detected * bit 4 == 1: fault was an instruction fetch * bit 5 1 << 1, X86_PF_USER = 1 << 2, X86_PF_RSVD = 1 << 3, X86_PF_INSTR = 1 << 4, X86_PF_PK = 1 << 5, 原因基本确定,现在我们开始定位问题。
如果我们有一套好的分析工具,那将是事半功倍,能够帮助大家快速定位问题,节省大家很多时间做更深入的事情。 2. 说明 本篇文章主要介绍各种问题定位的工具以及会结合案例分析问题。 3. 如果大量时间花在CPU上,对CPU的剖析能够迅速解释原因;如果系统时间大量处于off-cpu状态,定位问题就会费时很多。 Load Average 就是一段时间(1分钟、5分钟、15分钟)内平均Load。 8.2 分析工具 ? kernel-debuginfo-2.6.18-308.el5.x86_64.rpm kernel-devel-2.6.18-308.el5.x86_64.rpm kernel-debuginfo-common 9.6 性能回退-红蓝差分火焰图 你能快速定位CPU性能回退的问题么? 如果你的工作环境非常复杂且变化快速,那么使用现有的工具是来定位这类问题是很具有挑战性的。
今天我们先来和大家说一下appium,上一次说到了定位,不知道大家定位的怎么样了,今天来说如何定位xpath,五分钟即可学会: 例1: 现在我想定位下面这个登录按钮: xpath该怎么写呢? 先不管三七二十几,先写//,然后找你要定位元素最近的可以直接定位到的元素,我们看到home属性是content-desc: 所以我们就可以根据content-desc这个属性直接定位到上图红色home那里这些属性都在这个 WebView下面,所以继续: //adnroid.webkit.WebView[@content-desc='home']/ 接下来是一个View,然后他下面的第二个View就是我们要定位的 //android.webkit.WebView [@content-desc='home']/android.view.View/android.view.View[2] 这样就可以定位到了,有两点说明 第一:xpath的索引从1开始,不是从0开始哦 再举个例子: 定位方框里的: 先写上//,然后看home那行,知道要这样写: //android.webkit.WebView[@content-desc='home'] 接着看到定位的View在ListView
route(旧版):route -nip route(新版):ip route show 5. 检查 DNS 解析使用 nslookup 或 dig 命令检查域名解析是否正常。 使用网络管理工具使用网络管理工具如 Nagios、Zabbix 等,进行更全面的网络监控和故障排除。
接口出方向有突发流量导致丢包的组网示意图 二 故障现象 设备上产生QOS/4/hwXQoSPacketsDropInterfaceAlarm_active的告警信息,提示Eth-Trunk的两个成员接口均有丢包 三 故障分析 1、任意视图下执行命令display interface interface-type interface-number查看Eth-Trunk接口及两个成员接口的丢包情况和出方向的带宽利用率 Wireshark工具流量监测图 四 解决方案 类似这种小流量过载不能通过设备的流量统计实时观察到,由于接口的流量统计峰值是5分钟内的平均值,所以这种情况下接口的流量统计结果不会达到或超过接口带宽的峰值速率