Asion168-web-monitor/
├── backend-midway/ # MidwayJS 后端(推荐)
│ ├── src/
│ │ ├── controller/ # API 控制器
│ │ ├── service/ # 业务服务
│ │ ├── entity/ # MongoDB 实体
│ │ └── config/ # 配置文件
│ ├── docker-compose.yml
│ └── package.json
├── backend-springboot/ # Spring Boot 后端
│ ├── src/
│ │ └── main/java/com/monitor/
│ ├── docker-compose.yml
│ └── pom.xml
├── frontend/ # Vue3 管理端
│ ├── src/
│ │ ├── views/ # 页面组件
│ │ ├── api/ # API 接口
│ │ └── router/ # 路由配置
│ └── package.json
├── sdk/ # 监控 SDK
│ ├── src/
│ │ ├── index.ts # Web 版 SDK
│ │ ├── miniprogram.ts # 小程序版 SDK
│ │ ├── vue.ts # Vue 插件
│ │ ├── react.ts # React 插件
│ │ └── svelte.ts # Svelte 插件
│ ├── examples/ # 使用示例(包含 Web、JSP、PHP、Vue、React、Svelte、小程序等测试工程)
│ └── package.json
└── README.md
# 克隆项目
git clone https://gitee.com/luneng17hao/asion168-web-monitor.git
或 git clone https://github.com/luneng7hao/asion168-web-monitor.git
cd asion168-web-monitor
# 启动后端服务(包含数据库)
cd backend-midway
docker-compose up -d
# 安装依赖并启动应用
npm install
npm run dev
后端服务将在 http://localhost:3000 启动
cd backend-springboot
docker-compose up -d
后端服务将在 http://localhost:3001 启动
cd frontend
npm install
npm run dev
前端管理端将在 http://localhost:5173 启动
使用 Docker Compose 启动数据库:
cd backend-midway
docker-compose up -d mongodb influxdb redis elasticsearch
或手动安装并启动:
修改 backend-midway/src/config/config.default.ts:
export default {
// MongoDB 配置
typegoose: {
dataSource: {
default: {
uri: 'mongodb://localhost:27017/monitor',
},
},
},
// InfluxDB 配置
influxdb: {
host: 'localhost',
port: 8086,
database: 'monitor',
},
// Redis 配置
redis: {
clients: {
default: {
host: 'localhost',
port: 6379,
},
},
},
}
# 后端
cd backend-midway
npm install
npm run dev
# 前端
cd frontend
npm install
npm run dev
cd sdk
npm install
npm run build
在项目中引入:
import Monitor from '@asion168/monitor-sdk'
const monitor = new Monitor({
apiUrl: 'http://localhost:3000/api',
projectId: '001', // 默认项目ID
userId: 'user-123' // 可选
})
// 自动开始监控
monitor.init()
import { createApp } from 'vue'
import App from './App.vue'
import { VueMonitor } from '@asion168/monitor-sdk/vue'
const app = createApp(App)
app.use(VueMonitor, {
apiUrl: 'http://localhost:3000/api',
projectId: '001'
})
app.mount('#app')
import React from 'react'
import { ReactMonitor } from '@asion168/monitor-sdk/react'
function App() {
ReactMonitor.init({
apiUrl: 'http://localhost:3000/api',
projectId: '001'
})
return <div>Your App</div>
}
import MiniProgramMonitor from '@asion168/monitor-sdk/miniprogram'
MiniProgramMonitor.init({
apiUrl: 'http://localhost:3000/api',
projectId: '001'
})
项目提供了多个测试工程,方便快速上手和测试:
examples/web/ - 原生 JavaScript 测试工程(适用于 HTML、JSP、PHP 等传统 Web 应用)examples/jsp/ - JSP 测试工程,演示如何在 JSP 项目中集成监控 SDKexamples/php/ - PHP 测试工程,演示如何在 PHP 项目中集成监控 SDKexamples/vue3/ - Vue 3 测试工程examples/vue2/ - Vue 2 测试工程examples/react/ - React 测试工程examples/svelte/ - Svelte 测试工程examples/miniprogram/ - 微信小程序测试工程,演示小程序监控 SDK 的使用每个测试工程都包含:
更多示例请查看 sdk/examples 目录。
| 数据类型 | 存储方式 | 说明 |
|---|---|---|
| 错误详情 | MongoDB | 错误堆栈、上下文、聚合信息 |
| 性能数据 | InfluxDB | 时序数据,便于趋势分析 |
| 用户行为 | InfluxDB | PV/UV、点击等时序统计 |
| 接口监控 | InfluxDB | 响应时间、成功率时序数据 |
| 统计缓存 | Redis | Dashboard、统计数据缓存 |
| 实时计数 | Redis | 今日错误数、PV/UV 实时计数 |
| 监控日志 | Elasticsearch | 日志查询和分析 |
系统默认使用单项目模式,所有数据使用项目ID 001。如需多项目支持,可以修改后端代码。
后端环境变量配置:
# MongoDB
MONGO_URI=mongodb://localhost:27017/monitor
# InfluxDB
INFLUXDB_HOST=localhost
INFLUXDB_PORT=8086
INFLUXDB_DATABASE=monitor
# Redis
REDIS_HOST=localhost
REDIS_PORT=6379
# Elasticsearch
ELASTICSEARCH_NODE=http://localhost:9200
我们欢迎所有形式的贡献!
git checkout -b feature/AmazingFeature)git commit -m 'Add some AmazingFeature')git push origin feature/AmazingFeature)查看 CHANGELOG.md 了解版本更新历史。
A: 当前版本为单项目模式,所有数据使用项目ID 001。如需多项目支持,需要修改后端代码,添加项目管理和数据隔离逻辑。
A: 错误详情存储在 MongoDB,性能和行为数据存储在 InfluxDB,缓存数据存储在 Redis,日志数据存储在 Elasticsearch。
A: 可以使用数据清理接口或直接操作数据库。MidwayJS 后端提供了 /api/data-cleanup/clear-all 接口。
A: SDK 支持所有现代浏览器(Chrome、Firefox、Safari、Edge 等),需要支持 ES6+ 和 Promise。
本项目采用 MIT 许可证。
感谢所有为这个项目做出贡献的开发者!
如果这个项目对你有帮助,请给一个 ⭐ Star
Made with ❤️ by Asion168