1.
准备与职责分配
- 明确团队角色:运维(网关/防火墙/交换机)、安全(流量分析/封堵)、网络工程(BGP/路由)、开发(应用恢复);
- 建立值班表与联系方式:电话、企业微信、PagerDuty/钉钉机器人;
- 准备工具清单:ssh钥匙、远程控制台(IPMI/DRAC)、流量抓包工具(tcpdump)、日志提取脚本。
2.
基础环境与冗余架构
- 网络冗余:至少两个上游ISP或Anycast节点;启用BGP多出口并配置短TTL DNS+备用CNAME;
- 主机冗余:关键服务使用双活或热备(Keepalived + VRRP),数据库主从或Paxos;
- 高防链路:确认20G高防带宽策略(清洗阈值、黑洞策略、按源阈值限速)。
3.
故障检测与初步确认
- 步骤1:接收到告警(带宽/连通性/应用响应);
- 步骤2:使用MTR/traceroute/ping定位是否为链路或上游问题;
- 步骤3:在边缘采样tcpdump(示例:tcpdump -n -s0 -w /tmp/flow.pcap 'tcp or udp'),观察源IP分布与SYN比例。
4.
日志集中与采集配置
- 部署Filebeat/Fluentd/NXLog采集系统日志与nginx/access日志,配置输出到Elasticsearch或Loki;
- 配置rsyslog/syslog-ng,将内核、防火墙(iptables/ufw)与应用日志统一转发;
- 示例Filebeat配置:paths: ['/var/log/nginx/*.log'],output.elasticsearch.hosts: ['es:9200']。
5.
日志解析与索引设计
- 设计索引模板:按天索引,字段有timestamp, src_ip, dst_ip, dst_port, protocol, http_status, uri;
- 建立Logstash或ingest pipeline:解析nginx格式、提取X-Forwarded-For;添加geoip与threat intel enrichment;
- 设置日志保留策略:活跃7天,冷存90天,归档S3/OSS。
6.
实时监控与告警规则
- 基础监控:使用Prometheus采集接口QPS、带宽、连接数、cpu/mem;
- 告警示例:带宽利用率>80%并且连接数急增(5分钟内增长>200%)触发高优先级告警;
- 告警通道:短信+企业微信+PagerDuty,且每次告警附带诊断指令集(如抓包命令、top输出)。
7.
自动化脚本与快速响应命令
- 常用脚本:一键抓包(示例:/usr/local/bin/quickcap.sh),自动转储到NFS;
- 限流与黑名单脚本:基于ipset + nftables批量拉黑高频源,示例命令:ipset create blacklist hash:ip && nft add rule inet filter input ip saddr @blacklist drop;
- 发布脚本存放在版本管理(git),并加签名与审核。
8.
故障处置流程(DDoS流量突增)
- 步骤A(分钟内):识别是否为DDoS(大量不同源或SYN洪泛),启用高防厂商清洗,临时提升清洗策略;
- 步骤B(10-30分钟):按风险分级采取措施:对高危端口做ACL、对可被替代服务做降级,降低公网暴露面;
- 步骤C(30分钟+):如果清洗不足,考虑临时BGP流量转移到清洗中心或与ISP协商黑洞+分流。
9.
故障处置流程(链路或BGP异常)
- 快速确认:使用外部监测点或第三方(RIPE Atlas)验证是否在ISP侧;
- 切换流程:触发BGP备用线路(预设community或MED),必要时通过API触发DNS短TTL切换;
- 恢复后:立即回滚并记录BGP变更,保存路由表(-n show ip bgp)以便追踪。
10.
应用层恢复与回滚策略
- 回滚优先级:先恢复核心写入路径(数据库),再恢复缓存与CDN;
- 灰度发布/回滚:使用蓝绿或canary减少一次性流量冲击;
- 数据一致性:恢复前检查binlog/replication status,必要时人工补数据。
11.
演练、审计与事后分析
- 定期演练:每季度至少一次全流程演练(流量注入、清洗、BGP切换、日志拉取),记录RTO/RPO;
- 事后分析:生成事件时间线、根因、改进清单并在一周内完成P0整改;
- 审计日志:保留操作审计(sudo、git操作记录、告警确认人)。
12.
日志保存与法律合规
- 保存周期按法规与公司策略设定,敏感信息脱敏与访问控制;
- 备份策略:Elasticsearch快照到对象存储每日一次,且异地存储;
- 取证准备:若涉及攻击取证,按法务指引封存原始pcap与系统镜像。
13.
示例监控与Alertmanager配置片段
- Prometheus规则示例:- alert: HighBandwidth\n expr: sum(rate(interface_bytes_total[1m])) by (instance) > 0.8 * interface_speed\n for: 2m\n labels: {severity: critical};
- Alertmanager:配置抑制规则,避免噪声告警;并设置自动恢复后推送“已恢复”通知。
14.
常用命令与脚本片段
- tcpdump抓包:tcpdump -n -s0 -c 100000 -w /tmp/flow.pcap 'port 80 or port 443';
- ipset更新脚本:for ip in $(cat bad_ips.txt); do ipset add blacklist $ip; done;并结合cron每5分钟拉取intel。
15.
Q1:当20G高防仍然无法完全清洗时,我该如何快速恢复业务?
问:当20G高防仍然无法完全清洗时,我该如何快速恢复业务?
答:先按优先级降级非关键服务,启用应用层缓存和CDN静态化;立即与ISP/清洗厂商协同使用BGP转发至更大规模清洗中心或黑洞分流,使用短TTL DNS+备用域名将重要流量导向健康节点;同时基于ipset短期拉黑高频源并调整防火墙规则减少无效连接。
16.
Q2:日志量骤增导致Elastic集群压力巨大,如何应对?
问:日志量骤增导致Elastic集群压力巨大,如何应对?
答:立即启用写入限流(在Filebeat/Logstash端做采样),把非关键日志转为仅头信息或摘要,增加索引滚动频率并将老旧索引转冷存;如果可行,临时扩容ES节点或将流量切分到备用集群以保证查询和告警的可用性。
17.
Q3:如何保证应急预案长期有效并能在真实故障中落地?
问:如何保证应急预案长期有效并能在真实故障中落地?
答:定期(至少季度)演练并记录RTO/RPO,演练后按优先级修正预案与脚本;将关键操作自动化并放入版本控制,确保每次变更都通过审核与回归测试;建立事后复盘机制,将演练与真实事件的经验固化为Runbook并培训到岗。
来源:香港20g高防服务器故障应急预案与日志监控最佳实践