Some checks failed
Deploy / deploy (push) Has been cancelled
Full-stack web application for Telegram management - Frontend: Vue 3 + Vben Admin - Backend: NestJS - Features: User management, group broadcast, statistics 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
239 lines
5.4 KiB
Markdown
239 lines
5.4 KiB
Markdown
# Sentry 错误监控集成指南
|
||
|
||
## 概述
|
||
|
||
本项目已集成 Sentry 错误监控系统,用于实时监控和追踪 Telegram 管理系统的错误、性能和用户行为。
|
||
|
||
## 功能特性
|
||
|
||
### 1. 自动错误捕获
|
||
- Vue 应用全局错误处理
|
||
- API 请求错误监控
|
||
- WebSocket 连接错误追踪
|
||
- UI 组件错误记录
|
||
|
||
### 2. 性能监控
|
||
- API 请求响应时间
|
||
- 页面加载性能
|
||
- 用户交互延迟
|
||
- 会话重播(Session Replay)
|
||
|
||
### 3. 用户行为追踪
|
||
- 页面访问记录
|
||
- 用户操作行为
|
||
- 任务操作监控
|
||
- 搜索和筛选行为
|
||
|
||
### 4. Telegram 专用监控
|
||
- 任务创建和执行状态
|
||
- 消息发送成功率
|
||
- 目标用户添加监控
|
||
- 引擎状态变化追踪
|
||
|
||
## 配置说明
|
||
|
||
### 环境变量配置
|
||
|
||
#### 开发环境 (`.env.development`)
|
||
```bash
|
||
VUE_APP_SENTRY_DSN=your_development_dsn
|
||
VUE_APP_SENTRY_ENVIRONMENT=development
|
||
VUE_APP_SENTRY_DEBUG=true
|
||
```
|
||
|
||
#### 生产环境 (`.env.production`)
|
||
```bash
|
||
VUE_APP_SENTRY_DSN=your_production_dsn
|
||
VUE_APP_SENTRY_ENVIRONMENT=production
|
||
VUE_APP_SENTRY_DEBUG=false
|
||
```
|
||
|
||
### 采样率配置
|
||
|
||
- **开发环境**: 100% 错误采样,100% 性能监控
|
||
- **生产环境**: 80% 错误采样,10% 性能监控,10% 会话重播
|
||
|
||
## 使用方法
|
||
|
||
### 1. 在组件中手动发送错误
|
||
|
||
```javascript
|
||
// 导入工具函数
|
||
import { sentryUtils, ERROR_TYPES } from '@/config/sentry'
|
||
|
||
// 发送自定义错误
|
||
this.$sentryUtils.captureError(
|
||
new Error('自定义错误消息'),
|
||
ERROR_TYPES.VALIDATION_ERROR,
|
||
{
|
||
component: 'MyComponent',
|
||
userInput: formData
|
||
}
|
||
)
|
||
|
||
// 记录用户行为
|
||
this.$sentryUtils.captureUserAction('button_clicked', {
|
||
buttonName: 'submit',
|
||
formType: 'task_creation'
|
||
})
|
||
```
|
||
|
||
### 2. Telegram 专用监控
|
||
|
||
```javascript
|
||
import telegramSentry, { TASK_STATUSES } from '@/libs/sentryTelegram'
|
||
|
||
// 监控任务创建
|
||
telegramSentry.trackTaskCreation(taskData, result)
|
||
|
||
// 监控任务执行状态
|
||
telegramSentry.trackTaskExecution(taskId, TASK_STATUSES.RUNNING, metrics)
|
||
|
||
// 监控消息发送
|
||
telegramSentry.trackMessageSend(taskId, targetId, success, error)
|
||
|
||
// 监控 Telegram API 错误
|
||
telegramSentry.trackTelegramApiError('sendMessage', error, context)
|
||
```
|
||
|
||
### 3. 设置用户上下文
|
||
|
||
```javascript
|
||
// 在组件 mounted 中设置用户信息
|
||
mounted() {
|
||
this.$sentryUtils.setUser({
|
||
id: this.$store.state.user.id,
|
||
username: this.$store.state.user.name,
|
||
email: this.$store.state.user.email
|
||
})
|
||
}
|
||
```
|
||
|
||
## 错误类型
|
||
|
||
### 通用错误类型
|
||
- `api_error`: API 请求错误
|
||
- `validation_error`: 数据验证错误
|
||
- `network_error`: 网络连接错误
|
||
- `ui_error`: 用户界面错误
|
||
- `websocket_error`: WebSocket 连接错误
|
||
|
||
### Telegram 专用错误类型
|
||
- `task_creation_failed`: 任务创建失败
|
||
- `target_addition_failed`: 目标用户添加失败
|
||
- `message_send_failed`: 消息发送失败
|
||
- `telegram_auth_failed`: Telegram 认证失败
|
||
- `rate_limit_exceeded`: 频率限制超出
|
||
- `invalid_username`: 无效用户名
|
||
- `chat_not_found`: 聊天不存在
|
||
|
||
## 数据隐私
|
||
|
||
### 自动过滤的敏感信息
|
||
- 密码和认证令牌
|
||
- 个人身份信息 (PII)
|
||
- API 密钥和密钥
|
||
|
||
### 发送的上下文信息
|
||
- 用户 ID 和用户名(非敏感)
|
||
- 错误发生的页面和组件
|
||
- API 请求的 URL 和方法
|
||
- 任务和操作的元数据
|
||
|
||
## 监控仪表板
|
||
|
||
### Sentry 仪表板功能
|
||
1. **错误追踪**: 实时错误监控和告警
|
||
2. **性能分析**: API 和页面性能指标
|
||
3. **用户会话**: 用户行为和操作回放
|
||
4. **发布追踪**: 代码发布和错误关联
|
||
|
||
### 关键指标
|
||
- 错误率和错误趋势
|
||
- API 响应时间分布
|
||
- 用户活跃度和操作频率
|
||
- 任务成功率和失败原因
|
||
|
||
## 最佳实践
|
||
|
||
### 1. 错误处理
|
||
```javascript
|
||
try {
|
||
await riskyOperation()
|
||
} catch (error) {
|
||
// 记录错误并提供上下文
|
||
this.$sentryUtils.captureError(error, ERROR_TYPES.API_ERROR, {
|
||
operation: 'riskyOperation',
|
||
userId: this.currentUserId,
|
||
timestamp: new Date().toISOString()
|
||
})
|
||
|
||
// 用户友好的错误提示
|
||
this.$Message.error('操作失败,请稍后重试')
|
||
}
|
||
```
|
||
|
||
### 2. 性能监控
|
||
```javascript
|
||
// 监控长时间运行的操作
|
||
const startTime = Date.now()
|
||
await heavyOperation()
|
||
const duration = Date.now() - startTime
|
||
|
||
if (duration > 3000) {
|
||
this.$sentryUtils.captureMessage('slow_operation', {
|
||
operation: 'heavyOperation',
|
||
duration: duration
|
||
})
|
||
}
|
||
```
|
||
|
||
### 3. 用户体验追踪
|
||
```javascript
|
||
// 记录用户关键操作
|
||
onTaskCreate() {
|
||
this.$sentryUtils.captureUserAction('task_create_started')
|
||
// ... 任务创建逻辑
|
||
}
|
||
```
|
||
|
||
## 故障排除
|
||
|
||
### 常见问题
|
||
|
||
1. **Sentry 事件未发送**
|
||
- 检查 DSN 配置是否正确
|
||
- 确认网络连接正常
|
||
- 查看浏览器控制台错误
|
||
|
||
2. **采样率过低**
|
||
- 调整环境变量中的采样率设置
|
||
- 开发环境建议设置为 100%
|
||
|
||
3. **敏感信息泄露**
|
||
- 检查 beforeSend 过滤规则
|
||
- 避免在错误上下文中包含敏感数据
|
||
|
||
### 调试模式
|
||
|
||
开发环境启用调试模式:
|
||
```javascript
|
||
// 在 .env.development 中设置
|
||
VUE_APP_SENTRY_DEBUG=true
|
||
```
|
||
|
||
## 更新和维护
|
||
|
||
### 定期检查
|
||
- 每月检查错误趋势和新增错误类型
|
||
- 定期清理过期的任务指标数据
|
||
- 更新错误过滤规则
|
||
|
||
### 配置优化
|
||
- 根据实际使用情况调整采样率
|
||
- 优化错误分组和标签系统
|
||
- 完善用户上下文信息
|
||
|
||
## 技术支持
|
||
|
||
如有技术问题或需要配置支持,请联系开发团队或查看 Sentry 官方文档。 |