1.
概述与前提
本文以实际可执行步骤为主,目标是在菲律宾机房(或卖家承诺的
菲律宾原生IP)上自动化部署VPS并配置基础监控与报警。前提:你有VPS控制台账号、SSH密钥、以及能执行sudo的用户。
2.
购买与IP验证
购买时优先选择标注“Philippines”或本地IDC的服务商。拿到VPS后通过SSH连入并运行:curl -s https://ipinfo.io/json | jq '.' 或 curl -s https://ifconfig.co/json 来查看country字段为PH,确认为菲律宾IP;若不一致,向商家索要ASN/机房信息并要求换IP。
3.
环境准备(基础命令)
登录后先执行:sudo apt update && sudo apt -y upgrade;创建管理用户:sudo adduser deployer && sudo usermod -aG sudo deployer;禁止密码登录:编辑 /etc/ssh/sshd_config,将 PasswordAuthentication no,PermitRootLogin no,重启SSH:sudo systemctl reload sshd。
4.
安装常用组件
安装git、curl、ufw、fail2ban、jq:sudo apt -y install git curl ufw fail2ban jq;配置时区为Asia/Manila:sudo timedatectl set-timezone Asia/Manila;启用ufw基本规则:sudo ufw allow 22/tcp; sudo ufw allow 80/tcp; sudo ufw allow 443/tcp; sudo ufw enable。
5.
自动化部署脚本结构建议
脚本拆分为:01-bootstrap.sh(系统初始化)、02-security.sh(防护)、03-monitor.sh(监控安装)、04-snapshot.sh(快照备份)。每个脚本开头写set -euo pipefail,并记录日志到 /var/log/deploy.log。
6.
示例:01-bootstrap.sh(关键片段)
示例步骤:创建deploy用户、更新系统、关闭root登录、安装基础包。示例命令:#!/bin/bash ... apt update && apt -y upgrade; adduser ...; echo 'deployer ALL=(ALL) NOPASSWD:ALL' > /etc/sudoers.d/deployer。
7.
示例:03-monitor.sh(安装node_exporter)
下载并安装node_exporter为systemd服务:wget https://github.com/prometheus/node_exporter/releases/download/v*/node_exporter-*.linux-amd64.tar.gz;解压并移动到 /usr/local/bin;创建 /etc/systemd/system/node_exporter.service,启动并启用:sudo systemctl enable --now node_exporter。
8.
Prometheus 与 Alertmanager 简易方案
如果你管理多台VPS,部署一台监控服务器运行Prometheus、Alertmanager、Grafana。Prometheus scrape node_exporter 的端口9100,配置alert.rules检测node_down、cpu高于90%、磁盘使用率90%等,并在Alertmanager中配置邮件或Webhook(Telegram)接收告警。
9.
Alert 到 Telegram 的实现示例
在Alertmanager中配置receivers为webhook,指向你搭建的简易服务(例如使用bash+curl或python flask): curl -s -X POST "https://api.telegram.org/bot
/sendMessage" -d chat_id= -d text="$ALERT_TEXT"。注意把TOKEN和CHAT_ID保存在安全位置。
10.
日志和入侵防护(fail2ban)
安装fail2ban后,创建 /etc/fail2ban/jail.local,启用sshd监控并设置 maxretry=5 bantime=3600;重启:sudo systemctl restart fail2ban。配合ufw黑名单可自动屏蔽恶意IP。
11.
快照与自动备份
若提供商有API(大多数VPS商都有),写一个每日快照脚本:使用curl -H "Authorization: Bearer $TOKEN" 调用快照接口,并保留最近N份。示例保留逻辑用jq筛选并删除老快照。
12.
监控报警可选组件与阈值建议
推荐指标:node_cpu_idle < 10%、node_filesystem_avail_bytes < 10% of total、node_network_receive_bytes/s 突增。告警策略:连续5分钟触发报警;告警级别区分:warning(邮件)/critical(Telegram+短信)。
13.
测试与验证步骤
验证顺序:1) 验证IP归属:curl ipinfo;2) 验证服务启动:systemctl status node_exporter;3) 验证Prometheus 已抓取:访问Prometheus targets页面;4) 触发模拟报警(例如临时设置阈值极低)确认告警到达。
14.
安全与合规补充建议
不要在VPS上存放敏感PII数据,定期更新系统补丁,启用fail2ban和ufw。若用于商业用途,检查当地法律与服务商TOS,避免滥用IP导致被封。
15.
常见故障排查
无法访问node_exporter:检查防火墙与服务状态 sudo ss -tunlp | grep 9100;告警未到达:检查Alertmanager日志及Webhook返回码,查看Prometheus rule eval是否报错。
16.
问:如何确认VPS的IP是真正的菲律宾本地IP?
答:通过curl https://ipinfo.io/json 或 https://ifconfig.co/json 查看country字段为PH,同时检查ASN和city字段;还可用在线GeoIP服务(MaxMind、IP2Location)或traceroute 观察出站路径是否经过菲律宾IX交换节点。
17.
问:没有Prometheus经验,如何快速实现报警通知?
答:可以先用轻量方案:安装Netdata并启用内置报警,或使用UptimeRobot/Serverbear之类的SaaS监控,只需在VPS上安装agent或开放端口,收到报警后可通过邮件/Telegram转发。
18.
问:脚本自动化后如何保持长期维护与安全?
答:将脚本放到版本库(私有Git),使用CI(GitLab CI/GitHub Actions)自动执行变更,定期运行系统更新脚本并设置报警(补丁失败、重启等),并对关键操作启用审计与备份策略。
来源:部署菲律宾原生ip vps的自动化脚本与监控报警建议