Statping 状态页面系统搭建教程

Statping(Statping-ng)是一款开源的服务状态监控和状态页面系统,用 Go 语言编写。它可以监控 HTTP、TCP、UDP、ICMP 和 gRPC 等多种协议的服务,并生成美观的公开状态页面。Statping 内置了通知系统,支持 Slack、Email、Telegram 等多种告警渠道。本文将在搬瓦工 VPS 上通过 Docker 部署 Statping。

一、Docker 部署

mkdir -p /opt/statping && cd /opt/statping

创建 docker-compose.yml

version: '3.8'

services:
  statping:
    image: statping/statping:latest
    restart: always
    ports:
      - "8085:8080"
    volumes:
      - statping_data:/app
    environment:
      DB_CONN: sqlite
      NAME: "服务状态监控"
      DESCRIPTION: "实时服务状态页面"

volumes:
  statping_data:
docker compose up -d

二、Nginx 反向代理

server {
    listen 80;
    listen 443 ssl http2;
    server_name status.example.com;

    ssl_certificate /etc/letsencrypt/live/status.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/status.example.com/privkey.pem;

    location / {
        proxy_pass http://127.0.0.1:8085;
        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;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}
nginx -t && systemctl reload nginx

三、添加监控服务

登录 Statping 后台(首次访问时设置管理员账号),添加要监控的服务:

  • HTTP 服务:填写 URL,设置期望的状态码(200)和超时时间。
  • TCP 服务:填写 IP 和端口,监控数据库、Redis 等服务。
  • Ping 服务:通过 ICMP 监控服务器是否在线。

每个服务可以设置检查间隔(推荐 60-300 秒)、重试次数和分组归类。

四、通知告警配置

在"Settings > Notifiers"中配置告警通知。以 Telegram 为例:

  • 创建 Telegram Bot 并获取 Token。
  • 获取 Chat ID。
  • 在 Statping 中启用 Telegram 通知,填入 Bot Token 和 Chat ID。
  • 设置通知触发条件:服务下线时通知、恢复时通知。

五、使用 PostgreSQL 替代 SQLite

高流量场景建议使用 PostgreSQL:

version: '3.8'

services:
  statping:
    image: statping/statping:latest
    restart: always
    ports:
      - "8085:8080"
    volumes:
      - statping_data:/app
    environment:
      DB_CONN: postgres
      DB_HOST: db
      DB_PORT: 5432
      DB_DATABASE: statping
      DB_USER: statping
      DB_PASS: 你的密码
    depends_on:
      - db

  db:
    image: postgres:16-alpine
    restart: always
    environment:
      POSTGRES_DB: statping
      POSTGRES_USER: statping
      POSTGRES_PASSWORD: 你的密码
    volumes:
      - postgres_data:/var/lib/postgresql/data

volumes:
  statping_data:
  postgres_data:

六、API 集成

# 获取所有服务状态
curl -H "Authorization: Bearer YOUR_API_SECRET" \
  https://status.example.com/api/services

# 获取特定服务的可用性数据
curl -H "Authorization: Bearer YOUR_API_SECRET" \
  https://status.example.com/api/services/1

# 创建新的监控服务
curl -X POST https://status.example.com/api/services \
  -H "Authorization: Bearer YOUR_API_SECRET" \
  -H "Content-Type: application/json" \
  -d '{"name":"新服务","domain":"https://new.example.com","type":"http","method":"GET","expected_status":200,"interval":60}'

七、自定义状态页面

Statping 支持自定义 CSS 和 HTML,可以调整状态页面的外观。在"Settings > Theme"中编辑自定义样式。也可以通过 API 将状态数据嵌入到自己的网站中。

# 备份 Statping 数据
docker cp statping-statping-1:/app /root/backups/statping_$(date +%Y%m%d)

总结

Statping 是功能全面的自托管状态页面和监控系统。在搬瓦工 VPS 上通过 Docker 部署简单快捷,可以同时监控多种协议的服务,并提供美观的公开状态页面。如果需要更现代的状态页面方案,可以参考 GatusCachet

选购搬瓦工 VPS 请查看 全部方案,购买时使用优惠码 NODESEEK2026 可享受 6.77% 的折扣,通过 bwh81.net 进入官网购买。

关于本站

搬瓦工VPS中文网(bwgvps.com)是非官方中文信息站,整理搬瓦工的方案、优惠和教程。我们不销售主机,不提供技术服务。

新手必读
搬瓦工优惠码

NODESEEK2026(优惠 6.77%)

购买时填入即可抵扣。