新加坡Flexus L(2核1G)实战:用Docker部署Uptime Kuma,低成本监控网站与服务
我的服务器是一台位于新加坡的华为云 Flexus L 实例,2 核 1G 内存,跑的是自己的小网站和几个小服务。机器本身很稳,但有个老问题:网站挂了、服务崩了,我往往是最后一个知道的人——要么是朋友告诉我打不开,要么是自己要用的时候才发现。
于是我给它装了一个 Uptime Kuma:一个开源、自托管的服务监控工具,界面清爽,还能做状态页和告警。整套东西用 Docker 跑,一个容器就够,对 2 核 1G 的小机器非常友好。下面是完整实操。
一、为什么选 Uptime Kuma
- 轻量:官方镜像不大,实测常驻内存大约 100MB 上下,1G 内存的 Flexus L 完全扛得住。
- 开箱即用:支持 HTTP、端口、Ping、DNS 等几十种监控类型,不用写脚本。
- 看得见:自带仪表盘和公开状态页,哪个服务挂了、挂了多久,一目了然。
- 能告警:支持邮件、Telegram、钉钉等几十种通知方式,宕机第一时间就能收到提醒。
- 数据在自己手里:监控数据存在服务器本地的 Docker 卷里,不依赖第三方平台。
二、准备工作:先确认这三点
- 服务器已能正常 SSH 登录,系统为常见的 Ubuntu/Debian 系。
- 磁盘至少留出 2GB 空闲,监控数据本身很小,但 Docker 镜像和日志要占地方。
- 在华为云控制台的安全组里放行 3001 端口(Uptime Kuma 默认端口),来源先限制为自己的 IP,配好反代或确认无误后再按需放开。
先看一眼内存和磁盘,心里有个数:
free -h
df -h /
docker --version
如果还没有 Docker,先装好再继续。
三、安装 Docker(已有可跳过)
sudo apt update
sudo apt install -y docker.io
sudo systemctl enable --now docker
sudo docker --version
把当前用户加进 docker 组,避免每次都 sudo(重新登录后生效):
sudo usermod -aG docker $USER
四、一条命令跑起 Uptime Kuma
先建一个数据目录,监控数据就存在这里,重建容器也不会丢:
mkdir -p ~/uptime-kuma/data
然后启动容器。注意给容器加内存限制,这是 1G 小内存机器的关键一步:
docker run -d --name uptime-kuma \
--restart=always \
--memory=512m --memory-swap=512m \
-p 127.0.0.1:3001:3001 \
-v ~/uptime-kuma/data:/app/data \
louislam/uptime-kuma:1
参数说明:
--restart=always:服务器重启后自动恢复监控,不用人守着。--memory=512m:把容器内存上限锁在 512MB,防止它吃掉整台机器的内存。- 只绑
127.0.0.1:3001:先不直接对外暴露,后面通过反代或按需放行访问,更安全。 -v挂载数据卷:监控记录、配置和账号都存在~/uptime-kuma/data。
查看容器是否正常运行:
docker ps
docker logs -f uptime-kuma
看到日志里出现监听 3001 端口的信息,就可以打开浏览器访问了。如果是本机端口转发或已放行端口,直接访问服务器 IP 的 3001 端口。
五、第一次配置:三分钟完成
- 打开页面,创建管理员账号和密码,密码尽量长一点,因为它管着所有监控配置。
- 语言选中文,时区选 Asia/Singapore,和服务器所在地保持一致。
- 点“添加监控项”,先加最重要的三个:
- 自己的网站首页:类型选 HTTP,填网址,间隔 60 秒。
- 博客或 API 接口:同样用 HTTP,顺带把关键字监控打开,例如页面应包含自己的站点名。
- SSH 端口:类型选 TCP 端口,填 22 端口,确认服务器本身还活着。
建议把监控间隔设为 60 秒而不是 20 秒:对个人小站来说完全够用,还能给 1G 内存的机器省点 CPU。
六、告警:挂了要第一时间知道
只看仪表盘还不够,监控的意义在于“出问题立刻通知你”。我用的是邮件通知,配置路径是:设置 → 通知 → 新建通知。
- 类型:邮件(SMTP)。
- 发件服务器:用自己的邮箱 SMTP,例如 QQ 邮箱或 Gmail 的 SMTP 服务,端口 465(SSL)或 587。
- 收件人:填自己常用的邮箱。
- 保存后点“测试”,收到测试邮件就说明通了。
然后回到每个监控项,把这个通知勾上。也可以建一个 Telegram Bot 通知,手机上收消息更快。
七、给 1G 小内存机器的三个调优建议
- 限制容器内存:上面
--memory=512m就是干这个的,别省。 - 定期清理 Docker:镜像、日志和无用卷会慢慢吃掉磁盘,每月跑一次:
docker system prune -f
docker logs --tail=200 uptime-kuma
- 监控项别贪多:个人用 10 个以内监控项足够,太多只会增加无意义的请求和写盘。
另外建议把 Uptime Kuma 的数据目录纳入已有的备份计划里。我的做法是和之前写过的 systemd 定时任务加 rsync 那套备份思路一样,定期把 ~/uptime-kuma/data 同步到备份位置,换机器时恢复起来很快。
八、做一个公开状态页
Uptime Kuma 自带状态页:状态页 → 新建状态页,把重要的服务加进去,起个名字比如“我的服务状态”。
这个页面可以分享给朋友或用户,服务正常还是维护中一目了然;也可以把链接放在自己的网站页脚。
九、常见问题
页面打不开?
先看容器在不在:docker ps,再看日志:docker logs uptime-kuma。如果是端口问题,检查安全组是否放行 3001,以及是不是只绑了 127.0.0.1。
内存报警?
先看 docker stats,如果 Uptime Kuma 内存持续上涨,检查监控项数量和间隔,必要时重启容器释放内存。
升级怎么做?
数据在卷里,升级就是拉新镜像、停旧容器、用同一条命令重新创建:
docker pull louislam/uptime-kuma:1
docker stop uptime-kuma && docker rm uptime-kuma
# 再用第四节那条 docker run 命令重新启动即可,数据不会丢
十、总结
一台 2 核 1G 的新加坡 Flexus L,跑一个 Uptime Kuma 绰绰有余:一条 Docker 命令部署,几分钟配好监控和邮件告警,再加一个公开状态页,网站和服务的可用性就有了最基本的保障。
对我来说,它的价值不是“多了一个仪表盘”,而是“出问题时我能第一时间知道”,而不是等别人来告诉我。小机器也能把运维做得体面,关键是选对工具、把资源限制好。
- 点赞
- 收藏
- 关注作者
评论(0)