目标:为香港云主机与美国云服务器建立统一的监控与备份体系,实现可观测性、告警及时性与跨区恢复能力。
前置条件:两地具备公网互通或专线/VPN,具备管理账户(SSH/控制台)、允许安装Agent,已规划备份存储(如S3或各云对象存储)。
结果要求:Prometheus/Grafana或云兼容监控可见两地指标,备份可在任一区域恢复且定期演练。
步骤1:列出所有实例(IP、用途、操作系统、磁盘、应用端口)。
步骤2:配置安全组/ACL:开放监控端口(Prometheus pull需目标开9090/metrics或node_exporter 9100)、备份端口(SSH 22或对象存储https)。
步骤3:建立管理VPC/VPN或SSH跳板主机,强制使用密钥或MFA,配置堡垒机审计。
推荐架构:集中Prometheus(可在香港或美国部署主实例+远程遥测),node_exporter/blackbox_exporter部署在各实例,Alertmanager集中告警,Grafana做展示。
高可用建议:Prometheus可采用联邦(federation)或远程写入(remote_write)到Central TSDB(如Thanos/Cortex)以实现跨区长期存储与查询。
选型理由:Prometheus轻量、生态成熟;Thanos/Cortex支持跨区域合并查询与对象存储后端。
在每台服务器安装node_exporter:
1) 下载并解压:wget https://github.com/prometheus/node_exporter/releases/... && tar xvf ...
2) 建systemd服务:/etc/systemd/system/node_exporter.service 内容指定ExecStart=/usr/local/bin/node_exporter,启动并enable。
Prometheus配置:在prometheus.yml添加scrape_configs,示例:
scrape_configs: - job_name: 'hk-servers' static_configs: - targets: ['10.0.1.10:9100'] # 根据实际IP替换。
注意防火墙与安全组允许Prometheus访问目标9100端口。
日志聚合:部署Filebeat/Fluentd到各实例,推送到集中Elasticsearch/Logstore或云日志服务,按应用/主机分索引。
Grafana仪表盘:添加Prometheus数据源,导入Node Exporter、Linux system、应用自定义面板。
告警规则示例:Prometheus alert_rules.yml配置,如:
- alert: HighCpuUsage expr: avg_over_time(node_cpu_seconds_total{mode!="idle"}[5m]) > 0.8 for: 5m labels: severity: critical annotations: summary: "CPU 高负载"。
通过Alertmanager配置路由到邮件/Slack/企业微信并配置抑制与分组。
备份策略要素:快照(磁盘级别)、文件级同步、数据库备份(逻辑或物理)、保留策略与加密。
实现步骤:
1) 数据库:定时导出(mysqldump/pg_dump)到本地临时目录,上传到对象存储(aws s3 cp或rclone)。设置cron:0 2 * * * /usr/local/bin/backup_db.sh。
2) 文件/应用:使用rsync增量同步到本地备份服务器或使用restic/duplicity直写S3兼容存储,示例restic init && restic backup /var/www --repo s3:s3.amazonaws.com/bucket。
3) 磁盘快照:通过云平台API创建快照并设置生命周期;保证快照完成后验证可挂载。
4) 跨区复制:对象存储开启跨区复制或在另一端定期拉取同步以满足异地恢复。
自动化工具:使用Ansible/Terraform写基础设施及Agent部署剧本;CI/CD触发备份脚本并在失败时通知。
恢复演练(详细):
1) 选择演练目标:单主机、单应用或全区故障。
2) 恢复流程:关闭目标实例→创建新实例(相同规格)→挂载快照或从对象存储恢复数据库与文件→配置网络与安全组→验证服务(端口/应答/完整性测试)。
3) 验证点:数据一致性(checksum)、应用启动日志、业务关键接口测试。记录时间并优化流程。
A: 推荐采用联邦或remote_write模式:在每区部署本地Prometheus采集本地指标并短期保留;使用Thanos或Cortex通过对象存储汇总长时序数据并对外提供统一查询,避免直接跨区频繁抓取;对于必需跨区抓取的少量endpoint,可设置抓取间隔加长并启用抓取超时与重试限制以降低延迟影响。同时在Prometheus配置中使用metric_relabel_configs去重label或filter掉重复采集项。
A: 备份加密分两层:传输层(HTTPS/TLS)与存储层(服务端加密SSE或客户端加密如restic内置加密)。合规上需保留审计日志与访问控制(IAM角色、Bucket策略)。跨区域注意点:数据主权法规、带宽成本、复制延迟与恢复时间目标(RTO/RPO),为敏感数据考虑仅存储在允许的区域并在传输前进行加密和掩码处理。
A: 建议步骤:1) 先做最小可行方案(MVP):在一台Prometheus+Grafana上集中监控关键主机,使用restic或对象存储做每日备份并验证恢复;2) 模块化推进:逐步在所有实例加入node_exporter、日志agent,集中告警;3) 编写运行手册与演练脚本并通过Ansible自动化;4) 定期复盘并扩展到Thanos/跨区复制以满足长期需求。优先保证可恢复性与告警可靠性,再优化可视化与容量。