那些年让我们痛不欲生的故障

发布于 2024-10-05  198 次阅读


1. 排障

分类详细信息
系统类故障负载高,涉及 cpu、内存、磁盘等方面问题。
HTTP 状态码根据不同的状态码进行分析排查。
网络故障网站访问慢。
具体服务与环境

1.1. 系统类故障排查与解决

首先,通过监控系统发现故障后,立即使用堡垒机连接进行检查,借助 “w” 和 “top” 命令判断是否为误报。接着,根据提示定位问题,利用 “top” 命令、“ps aux” 和 “iotop” 命令确定导致问题的进程。然后,从进程进一步定位到服务,主要通过查看日志进行排查。


对于不同类型的可能故障服务,有特定的分析方法。对于 Java 应用(如 jar 文件、Tomcat),可以使用日志以及 “jps”“jstack”“jmap” 和 “mat” 工具进行详细分析。对于 ngx 和 php 服务,需要查看日志、访问日志和错误日志,并关注访问量。对于数据库服务,进入数据库使用 “show processlist\G” 查看,同时检查慢查询和慢查询日志,并将结果发送给开发人员或数据库管理员(DBA)进行检查优化。

● 整体流程: 
● 通过监控得知有故障. 
● 堡垒机连接,检查是否误报. w,top. 
● 根据提示,定位问题,定位导致问题的进程. 
  ○ top命令,ps aux 
  ○ iotop命令 
● 进程-->服务 
● 具体排查服务,一般看日志. 
● jps,jstack,jmap 
● mat工具
● 磁盘使用率
可能故障的服务分析
java 应用(jar,tomcat)通过查看日志、使用 jps(查看 Java 进程)、jstack(查看 Java 线程栈)、jmap(生成堆转储快照)、mat(内存分析工具)等方式进行分析。
ngx,php查看日志(包括访问日志和错误日志),分析访问量以确定故障原因。
数据库进入数据库执行show processlist \G查看当前数据库连接状态,分析慢查询以及慢查询日志,并发送给开发人员或数据库管理员(DBA)进行检查优化。

2. 状态码

目标: 
1️⃣熟练掌握每个状态码及含义 
2️⃣状态码排查基本流程 
3️⃣自己模拟每一个
分类
2Xx一切正常 ok
3XX正常 , 跳转
4Xx故障,用户
5xx故障,服务器
状态码描述
200ok
301永久
302临时
304浏览器缓存
401认证问题
403forbidden 权限拒绝,原因可能为:1.没有权限;2.首页文件不存在
404not found 找不到
413上传内容过大
500Internal Error 内部错误,可能原因有服务器配置问题(如 selinux、php 插件没有安装等)
502Bad Gateway 网关错误(如 lnmp/lnmt/负载均衡 nginx 向后抛请求,后面没有响应)
503网站临时不可用
504Gateway Timeout 连接超时(可能由负载、网络连接问题引起)

2.1. 排错流程 🌟🌟🌟🌟🌟

  1. nginx处理用户请求流程.(哪个虚拟主机再处理请求,是否经过调整(return,rewrite) ,是否有location 规则
    https://www.processon.com/view/link/60aefce8f346fb715d52b6a9
  2. 访问页面查看状态(浏览器F12,通过命令行curl/wget)
  3. 通过日志(访问日志,错误日志)

2.2. 访问网站慢排查全流程

● 某个还是一堆用户
  ○ 某个用户,ping,telnet,tracert ,浏览器F12功能. 可能线路问题,CDN没有加速.
  ○ 一堆用户
    ■ 根据用户访问网站流程排查分析
    ■ DNS解析
    ■ CDN流量,带宽,命中率.
    ■ 负载
    ■ web
    ■ 数据库
    ■ 存储
    ■ 额外手段,F12功能,服务端抓包.

3. 网络

排查命令作用
ping测试网络连接的可达性。
tracert/traceroute路由追踪命令,确定数据包从源主机到目标主机所经过的网络路径。
mtr实时更新的路由追踪命令,结合 traceroute 和 ping 的功能持续监测网络路径上的性能。
arp检查 ARP 缓存信息。
dig/host(linux)用于检查 DNS 解析是否正常(Linux 系统)。
nslookup(linux/win)用于检查 DNS 解析是否正常(Linux 和 Windows 系统)。
iftop/nethogs/nstat/ifstat查看网卡流量信息及情况。
● 通过各种命令排查 
  ○ 线路问题 
  ○ dns问题 
● 公司内网 
  ○ 排除法

4. 用户访问网站与故障

4.1. 概述

DNS解析
tcp/ip 3次握手
http 请求豹纹
网站架构处理
http 响应豹纹
tcp/ip 4次挥手

4.2. 详细过程

● DNS解析流程-CDN请求过程-WAF防火墙 
● tcp/ip 3次握手 
● http 请求豹纹 
● 网站架构处理 
● http 响应豹纹 
● tcp/ip 4次挥手

4.3. D N S解析流程-CD N请求过程- WAF防火墙

● DNS : 厂商, dns解析命令 
● CDN问题: :
  ○ 浏览器访问 检查是否经过CDN 
  ○ 管理页面:CDN命中率90%以上 
  ○ 检查cdn日志. 
● WAF 
● 建立监控: 71ce 监控宝

4.4. tcp / ip 3次握手

网站连接 情况 tcp连接情况 (监控)

4.5. 网站架构处理

云盾(态势感知)
负载均衡
web服务器(php,tomcat,nginx)
数据库
redis
存储
备份
....

通用: 遇到故障后,检查日志(没有日志输出日志, 日志不详细调整日志级别 debug )

1 ) 负载均衡

● 绕过负载直接访问后端节点. 
● 配合负载,web访问日志,错误日志
● 抓包查看(tcpdump 抓包并保存, 通过wireshark查看)

2 ) web

● nginx 
● php 
● tomcat 
● nginx处理用户请求过程 
● tomcat 虚拟主机配置 
● 配置nginx,tomcat,php日志 
● nginx access.log error.log 
● tomcat catalina.out 
● php 
  ○ php-fpm php-fpm.log php-fpm.conf 
  ○ php 默认关闭输出到文件
root@web01 ~]# egrep '^log_errors |^error_log' /etc/php.ini
log_errors = On
error_log = /var/log/php_errors.log

3 ) 数据库

用户/数据库
数据库启动: 配合数据库日志 mariadb.log

4 ) 存储,备份. . . .

配置,日志
/var/log/messages /var/log/secure

5 )小结

核心配合故障提示
配合日志: 关键词汇,词汇附近进行翻译
辅助手段: 抓包(tcpdump,wireshark)

4.6. zabbix

● lnmp 
● zabbix-server zabbix-agent 
● 排错流程: 
  ○ 前端报错: 404 500502 .... nginx ,php mysql 日志 
  ○ 前端报错: 键值,监控项...........没有数据 .... 
    ■ 服务端,客户端日志 
    ■ zabbix_get 
● 多个组件排查流程 
● 通过故障提示,检查是大致哪个部分导致? 
● 通过每个部分对应排错流程,排查 
● 遇到故障,解决故障,总结故障

届ける言葉を今は育ててる
最后更新于 2024-10-05