1. 明确要监控的指标:CPU、内存、磁盘IO、网络带宽/包速率、连接数(established/SYN)、应用响应时间、错误率、安全事件(异常登录/端口扫描)。
• 建议先跑 24-72 小时基线测试:使用工具(stress-ng, iperf3, siege)模拟负载并记录典型值。
• 把基线写入文档,作为阈值与告警参考。
2. Linux:在每台服务器上安装 node_exporter(下载二进制或用 systemd)。命令示例:wget https://github.com/prometheus/node_exporter/releases && tar xzf && sudo cp node_exporter /usr/local/bin && systemctl enable --now node_exporter.service。
• 在 Prometheus 的 scrape_configs 中加入目标:job_name: 'nodes' static_configs: - targets: ['ip:9100']。
• Windows:安装 windows_exporter,注册为服务并配置 metrics。
3. 为 Nginx/Apache/数据库安装专用 exporter(nginx-vts-exporter、mysqld_exporter)。
• 对业务应用埋点:在代码中添加 Prometheus client 库(如 Python、Java)统计请求时延、QPS、错误率并暴露 /metrics。
• 若短连接或无端口暴露,使用 Pushgateway 推送临时指标。
4. 在 Grafana 中添加 Prometheus 数据源并导入现成仪表盘(Node Exporter Full, Nginx Overview)。
• 创建自定义面板:流量峰值、五分钟连接数、SYN/秒、丢包率和应用 P95/P99 响应时间。
• 配置每个面板的阈值颜色与说明,便于值异常时迅速定位。
5. 在 Prometheus 写 alerting 规则:例如 high_cpu: expr: avg by(instance) (rate(node_cpu_seconds_total{mode!="idle"}[5m])) > 0.9 for: 5m。
• 配置 Alertmanager 路由:优先级、抑制规则、重复间隔,并接入邮件/钉钉/企业微信/Slack/Webhook。
• 编写告警流程文档(谁接收、谁执行、恢复标准)。
6. 部署 Suricata 做网络层入侵检测,配置镜像流量或端口 span:sudo apt install suricata && 编辑 /etc/suricata/suricata.yaml 指向正确网卡。
• 使用 Filebeat 将 /var/log/suricata/eve.json 推送到 Elasticsearch 或 Logstash,便于搜索和告警。
• 设置规则关注 SYN flood、异常端口扫描、异常 GeoIP 源IP。
7. 在高流量事件时进行抓包:sudo tcpdump -i eth0 -s 0 -w /tmp/ddos.pcap 'tcp' 并上传到分析机。
• 使用 tshark 或 Wireshark 过滤 SYN/ACK/重传,统计五元组频率。
• 部署 ntopng 做实时流量统计,快速识别“猛流量”源。
8. 检查 conntrack 限额:sysctl net.netfilter.nf_conntrack_max,必要时调大并监控 nf_conntrack_count。
• 开启 SYN cookies 与 TCP 参数:sysctl -w net.ipv4.tcp_syncookies=1;调整 tcp_max_syn_backlog、tcp_fin_timeout。
• 使用 iptables/nftables 限速:iptables -A INPUT -p tcp --syn -m limit --limit 10/s --limit-burst 20 -j ACCEPT,结合 fail2ban 做自动封禁策略。
9. 部署 Filebeat/Fluentd 收集系统日志、应用日志、WAF 日志,输入到 Elasticsearch 或 ClickHouse 做长期检索。
• 建议保留重要日志 90 天,索引优化每天一次;建立只读审计副本与权限控制。
10. 问:如何验证监控与告警在遭遇攻击时能正常工作?
答:在非高峰时段做演练流量(使用 iperf3/masscan 或合法压力测试工具),逐步提升流量到预设阈值,确认 Prometheus 采集指标、Grafana 面板更新、Alertmanager 发出告警并能触发预置 webhook 与值班电话链。同时验证 Runbook 中的恢复步骤是否可执行。
11. 问:遭遇大流量 DDoS 时第一步应该做什么?
答:立即触发已定义的应急流程:1) 切换到高防商提供的清洗线路或接入上游 CDN/清洗服务;2) 开启速率限制与黑名单规则(按源 IP、ASN、端口);3) 启动抓包保存证据并通知运营商与安全团队;4) 在监控面板持续观察清洗效果并记录恢复时间。
12. 问:如何长期保证监控方案有效且可扩展?
答:定期(季度)回顾监控规则与阈值、清理无用指标、扩容 Prometheus/Alertmanager 集群或使用远程存储(Thanos/Cortex)。同时保持告警抑制与分级、做定期演练、并把监控与变更管理(CMDB)绑定,确保新上服务自动加入监控。