1.
为什么要为马来西亚VPS做性能监控与告警
为了保证线上服务在马来西亚地区的稳定性,必须实时掌握CPU、内存、磁盘、网络和进程等指标。合理的告警能在问题放大前通知运维人员,避免网站宕机、响应缓慢或资源耗尽带来的损失。下面给出可落地的、分步骤的搭建与配置方案,兼顾轻量与企业级方案。
2.
选择监控方案:轻量 vs 企业级
先明确需求:实时查看+历史趋势(轻量推荐Netdata或UptimeRobot);可扩展并定义复杂告警(推荐Prometheus+Grafana+Alertmanager或Zabbix)。若VPS数量少且需快速上线,先用Netdata,再按需迁移到Prometheus架构。
3.
准备环境与基础安装(以Ubuntu为例)
a) 更新系统:sudo apt update && sudo apt upgrade -y。b) 安装常用工具:sudo apt install -y curl wget git vim net-tools htop。c) 开放监控端口(示例Prometheus 9090、Grafana 3000、Node Exporter 9100):sudo ufw allow 9090/tcp && sudo ufw allow 3000/tcp && sudo ufw allow 9100/tcp && sudo ufw enable。
4.
方案A:快速上线——Netdata 部署
a) 安装一键脚本:bash <(curl -Ss https://my-netdata.io/kickstart.sh)。b) 安装完成后访问 http://VPS_IP:19999 查看实时图表。c) 配置报警:编辑 /etc/netdata/health.d/*.conf,修改阈值并设置通知脚本(支持邮件、Slack、Telegram)。d) 优点:部署快、实时、资源占用低;缺点:报警管理与历史查询不如Prometheus灵活。
5.
方案B:长期可扩展——Prometheus + Node Exporter + Grafana
a) 安装Node Exporter(采集主机指标):下载最新release,解压并作为systemd服务运行。命令示例:
wget https://github.com/prometheus/node_exporter/releases/download/vX.Y.Z/node_exporter-X.Y.Z.linux-amd64.tar.gz
tar xzf ...
sudo cp node_exporter /usr/local/bin/
创建 /etc/systemd/system/node_exporter.service 并启动:sudo systemctl daemon-reload && sudo systemctl enable --now node_exporter。
b) 安装Prometheus:下载Prometheus二进制,编辑 prometheus.yml,加入targets: - 'VPS_IP:9100',启动Prometheus服务。c) 安装Grafana:apt安装或官方仓库,访问http://VPS_IP:3000 登录并导入现成Node Exporter仪表盘。
6.
配置Prometheus告警规则与Alertmanager
a) 在Prometheus配置文件中引用规则文件:
rule_files:
- "alert.rules.yml"
b) 示例 alert.rules.yml(CPU、内存、磁盘告警):
- alert: HighCPUUsage
expr: 100 - (avg by(instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
for: 5m
labels: {severity: "page"}
annotations: {summary: "CPU 使用率高 (>80%)", description: "实例 {{ $labels.instance }} CPU > 80% 持续 5 分钟"}
类似地添加MemoryAvailable、DiskSpaceLow规则。
c) 安装并配置Alertmanager:在alertmanager.yml中配置接收器(邮件、Slack、Telegram、Webhook)。示例Telegram配置使用Bot token和chat_id。
7.
配置通知渠道:邮件、Telegram、Slack与SMS
a) 邮件:在Alertmanager配置SMTP参数,或在小型场景用系统邮件(msmtp/ssmtp)+脚本。b) Telegram:创建Bot(@BotFather),在alertmanager.yml中使用 webhook 或直接的telegram webhook 集成。c) Slack:在Workspace中创建Incoming Webhook,配置到Alertmanager。d) SMS:可使用第三方服务(Twilio、MSG91等)通过Webhook发送短消息。
8.
测试告警与演练故障恢复
a) 人为触发:使用stress或dd工具制造CPU/IO压力(示例sudo apt install -y stress; stress --cpu 2 --io 1 --vm 1 --vm-bytes 256M --timeout 300s)。b) 检查Prometheus是否触发规则并在Alertmanager UI中查看通知。c) 校验接收端(Telegram/邮件)收到告警并能自动包含恢复(resolved)通知。定期做一次模拟演练,记录响应时间。
9.
磁盘告警与磁盘清理自动化脚本示例
a) 简单的cron脚本(/usr/local/bin/disk-check.sh):
#!/bin/bash
THRESH=85
USAGE=$(df / | tail -1 | awk '{print $5}' | sed 's/%//')
if [ $USAGE -ge $THRESH ]; then
echo "Disk usage at ${USAGE}%" | mail -s "Disk警报 $HOSTNAME" ops@example.com
fi
b) 添加到crontab:*/5 * * * * /usr/local/bin/disk-check.sh。c) 更优方案:用Prometheus node exporter 自带的 node_filesystem_avail_bytes 指标写告警规则并通过Alertmanager通知。
10.
最佳实践:阈值设定与告警分级
a) 告警分级:warning(提示,非紧急),critical(需人工介入),page(需要电话/短信)。b) 阈值举例:CPU 80%->warning 95%->critical;内存可用 < 15% -> warning,< 5% -> critical;磁盘剩余 < 20% -> warning,< 5% -> critical。c) 避免告警风暴:使用 for: 5m、抑制重复通知、在Alertmanager中设置group_interval、repeat_interval。
11.
网络延迟和丢包监控(针对马来西亚节点)
a) 使用Blackbox Exporter或自建脚本定期从
马来西亚VPS对关键外部服务做ICMP/TCP检测。Prometheus可抓取blackbox探针结果并做延迟/丢包告警。b) 在Prometheus规则中:probe_success == 0 -> 告警;probe_duration_seconds > 1s -> 延迟告警。c) 若发现跨境链路问题,记录RTT并联系上游ISP或部署多节点冗余(在吉隆坡/槟城/新加坡等地多点负载均衡)。
12.
问:如何在马来西亚VPS上快速获得可用的监控告警? 答:推荐先部署Netdata并通过其通知集成(Telegram/Email),15分钟内可看到实时数据与告警;随后按需升级到Prometheus+Grafana+Alertmanager以实现长期告警规则与历史分析。
13.
问:Prometheus告警未发送到Telegram怎么办? 答:先在Alertmanager日志中查看发送记录(journalctl -u alertmanager),确认alertmanager.yml中telegram配置的bot token与chat_id是否正确;用curl直接请求Bot发送消息验证网络是否能连接到api.telegram.org;若网络被阻塞,检查防火墙或VPS出站策略。
14.
问:如何优化监控带来的资源开销? 答:1)使用Node Exporter和Prometheus默认指标即可,避免在每台VPS上部署过多重型采集器;2)Prometheus可配置scrape_interval与scrape_timeout(对低频指标设置较长间隔);3)对历史数据做远程存储(Thanos/Long-term storage)并减少本地保留周期;4)用采样与压缩减少磁盘占用。
来源:性能监控与告警设置让马来西亚vps主机稳定运行无忧