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 部署简单快捷,可以同时监控多种协议的服务,并提供美观的公开状态页面。如果需要更现代的状态页面方案,可以参考 Gatus 或 Cachet。
选购搬瓦工 VPS 请查看 全部方案,购买时使用优惠码 NODESEEK2026 可享受 6.77% 的折扣,通过 bwh81.net 进入官网购买。