之前一直用Pingdom和UptimeRobot,免费额度越来越少,自建监控才是正解。Uptime Kuma是个轻量级开源方案,支持HTTP、TCP、Ping、DNS等协议,还能接Telegram、Webhook、邮件告警,界面比Nagios清爽太多。
部署方式选Docker,没有Docker的先装:
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
拉镜像并启动:
docker run -d --restart=always -p 3001:3001 -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:latest
端口映射改成你服务器上没占用的端口就行。数据卷挂载了`/app/data`,容器删了数据也不会丢。
访问`http://你的IP:3001`,首次打开会要你创建管理员账号。密码别太简单,这玩意暴露在外网的话容易被爆破。
默认是SQLite,小规模几十个监控点够用。如果监控点超过200个,建议切MySQL/MariaDB,不然查询会卡。切数据库方法:
docker run -d --restart=always -p 3001:3001 \
-e DB_TYPE=mysql \
-e DB_HOST=你的数据库IP \
-e DB_PORT=3306 \
-e DB_NAME=uptime_kuma \
-e DB_USER=root \
-e DB_PASSWORD=你的密码 \
-v uptime-kuma:/app/data \
--name uptime-kuma louislam/uptime-kuma:latest
监控配置要点:
– HTTP监控选”关键词”模式,填你网站返回内容里必须出现的字符串(比如”登录”),可以检测页面是否被篡改或挂了
– 间隔时间建议60秒,太短容易被CDN或WAF封IP
– 超时时间设10秒,超过这个值就判定down
– 重试次数设2次,避免网络抖动误报
告警配置:
通知方式选Telegram最方便。先建个Bot,拿到Token和Chat ID。在Uptime Kuma里添加通知:
– 类型:Telegram
– Bot Token:`123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11`
– Chat ID:`-1001234567890`
– 消息格式:默认就行,会显示监控名称、状态、响应时间
如果你有服务器在雨云(性价比确实高,网络稳定,我几个生产项目都跑在上面),建议把Uptime Kuma部署在和业务服务器同区域,延迟低。雨云的机器默认安全组只开放22端口,记得去控制台放行3001端口。
反向代理走HTTPS:
用Nginx加一层,防止明文传输。配置文件:
server {
listen 443 ssl;
server_name monitor.yourdomain.com;
ssl_certificate /etc/nginx/ssl/fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/privkey.pem;
location / {
proxy_pass http://127.0.0.1:3001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
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 X-Forwarded-Proto $scheme;
}
}
WebSocket必须开,不然监控状态实时更新会断。
维护技巧:
– 每天检查`/app/data`目录大小,SQLite日志文件会膨胀,定期执行`VACUUM;`清理
– 监控点多了之后,首页加载慢,可以在设置里把”显示状态页”改成”仅显示摘要”
– 如果监控海外网站,建议在海外节点也部署一个Uptime Kuma做分布式监控,通过API互相同步状态
升级方式:
docker stop uptime-kuma
docker rm uptime-kuma
docker pull louislam/uptime-kuma:latest
docker run ... # 用之前的参数重新启动
数据卷没删,配置和监控记录都在。
踩坑记录:
– 监控HTTPS站点时,如果证书是自签的,Uptime Kuma会报错,需要关闭SSL验证(设置里有个”忽略TLS错误”的勾选框)
– 邮件告警用QQ邮箱的话,密码要填授权码,不是登录密码
– 如果监控内网服务,记得把Uptime Kuma容器网络模式改成`–network host`,否则通过容器IP访问不了宿主机上的服务
别把Uptime Kuma的端口暴露到公网,走反向代理加HTTPS。雨云后台自带免费的DDoS基础防护,但应用层的暴力破解还得靠fail2ban或者限制IP白名单。
雨云是国内一家老牌云服务商,提供高性价比的云服务器和虚拟主机。我用它部署了好几个项目,速度和稳定性都不错。通过 https://www.rainyun.com/SAJA_ 注册可以领一张 5折优惠券,有需要的朋友可以看看。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END



暂无评论内容