Uptime Kuma部署教程:开源网站监控和状态页搭建

Uptime Kuma 是什么

Uptime Kuma 是一个开源的自托管监控工具,类似 “Uptime Robot”,但完全免费且数据自控。它可以监控网站、API、端口、Docker 容器的在线状态,支持 80+ 种通知渠道,还能生成好看的状态页面供访客查看。

项目地址:https://github.com/louislam/uptime-kuma

适合谁:

  • 需要监控自己网站是否在线的站长
  • 想给客户提供公开状态页的团队
  • 监控多个服务器/API 服务的运维人员

Docker 部署(推荐)

1. 创建目录和 docker-compose.yml

mkdir -p /opt/uptime-kuma && cd /opt/uptime-kuma

创建 docker-compose.yml

version: '3.8'

services:
  uptime-kuma:
    image: louislam/uptime-kuma:1
    container_name: uptime-kuma
    restart: always
    ports:
      - "3002:3001"
    volumes:
      - uptime-kuma-data:/app/data

volumes:
  uptime-kuma-data:

说明:

  • 映射到 3002 端口(避免和其他服务冲突,可自定义)
  • 数据持久化到 Docker volume
  • louislam/uptime-kuma:1 锁定大版本,避免自动大版本升级出问题

2. 启动

docker compose up -d

查看日志:

docker compose logs -f --tail=20

3. 首次访问和设置

浏览器打开 http://你的IP:3002

  1. 首次访问需要创建管理员账号
  2. 填写用户名和密码
  3. 登录后进入仪表盘

添加监控项

监控网站(HTTP/HTTPS)

  1. 点击「添加新的监控项」
  2. 选择类型:HTTP(s)
  3. 填写友好名称:如 “feng.cx 主站”
  4. 填写 URL:https://feng.cx
  5. 设置检查间隔:默认 60 秒,个人站可以改成 300 秒(5 分钟)
  6. 设置重试次数:3 次
  7. 点击「保存」

监控端口(TCP)

选择类型 TCP Port,填写主机和端口:

  • 主机:your-server-ip
  • 端口:22(监控 SSH)

监控 Docker 容器

  1. 选择类型 Docker Container
  2. 需要挂载 Docker socket:
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
  3. 选择要监控的容器名

监控关键词

选择类型 HTTP(s) - Keyword,可以检查页面是否包含某个关键词。如果关键词消失,触发告警。适合监控页面内容是否被篡改。

配置通知渠道

Uptime Kuma 支持 80+ 种通知渠道,常用的有:

Telegram 通知

  1. 找 @BotFather 创建 Telegram Bot,获取 Token
  2. 获取你的 Chat ID(可以发消息给 @userinfobot)
  3. 在 Uptime Kuma「设置」→「通知」→ 添加通知
  4. 选择 Telegram
  5. 填入 Bot Token 和 Chat ID
  6. 点「测试」确认能收到消息

邮件通知(SMTP)

  1. 选择 Email (SMTP)
  2. 填写 SMTP 服务器信息(如 QQ 邮箱 SMTP)
  3. 填写发件人邮箱和密码
  4. 填写收件人邮箱

钉钉/飞书/企业微信

通过 Webhook 方式推送。在对应平台创建机器人,获取 Webhook URL,然后在 Uptime Kuma 选择「Webhook」通知类型,填入 URL。

在监控项上启用通知

添加或编辑监控项时,在「通知」选项卡里勾选要启用的通知渠道。

公开状态页

Uptime Kuma 可以创建对外展示的状态页,让访客查看你的服务状态。

创建状态页

  1. 到「状态页面」→「添加新状态页面」
  2. 填写名称和 slug(URL 路径,如 status
  3. 添加要展示的监控项
  4. 可以添加标题、描述、自定义 CSS
  5. 发布后访问 http://yourdomain:3002/status

自定义域名

通过 Nginx 反向代理把状态页绑定到独立域名:

server {
    listen 443 ssl http2;
    server_name status.yourdomain.com;

    ssl_certificate     /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;

    location / {
        proxy_pass http://127.0.0.1:3002;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

数据备份和迁移

# 备份数据
docker cp uptime-kuma:/app/data /opt/uptime-kuma-backup

# 或者直接备份 volume
docker run --rm -v uptime-kuma-data:/data -v $(pwd):/backup alpine tar czf /backup/kuma-backup.tar.gz /data

更新 Uptime Kuma

cd /opt/uptime-kuma

# 拉取最新镜像
docker compose pull

# 重建容器
docker compose up -d

更新前建议先备份数据。

常见问题

Q1:监控项显示 “Pending” 一直不变

  • 检查检查间隔是否设得太长
  • 手动点「心跳」按钮触发一次检查
  • 查看日志是否有网络错误

Q2:通知收不到

  • 先点「测试」按钮确认通知渠道配置正确
  • 检查 Telegram Bot 是否被你 Block 了
  • 检查 SMTP 配置,QQ 邮箱需要授权码不是密码

Q3:Docker 容器监控不工作

  • 确认挂载了 /var/run/docker.sock
  • 确认 Uptime Kuma 容器有权限访问 Docker socket
  • 有时需要给 socket 文件加读权限:chmod 666 /var/run/docker.sock

Q4:状态页不显示监控项

  • 编辑状态页时,确认已添加要展示的监控项
  • 监控项和状态页需要在同一个 Uptime Kuma 实例

小结

Uptime Kuma 是目前最好用的开源监控工具,Docker 部署简单,界面好看,通知渠道丰富。建议每个站长都部署一个,网站挂了第一时间收到通知。

来源:

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容