Files
novalon-website/docs/LIGHTWEIGHT_MONITORING.md

253 lines
4.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 轻量级监控配置指南
## 📋 监控架构
### 核心组件
1. **Sentry** - 错误监控和性能追踪
2. **UptimeRobot** - 外部可用性监控
3. **Google Analytics** - 用户行为和访问统计
4. **健康检查API** - 内部服务状态
5. **邮件告警** - 关键问题通知
## 🔧 配置步骤
### 1. Sentry 错误监控(已完成)
Sentry 已经集成在项目中,配置文件:
- `src/lib/sentry.ts` - Sentry 初始化
- `.env.production` - Sentry DSN 配置
**功能:**
- JavaScript 错误捕获
- 性能监控
- 用户会话回放
- 错误告警
### 2. UptimeRobot 可用性监控
#### 注册和配置
1. 访问 https://uptimerobot.com/
2. 注册免费账号
3. 创建新的 Monitor
- **Monitor Type**: HTTP(s)
- **URL**: https://www.novalon.cn
- **Monitoring Interval**: 5 minutes
- **Alert Contacts**: ops@novalon.cn
#### 配置告警
在 UptimeRobot 中设置:
- **Down Alert**: 网站不可用时发送邮件
- **Up Alert**: 网站恢复时发送邮件
- **SSL Expiry**: SSL 证书过期提醒
#### 高级配置
```yaml
# 推荐的监控端点
- 主页: https://www.novalon.cn
- 健康检查: https://www.novalon.cn/api/health
- 管理后台: https://www.novalon.cn/admin
```
### 3. Google Analytics 访问统计
#### 获取跟踪 ID
1. 访问 https://analytics.google.com/
2. 创建新的 GA4 属性
3. 复制测量 ID(格式:G-XXXXXXXXXX
#### 配置 Next.js
更新 `.env.production`
```env
NEXT_PUBLIC_GA_MEASUREMENT_ID=G-XXXXXXXXXX
```
#### 集成到应用
创建 `src/lib/analytics.ts`
```typescript
export const GA_MEASUREMENT_ID = process.env.NEXT_PUBLIC_GA_MEASUREMENT_ID;
export const pageview = (url: string) => {
if (typeof window !== "undefined" && GA_MEASUREMENT_ID) {
window.gtag("config", GA_MEASUREMENT_ID, {
page_path: url,
});
}
};
export const event = (action: string, category: string, label?: string) => {
if (typeof window !== "undefined" && GA_MEASUREMENT_ID) {
window.gtag("event", action, {
event_category: category,
event_label: label,
});
}
};
```
`src/app/layout.tsx` 中添加:
```typescript
import Script from 'next/script';
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
<html>
<head>
{process.env.NEXT_PUBLIC_GA_MEASUREMENT_ID && (
<Script
src={`https://www.googletagmanager.com/gtag/js?id=${process.env.NEXT_PUBLIC_GA_MEASUREMENT_ID}`}
strategy="afterInteractive"
/>
)}
</head>
<body>{children}</body>
</html>
);
}
```
### 4. 健康检查 API(已实现)
健康检查端点:`/api/health`
**返回数据:**
```json
{
"status": "healthy",
"timestamp": "2024-01-01T00:00:00Z",
"version": "1.0.0",
"checks": {
"database": "connected",
"uptime": 123456
}
}
```
### 5. 邮件告警配置
#### 简化告警策略
只监控关键问题:
- **服务不可用**(通过 UptimeRobot
- **严重错误**(通过 Sentry
- **数据库连接失败**(通过健康检查)
#### 配置邮件通知
**Sentry 告警配置:**
1. 登录 Sentry Dashboard
2. 进入 Settings → Alerts
3. 创建新的 Alert Rule
- **Issue**: Critical Errors
- **Environment**: Production
- **Frequency**: Immediately
- **Email**: ops@novalon.cn
**UptimeRobot 告警配置:**
- 添加邮件联系人:ops@novalon.cn
- 设置告警频率:立即通知
## 📊 监控指标
### 关键指标
#### 可用性指标
- 网站正常运行时间(目标:> 99.9%)
- 响应时间(目标:< 2秒)
- SSL 证书状态
#### 错误指标
- JavaScript 错误数量
- API 错误率
- 数据库错误
#### 用户指标
- 日活跃用户
- 页面浏览量
- 平均会话时长
- 跳出率
### 告警阈值
| 指标 | 阈值 | 告警级别 |
| ---------- | ------- | -------- |
| 网站可用性 | < 99.9% | Critical |
| 响应时间 | > 3秒 | Warning |
| 错误率 | > 5% | Critical |
| 数据库连接 | 失败 | Critical |
## 🔧 维护和运维
### 日常检查
#### 每日检查
- [ ] 查看 Sentry 错误报告
- [ ] 检查 UptimeRobot 状态
- [ ] 查看关键日志
#### 每周检查
- [ ] 分析 Google Analytics 数据
- [ ] 检查性能趋势
- [ ] 审查安全日志
#### 每月检查
- [ ] 更新依赖包
- [ ] 备份数据库
- [ ] 审查监控配置
### 故障处理流程
#### 1. 网站不可用
1. 检查服务器状态
2. 查看应用日志
3. 重启服务
4. 通知相关人员
#### 2. 错误激增
1. 查看 Sentry 错误详情
2. 分析错误模式
3. 修复关键问题
4. 部署热修复
#### 3. 性能下降
1. 检查服务器资源
2. 分析慢查询
3. 优化数据库
4. 清理缓存
## 📞 联系方式
- **运维告警**: ops@novalon.cn
- **业务咨询**: contact@novalon.cn
## 📚 相关文档
- [生产部署指南](PRODUCTION_DEPLOYMENT.md)
- [错误监控配置](SENTRY_SETUP.md)
- [性能优化指南](PERFORMANCE_OPTIMIZATION.md)