低配服务器监控方案实践:Docker + Uptime Kuma + Nginx + HTTPS
2核2G云服务器如何搭建轻量级监控平台:Uptime Kuma + Spring Boot Actuator 实战
前言
最近给自己的服务器增加监控能力。
服务器配置比较普通:
Ubuntu 22.04 云服务器
CPU:2核
内存:2GB
系统盘:50GB
当前运行服务:
Nginx
MySQL
Redis
RabbitMQ
XXL-JOB Admin
多个 Spring Boot 服务
目标很简单:
- 实时查看服务是否正常
- Spring Boot 项目异常及时告警
- 部署失败及时发现
- 支持邮件通知
- 中文友好
- 尽量节省服务器资源
最开始考虑的是 Spring Boot Admin,但最终选择了 Uptime Kuma。
本文记录整个过程。
一、现有监控方案分析
服务器原本安装了 Netdata。
查看进程:
ps -eo pid,cmd,%mem,%cpu --sort=-%mem | head -20
发现:
/opt/netdata/bin/srv/netdata
MEM 7.9%
占用大约:
150MB~200MB
对于 2G 内存服务器来说已经不算小。
Netdata 的问题
虽然 Netdata 功能强大:
- CPU
- 内存
- 网络
- 磁盘
- 进程
全部支持。
但实际使用过程中有几个问题。
1. 中文支持一般
界面主要是英文。
对于偶尔查看的开发人员来说阅读成本较高。
2. 部分功能依赖 Cloud
新版 Netdata 更推荐配合 Cloud 使用。
对于个人服务器来说:
不想注册
不想依赖外网
只想本地使用
体验并不好。
3. 无法解决业务监控
Netdata知道:
CPU是否高
内存是否满
磁盘是否爆
但不知道:
SpringBoot挂没挂
XXL-JOB挂没挂
接口是否正常
而这些才是我真正关心的。
二、评估服务器资源
查看内存:
free -h
结果:
Mem: 1.9Gi
Used: 1.4Gi
Free: 103Mi
Available: 342Mi
Swap: 2.0Gi
Used: 988Mi
已经明显存在内存压力。
停止 Netdata
执行:
sudo systemctl stop netdata
再次查看:
free -h
结果:
Mem: 1.9Gi
Used: 1.0Gi
Free: 223Mi
Available: 724Mi
变化如下:
| 项目 | 停止前 | 停止后 |
|---|---|---|
| Available | 521MB | 724MB |
| Free | 93MB | 223MB |
直接释放约:
200MB
内存。
对于 2G 服务器来说收益非常明显。
三、为什么没有选择 Spring Boot Admin
Spring Boot Admin 非常优秀。
支持:
JVM
线程
日志
Bean
Mappings
Health
Metrics
对于 Spring Boot 项目来说几乎是官方级方案。
但是:
Spring Boot Admin 本身也是一个 Spring Boot 项目
即使限制:
-Xms128m
-Xmx256m
实际运行内存通常:
200MB~400MB
对于当前服务器来说:
有点奢侈
因此放弃。
四、最终选择:Uptime Kuma
Uptime Kuma 定位非常明确:
服务存活监控
告警通知
状态页展示
资源占用极低:
50MB~100MB
完全符合当前需求。
五、安装 Docker
Ubuntu 安装 Docker:
sudo apt update
sudo apt install -y docker.io
sudo systemctl enable docker
sudo systemctl start docker
验证:
docker -v
输出:
Docker version 29.x.x
安装成功。
六、解决 Docker Hub 拉取超时
国内服务器经常遇到:
failed to resolve reference
i/o timeout
原因是 Docker Hub 访问慢。
配置镜像加速:
sudo mkdir -p /etc/docker
创建:
sudo vim /etc/docker/daemon.json
内容:
{
"registry-mirrors": [
"https://docker.1ms.run",
"https://docker.xuanyuan.me",
"https://hub.rat.dev"
]
}
重启:
sudo systemctl daemon-reload
sudo systemctl restart docker
七、部署 Uptime Kuma
创建数据目录:
sudo mkdir -p /data/uptime-kuma
启动:
sudo docker run -d \
--name uptime-kuma \
--restart unless-stopped \
-p 3001:3001 \
-v /data/uptime-kuma:/app/data \
louislam/uptime-kuma:latest
查看:
sudo docker ps
结果:
uptime-kuma
Up (healthy)
启动成功。
测试访问
curl localhost:3001
返回:
Found. Redirecting to /dashboard
说明服务正常。
八、配置域名访问
申请子域名:
monitor.example.com
解析到服务器公网 IP。
Nginx 配置
创建:
/etc/nginx/conf.d/uptime-kuma.conf
配置:
upstream uptime_kuma {
server 127.0.0.1:3001;
}
server {
listen 80;
server_name monitor.example.com;
location / {
proxy_pass http://uptime_kuma;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
验证
sudo nginx -t
sudo systemctl reload nginx
访问:
http://monitor.example.com
即可打开。
九、申请 HTTPS
使用 Certbot:
sudo certbot --nginx -d monitor.example.com
自动完成:
证书申请
Nginx配置
HTTPS跳转
自动续期
最终访问:
https://monitor.example.com
十、监控哪些服务
推荐监控以下核心组件。
Spring Boot
开启:
/actuator/health
例如:
https://api.example.com/actuator/health
Redis
监控类型:
TCP Port
配置:
127.0.0.1
6379
MySQL
监控类型:
TCP Port
配置:
127.0.0.1
3306
RabbitMQ
监控类型:
TCP Port
配置:
127.0.0.1
5672
XXL-JOB
监控:
https://job.example.com/xxl-job-admin
即可。
十一、邮件告警
进入:
Settings
→ Notifications
配置 SMTP。
例如 QQ 邮箱:
smtp.qq.com
465
SSL/TLS
填写授权码即可。
实现:
服务DOWN
↓
自动检测
↓
邮件通知
十二、资源占用对比
实际测试结果:
| 服务 | 内存占用 |
|---|---|
| Netdata | 约200MB |
| Docker | 约20MB |
| Uptime Kuma | 约80MB |
| 总计 | 约100MB |
优化效果:
| 项目 | 优化前 | 优化后 |
|---|---|---|
| Available Memory | 521MB | 724MB |
| 可用内存提升 | - | +203MB |
对于 2G 内存服务器来说提升非常明显。
十三、最终监控架构
+----------------+
| Uptime Kuma |
+--------+-------+
|
+---------------------+--------------------+
| | |
▼ ▼ ▼
SpringBoot XXL-JOB Admin Redis/MySQL/RabbitMQ
/actuator/health HTTP TCP Port
|
▼
邮件告警
总结
对于个人项目或小团队:
2核2G
服务器环境下:
不推荐直接上:
Prometheus
Grafana
SkyWalking
ELK
资源成本偏高。
推荐:
Uptime Kuma
+
Spring Boot Actuator
+
邮件告警
优点:
- 部署简单
- 中文友好
- 资源占用低
- 支持 HTTPS
- 支持邮件/企业微信/飞书/钉钉
- 非常适合中小型 Spring Boot 项目
对于低配置云服务器来说,这是一个性价比非常高的监控方案。
后续如果服务器升级到:
4核8G
甚至更高
再考虑引入:
Prometheus + Grafana
Spring Boot Admin
SkyWalking
会更加合适。
更多推荐




所有评论(0)