从零开始:我用Uptime Kuma搭建了一个高颜值监控面板
上周我的个人博客突然挂了36小时才发现,这种后知后觉的感觉实在太糟糕了。作为运维老司机,我决定给自己搭建一个状态监控系统。经过对比,最终选择了开源的Uptime Kuma——这个支持Docker部署、界面清爽的监控工具。今天就把我的实战过程分享给大家。
为什么选择Uptime Kuma?
在选型阶段我对比了几个方案:Uptime Robot免费版有监控数量限制,Prometheus+Grafana又太重。直到发现这个GitHub上18k+星的Uptime Kuma项目:
- 完全开源且支持自托管
- 漂亮的响应式仪表盘
- 支持HTTP/TCP/Ping/DNS等多种监控
- 微信/Telegram/Webhook等告警通知
最打动我的是它的Docker一键部署——对于我这种喜欢”开箱即用”的懒人来说太友好了。
Docker部署踩坑实录
官方推荐使用Docker Compose部署,我的服务器环境是Ubuntu 20.04。先创建docker-compose.yml:
version: '3'
services:
uptime-kuma:
image: louislam/uptime-kuma:1
container_name: uptime-kuma
volumes:
- ./uptime-kuma-data:/app/data
ports:
- "3001:3001" # 默认端口
restart: always
执行docker-compose up -d
后访问服务器IP:3001,居然报错连接被拒绝!排查发现是ufw防火墙没放行端口。解决方法:
sudo ufw allow 3001/tcp
sudo ufw reload
这里有个小技巧:建议把3001改成非标准端口(比如13001)并通过Nginx反代,既安全又方便记忆域名。
配置监控项的实战技巧
初始化完成后,我添加了几个关键监控:
- 博客首页HTTP监控(间隔1分钟)
- MySQL端口TCP检查
- 服务器Ping检测
- SSL证书过期监控
重点说下HTTP监控的高级配置:
- 开启”解析DNS”选项防止DNS污染导致误报
- 设置HTTP状态码200-399为正常范围
- 关键词检查可以验证页面完整性
告警通知的智能配置
光有监控不够,及时告警才是关键。我配置了微信和Telegram双重通知:
1. Telegram Bot通知:
- 通过@BotFather创建机器人
- 获取chat_id(通过/userinfo插件)
- 在Uptime Kuma添加Webhook:
https://api.telegram.org/bot{TOKEN}/sendMessage?chat_id={CHAT_ID}&text=__message__
2. 企业微信通知:
- 需要先创建自建应用
- 使用企业微信的Webhook API
建议设置”渐进式通知”:第一次宕机发通知,如果持续宕机则每2小时提醒一次,避免消息轰炸。
使用一个月后的真实体验
这个工具已经帮我发现了3次潜在问题:
- 某次CDN节点异常(HTTP监控报错)
- 数据库连接数耗尽(TCP监控异常)
- SSL证书临近过期(提前15天提醒)
要说不足,就是移动端App还比较简陋。不过开发者很活跃,GitHub上几乎每周都有更新。
如果你也需要轻量级的监控方案,不妨试试这个工具。部署过程有问题欢迎在评论区交流~
这个工具看起来不错,正好最近也在找监控方案,准备试试看
博主写得真详细,连防火墙问题都考虑到了,收藏了👍