VPS监控资源使用教程2026:Zabbix/Prometheus监控搭建
前言
VPS监控是保障服务器稳定运行的关键环节。无论是个人博客还是企业应用,一旦出现资源耗尽、服务异常,都可能导致网站无法访问,造成经济损失和声誉损害。
2026年,随着VPS性能的不断提升和应用架构的复杂化,传统的"出问题时再排查"的被动模式已经无法满足需求。通过部署专业的监控系统,您可以:
- 实时掌握资源使用情况(CPU、内存、磁盘、网络)
- 提前发现性能瓶颈,避免服务中断
- 追溯历史数据,分析性能趋势
- 自动告警,第一时间获知异常
本文将深入讲解两款主流监控工具——Zabbix和Prometheus的搭建与配置,帮助您选择最适合的监控方案。
一、VPS监控基础与指标解读
1.1 为什么需要监控
真实案例: 某站长未配置监控,VPS磁盘悄悄被日志文件占满,导致数据库无法写入,网站宕机12小时才发现。
监控的核心价值:
1. 预防为主:在问题发生前预警(如磁盘使用率>80%)
2. 快速定位:出现异常时,通过监控数据快速定位根因
3. 容量规划:通过历史数据分析,合理规划资源扩容
4. SLA保障:量化服务可用性,满足业务SLA要求
1.2 关键监控指标详解
| 指标类别 | 具体指标 | 警戒阈值建议 | 说明 |
|---|---|---|---|
| CPU | 使用率 | >80% 警告,>90% 严重 | 持续高CPU可能导致服务响应慢 |
| 负载(Load Average) | >CPU核数×2 | 表示进程排队情况 | |
| 内存 | 使用率 | >80% 警告,>90% 严重 | 注意区分buff/cache |
| Swap使用 | >0 需关注 | Swap频繁使用说明内存不足 | |
| 磁盘 | 使用率 | >80% 警告,>90% 严重 | 日志、数据库容易占满磁盘 |
| I/O等待 | >20% | 磁盘I/O成为瓶颈 | |
| 网络 | 带宽使用 | >带宽上限的80% | 影响访问速度 |
| 连接数 | >10000 | TCP连接数异常可能遭受攻击 | |
| 应用 | 进程状态 | 进程数异常 | 关键进程是否存活 |
| 响应时间 | >2s | 用户体验指标 |
1.3 监控工具对比
| 工具 | 类型 | 优势 | 劣势 | 适用场景 |
|---|---|---|---|---|
| Zabbix | 传统监控 | 功能全面、告警强大、支持多种采集方式 | 配置复杂、界面陈旧 | 企业级全面监控 |
| Prometheus | 云原生监控 | 时序数据库、PromQL强大、云原生友好 | 需要配合Grafana展示 | 容器化、微服务监控 |
| Nagios | 传统监控 | 插件丰富、社区活跃 | 配置复杂、无原生图形 | 网络设施监控 |
| Netdata | 实时监控 | 开箱即用、界面美观、实时性强 | 历史数据存储有限 | 快速排查、实时查看 |
| Glances | 轻量级 | 简单易用、资源占用少 | 功能相对简单 | 快速查看VPS状态 |
推荐方案:
- 小型VPS(1-2台):Netdata或Glances,快速部署
- 中型企业(10-50台):Zabbix,功能全面
- 云原生环境:Prometheus + Grafana,现代化监控栈
- 混合环境:Zabbix负责传统监控,Prometheus负责容器监控
二、快速方案:Netdata实时监控
2.1 Netdata安装与配置
Netdata是一款开箱即用的实时性能监控工具,适合快速部署。
一键安装:
# 官方一键安装脚本
bash <(curl -Ss https://my-netdata.io/kickstart.sh)
# 或使用包管理器(Ubuntu/Debian)
sudo apt-get install -y netdata
# CentOS/RHEL
sudo yum install -y netdata
基本配置:
# 编辑配置文件
sudo nano /etc/netdata/netdata.conf
# 关键配置项:
[global]
# 监听地址(0.0.0.0允许外网访问,生产环境建议仅内网)
bind to = 0.0.0.0
# 访问端口
default port = 19999
# 内存模式(save内存占用,ram仅内存)
memory mode = save
[web]
# 允许访问的IP段
allow connections from = *
启动与访问:
# 启动Netdata
sudo systemctl start netdata
sudo systemctl enable netdata
# 防火墙开放端口
sudo ufw allow 19999/tcp
# 访问地址
http://your-vps-ip:19999
2.2 Netdata告警配置
编辑告警配置文件/etc/netdata/health_alarm_notify.conf:
# 配置邮件告警
EMAIL_SENDER = "netdata@shenma98.com"
EMAIL_RECIPIENT = "admin@shenma98.com"
# 配置Slack告警(可选)
SLACK_WEBHOOK_URL = "https://hooks.slack.com/services/xxx"
自定义告警规则(/etc/netdata/health.d/cpu.conf):
alarm: cpu_usage
on: system.cpu
lookup: average -1m unaligned of user,system
warn: $this > 80
crit: $this > 95
every: 1m
三、企业级方案:Zabbix监控搭建
3.1 Zabbix架构简介
Zabbix采用Server-Proxy-Agent架构:
- Zabbix Server:核心服务器,负责数据收集、存储、告警
- Zabbix Proxy:可选组件,用于分布式监控
- Zabbix Agent:部署在监控目标上,收集本地数据
- Database:存储监控数据(支持MySQL、PostgreSQL、TimescaleDB)
- Web Interface:基于PHP的Web管理界面
3.2 Zabbix Server安装(Ubuntu 22.04)
步骤1:安装数据库(MySQL)
# 安装MySQL
sudo apt-get update
sudo apt-get install -y mysql-server
# 安全配置
sudo mysql_secure_installation
# 创建Zabbix数据库
sudo mysql -uroot -p
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'your_strong_password';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
FLUSH PRIVILEGES;
EXIT;
步骤2:安装Zabbix Server
# 添加Zabbix仓库
wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_7.0-1+ubuntu22.04_all.deb
sudo dpkg -i zabbix-release_7.0-1+ubuntu22.04_all.deb
sudo apt-get update
# 安装Zabbix Server、Web前端、Agent
sudo apt-get install -y zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent
# 导入数据库结构
sudo cat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix
步骤3:配置Zabbix Server
# 编辑配置文件
sudo nano /etc/zabbix/zabbix_server.conf
# 关键配置项:
DBPassword=your_strong_password
DBHost=localhost
DBName=zabbix
DBUser=zabbix
Timeout=30
LogSlowQueries=3000
步骤4:启动Zabbix服务
# 启动并设置开机自启
sudo systemctl restart zabbix-server apache2
sudo systemctl enable zabbix-server apache2
# 检查服务状态
sudo systemctl status zabbix-server
步骤5:Web界面初始化
1. 访问 http://your-vps-ip/zabbix
2. 按照向导完成配置
3. 默认登录账号:Admin,密码:zabbix
3.3 Zabbix Agent安装与配置
在监控目标VPS上安装Agent:
# Ubuntu/Debian
sudo apt-get install -y zabbix-agent2
# CentOS/RHEL
sudo yum install -y zabbix-agent2
# 编辑配置文件
sudo nano /etc/zabbix/zabbix_agent2.conf
# 关键配置:
Server=Zabbix_Server_IP
ServerActive=Zabbix_Server_IP
Hostname=Your_Hostname
# 启动Agent
sudo systemctl start zabbix-agent2
sudo systemctl enable zabbix-agent2
# 防火墙开放端口(10050)
sudo ufw allow 10050/tcp
3.4 Zabbix监控项与告警配置
添加监控主机:
1. 登录Zabbix Web界面
2. Configuration → Hosts → Create host
3. 填写Host name、Groups、Agent interfaces(IP:10050)
4. Templates → 选择模板(如Linux by Zabbix agent)
5. 点击Add
配置告警媒介(邮件):
1. Administration → Media types → Email
2. 配置SMTP服务器、账号、密码
3. 在User settings中配置接收告警的邮箱
创建告警动作:
1. Configuration → Actions → Create action
2. 设置触发条件(如"Trigger value = PROBLEM")
3. 配置操作(发送邮件、执行远程命令等)
四、云原生方案:Prometheus + Grafana
4.1 Prometheus架构与优势
Prometheus是云原生时代的监控标杆,采用Pull模式采集数据,适合动态、微服务环境。
核心组件:
- Prometheus Server:主服务,负责采集、存储数据
- Exporter:数据采集器(如node_exporter采集主机指标)
- Pushgateway:支持Push模式(适用于短生命周期任务)
- Alertmanager:告警管理器
- Grafana:可视化仪表盘
Prometheus vs Zabbix:
| 维度 | Prometheus | Zabbix |
|---|---|---|
| 数据模型 | 时序数据库(TSDB) | 关系型数据库 |
| 采集方式 | Pull(主动拉取) | Push(Agent推送)+ Passive |
| 查询语言 | PromQL(强大) | 简单函数 |
| 告警规则 | 灵活(PromQL) | 图形化配置 |
| 服务发现 | 支持(K8s、Consul) | 需手动配置 |
| 适用场景 | 云原生、微服务 | 传统IT基础设施 |
4.2 Prometheus安装与配置
步骤1:创建Prometheus用户
sudo useradd --no-create-home --shell /bin/false prometheus
步骤2:下载并安装Prometheus
# 下载最新版本
cd /tmp
wget https://github.com/prometheus/prometheus/releases/download/v2.50.0/prometheus-2.50.0.linux-amd64.tar.gz
# 解压
tar -xvf prometheus-2.50.0.linux-amd64.tar.gz
# 移动到安装目录
sudo mv prometheus-2.50.0.linux-amd64 /etc/prometheus
cd /etc/prometheus
# 设置权限
sudo chown -R prometheus:prometheus /etc/prometheus
步骤3:配置Prometheus
编辑 /etc/prometheus/prometheus.yml:
global:
scrape_interval: 15s # 采集间隔
evaluation_interval: 15s # 告警规则评估间隔
alerting:
alertmanagers:
- static_configs:
- targets:
- localhost:9093
rule_files:
- "alerts.yml"
scrape_configs:
# 监控Prometheus自身
- job_name: "prometheus"
static_configs:
- targets: ["localhost:9090"]
# 监控VPS主机(需要安装node_exporter)
- job_name: "node"
static_configs:
- targets: ["localhost:9100"]
# 监控Docker容器(需要安装cAdvisor)
- job_name: "docker"
static_configs:
- targets: ["localhost:8080"]
步骤4:创建Systemd服务
创建 /etc/systemd/system/prometheus.service:
[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target
[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/etc/prometheus/prometheus \
--config.file=/etc/prometheus/prometheus.yml \
--storage.tsdb.path=/etc/prometheus/data \
--web.console.templates=/etc/prometheus/consoles \
--web.console.libraries=/etc/prometheus/console_libraries \
--web.listen-address=:9090
[Install]
WantedBy=multi-user.target
步骤5:启动Prometheus
sudo systemctl daemon-reload
sudo systemctl start prometheus
sudo systemctl enable prometheus
# 检查状态
sudo systemctl status prometheus
# 访问Web界面
http://your-vps-ip:9090
4.3 node_exporter安装(主机监控)
node_exporter负责采集Linux主机指标(CPU、内存、磁盘等)。
# 下载node_exporter
cd /tmp
wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz
# 解压
tar -xvf node_exporter-1.7.0.linux-amd64.tar.gz
# 移动到/usr/local/bin
sudo mv node_exporter-1.7.0.linux-amd64/node_exporter /usr/local/bin/
# 创建Systemd服务
sudo nano /etc/systemd/system/node_exporter.service
# 服务文件内容:
[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target
[Service]
User=root
Group=root
Type=simple
ExecStart=/usr/local/bin/node_exporter
[Install]
WantedBy=multi-user.target
# 启动node_exporter
sudo systemctl daemon-reload
sudo systemctl start node_exporter
sudo systemctl enable node_exporter
# 防火墙开放端口(9100)
sudo ufw allow 9100/tcp
4.4 Grafana可视化仪表盘
Grafana是流行的开源可视化工具,支持多种数据源(Prometheus、MySQL、Elasticsearch等)。
安装Grafana(Ubuntu/Debian):
# 添加Grafana仓库
sudo apt-get install -y software-properties-common
sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
sudo apt-get update
# 安装Grafana
sudo apt-get install -y grafana
# 启动Grafana
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
# 防火墙开放端口(3000)
sudo ufw allow 3000/tcp
# 访问Grafana
http://your-vps-ip:3000
# 默认账号:admin,密码:admin(首次登录需修改)
配置Prometheus数据源:
1. 登录Grafana
2. Configuration → Data Sources → Add data source
3. 选择Prometheus
5. 点击"Save & Test"
导入仪表盘模板:
1. 访问 https://grafana.com/grafana/dashboards/
2. 搜索"Node Exporter Full"(ID: 1860)
3. 在Grafana中:Dashboards → Import → 输入ID 1860
4. 选择Prometheus数据源,点击Import
4.5 Prometheus告警配置
安装Alertmanager:
# 下载Alertmanager
cd /tmp
wget https://github.com/prometheus/alertmanager/releases/download/v0.27.0/alertmanager-0.27.0.linux-amd64.tar.gz
# 解压并安装
tar -xvf alertmanager-0.27.0.linux-amd64.tar.gz
sudo mv alertmanager-0.27.0.linux-amd64/alertmanager /usr/local/bin/
# 创建配置文件 /etc/prometheus/alertmanager.yml
global:
resolve_timeout: 5m
route:
group_by: ['alertname']
group_wait: 10s
group_interval: 10s
repeat_interval: 1h
receiver: 'email-notifications'
receivers:
- name: 'email-notifications'
email_configs:
- to: 'admin@shenma98.com'
from: 'alertmanager@shenma98.com'
smarthost: 'smtp.example.com:587'
auth_username: 'alertmanager@shenma98.com'
auth_password: 'your_password'
创建告警规则 /etc/prometheus/alerts.yml:
groups:
- name: vps_alerts
rules:
# CPU使用率告警
- alert: HighCpuUsage
expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
for: 5m
labels:
severity: warning
annotations:
summary: "VPS CPU使用率过高"
description: "{{ $labels.instance }} CPU使用率超过80%,当前值:{{ $value }}%"
# 内存使用率告警
- alert: HighMemoryUsage
expr: (1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes)) * 100 > 80
for: 5m
labels:
severity: warning
annotations:
summary: "VPS 内存使用率过高"
description: "{{ $labels.instance }} 内存使用率超过80%,当前值: {{ $value }}%"
# 磁盘使用率告警
- alert: HighDiskUsage
expr: (1 - (node_filesystem_avail_bytes{fstype!="tmpfs"} / node_filesystem_size_bytes)) * 100 > 80
for: 5m
labels:
severity: warning
annotations:
summary: "VPS 磁盘使用率过高"
description: "{{ $labels.instance }} 磁盘 {{ $labels.mountpoint }} 使用率超过80%,当前值: {{ $value }}%"
五、监控最佳实践与故障排查
5.1 监控部署建议
1. 分层监控
- 基础设施层:CPU、内存、磁盘、网络
- 系统服务层:SSH、Nginx、MySQL等服务状态
- 应用层:网站响应时间、数据库查询性能
- 业务层:订单量、注册用户数等业务指标
2. 合理设置告警阈值
- 避免"告警疲劳"(过多无效告警)
- 区分警告(Warning)和严重(Critical)级别
- 设置告警抑制(如VPS宕机时,不重复发送该VPS上所有服务告警)
3. 数据保留策略
- 高频数据保留短期(如1分钟精度保留7天)
- 低频数据保留长期(如1小时精度保留1年)
- Prometheus可使用Thanos或Victoria Metrics实现长期存储
5.2 常见问题排查
问题1:Zabbix Agent无法连接
# 检查Agent是否运行
sudo systemctl status zabbix-agent2
# 检查端口是否监听
sudo netstat -tlnp | grep 10050
# 检查防火墙
sudo ufw status
# 测试连通性(从Server端)
zabbix_get -s Agent_IP -k system.uname
问题2:Prometheus采集数据为空
# 检查node_exporter是否运行
curl http://localhost:9100/metrics
# 检查Prometheus Targets状态
访问 http://localhost:9090/targets
# 查看Prometheus日志
sudo journalctl -u prometheus -f
问题3:Grafana仪表盘无数据
- 检查数据源配置是否正确
- 在Prometheus中验证查询语句(PromQL)
- 检查时间范围是否合适
总结
VPS监控是保障服务稳定运行的必备措施。本文详细介绍了三种监控方案:
1. Netdata:快速部署,实时性强,适合小型VPS
2. Zabbix:功能全面,适合传统IT环境
3. Prometheus + Grafana:云原生监控栈,适合现代化应用
方案选择建议:
- 个人博客/小型网站:Netdata
- 企业内网环境:Zabbix
- 容器化/微服务架构:Prometheus + Grafana
无论选择哪种方案,关键是要真正用起来——配置告警、定期查看仪表盘、分析历史趋势,才能让监控发挥最大价值。
相关文章推荐
监控是VPS运维的重要组成部分,以下文章将帮助您构建完整的运维体系:
- VPS安全加固教程2026:SSH安全与防暴力破解 - 监控异常登录,及时发现安全风险
- VPS定时任务设置教程2026:crontab配置与自动化任务 - 配合监控实现自动化故障恢复
- VPS配置防火墙规则教程2026:iptables与firewalld详解 - 监控防火墙日志,发现攻击行为
- VPS优化网络速度教程2026:BBR加速与TCP优化 - 监控网络性能,验证优化效果
- VPS安装Docker教程2026:容器化部署完整指南 - 使用Docker快速部署监控系统

评论(0)