{"id":13623060,"url":"https://github.com/wangweianger/zanePerfor","last_synced_at":"2025-04-15T10:32:26.709Z","repository":{"id":41081467,"uuid":"148773581","full_name":"wangweianger/zanePerfor","owner":"wangweianger","description":"前端性能监控系统,消息队列,高可用,集群等相关架构","archived":false,"fork":false,"pushed_at":"2024-06-27T03:45:02.000Z","size":6421,"stargazers_count":1775,"open_issues_count":37,"forks_count":425,"subscribers_count":46,"default_branch":"master","last_synced_at":"2025-04-11T19:56:14.636Z","etag":null,"topics":["egg","kafka","mongodb","nodejs","redis","vuejs2"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wangweianger.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-09-14T10:27:01.000Z","updated_at":"2025-04-10T16:26:46.000Z","dependencies_parsed_at":"2022-08-03T12:20:42.358Z","dependency_job_id":"62da8714-b020-465d-966b-44d93f2c3efd","html_url":"https://github.com/wangweianger/zanePerfor","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wangweianger%2FzanePerfor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wangweianger%2FzanePerfor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wangweianger%2FzanePerfor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wangweianger%2FzanePerfor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wangweianger","download_url":"https://codeload.github.com/wangweianger/zanePerfor/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248950445,"owners_count":21188269,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["egg","kafka","mongodb","nodejs","redis","vuejs2"],"created_at":"2024-08-01T21:01:27.648Z","updated_at":"2025-04-15T10:32:25.804Z","avatar_url":"https://github.com/wangweianger.png","language":"JavaScript","readme":"# zanePerfor一款完整、高性能、高可用的前端性能监控和统计平台\n\n[![Node](https://img.shields.io/badge/node-8.9.0~10.15.1-green.svg?style=plastic)](https://nodejs.org/en/)\n[![Vue](https://img.shields.io/badge/vue-2.0+-blue.svg?style=plastic)](https://cn.vuejs.org/)\n[![Egg](https://img.shields.io/badge/egg-2.0-green.svg?style=plastic)](https://eggjs.org/)\n[![Mogodb](https://img.shields.io/badge/mogodb-4.0+-brightgreen.svg?style=plastic)](https://www.mongodb.com/)\n[![Redis](https://img.shields.io/badge/redis-5.0+-green.svg?style=plastic)](https://redis.io/)\n\n## 开发功能进度说明\n\u003e\n\u003e * 集成框架选型及其相关配置（已完成）\n\u003e * 主重数据库相关配置开发（已完成）\n\u003e * web网页sdk开发（已完成）\n\u003e * web端数据库数据后端存储逻辑开发 （已完成）\n\u003e * web端网站性能数据，错误信息，资源加载信息后台逻辑开发（定时任务：已完成）\n\u003e * web端网站PV,UV,IP统计开发（定时任务：已完成）\n\u003e * ip地址库存储逻辑(多种缓存策略：本地文件缓存，redis缓存，mongodb缓存)（已完成）\n\u003e * web端上报脚本开发（已完成）\n\u003e * 分城市统计性能逻辑开发（已完成）\n\u003e * 浏览器端后台cms界面开发（已完成）\n\u003e * 微信小程序sdk开发 （已完成）\n\u003e * 微信小程序相关后端逻辑开发 （已完成）\n\u003e * 微信小程序后台cms界面开发（已完成）\n\u003e * 微信分城市统计性能逻辑开发（已完成）\n\u003e * 用户行为漏斗分析 即用户行为分析（已完成）\n\u003e * TOP性能统计（已完成）\n\u003e * 省市流量统计热力图分析（已完成）\n\u003e * 上报方式新增redis 消息队列（已完成）\n\u003e * 索引优化（已完成）\n\u003e * Mongodb副本集读写分离开发（已完成）\n\u003e * 数据库分表（即分集合）针对于apges,ajaxs,errors,resource,enviroment大数据量表分表，不同应用存储到不同的表中（已完成）\n\u003e * Mongodb集群配置 （已完成）\n\u003e * github第三方登录 （已完成）\n\u003e * 新浪微博第三方登录 （已完成）\n\u003e * 微信授权第三方登录 （已完成）\n\u003e * Mongodb集群分片开发（已完成）\n\u003e * 项目性能优化（已完成）\n\u003e * 邮件触发服务开发（已完成)\n\u003e * 每日日报邮件发送（已完成）\n\u003e * 页面后续操作过程中出现的Error错误、Ajax性能、资源加载的上报（已完成）\n\u003e * 所有预警相关业务开发（开发中）\n\u003e * Kafka消息队列的引入和使用 （已完成）\n\u003e * 应用突破历史流量峰值时触发邮件通知、开发流量预警功能（已完成）\n\u003e * 用户访问实时消费流量统计功能(ajax，页面，资源)（已完成)\n\n## 使用\n\n简单尝试推荐使用 Docker 运行\n\n### 1. 安装 Docker\n\nDocker 官网：\u003chttps://www.docker.com/\u003e\n\ndocker 官网中下载适合自己系统得 Docker 进行安装。\n\n* 验证 Docker 是否安装成功\n\n```ts\nDocker --version\n```\n\n### 2. 推荐安装 Docker Desktop\n\nDocker 安装成功之后，推荐安装 Docker Desktop\n\nDesktop 安装地址：\u003chttps://www.docker.com/products/docker-desktop/\u003e\n\n### 3. 安装 docker-compose\n\ndocker-compose 下载地址：\u003chttps://github.com/docker/compose/releases\u003e\n\n* 在 Assets 中下载对应的解压包\n\n* 验证是否安装成功\n\n```ts\ndocker-compose --version\n```\n\n### 4. 下载代码到本地\n\n```ts\ngit clone git@github.com:wangweianger/zanePerfor.git\n```\n\n### 5.修改 start-docker-compose.sh 里的 hostIP 为内网 IP\n\n⚠️ 不能是 `127.0.0.1` 或 `localhost`\n\n* 获取 IP 地址方式\n\n\u003e cmd 窗口中运行 ipconfig, IPv4 地址即内网 IP\n\n### 6. 启动 docker-compose\n\n\u003e 方式一：\n\n```sh\n# 项目所在目录\n./start-docker-compose.sh\n```\n\n\u003e 方式二\n\n```sh\nexport hostIP='自己的内网IP' \u0026\u0026 docker-compose up -d --build\n```\n\n### 6.启动 web 开发环境\n\n```sh\n# 安装依赖\nyarn install\n\n# 启动本地服务\nyarn dev\n```\n\n## 发布生产\n\n维护生产环境配置文件 `./config/config.prod.js`\n\n```ts\nyarn start\n```\n\n## 项目开发文档\n\n* [zanePerfor是什么?](https://github.com/wangweianger/zanePerfor/blob/master/docs/index.md)\n* [zanePerfor在高流量高并发项目下的架构配置建议实践说明](https://juejin.cn/post/6844903815255179272)\n* [系统高可用之Mongodb集群分片架构](https://juejin.cn/post/6844903714369568782)\n* [系统高可用之Mongodb副本集读写分离架构](https://juejin.cn/post/6844903713715273742)\n* [github 登录授权说明](https://github.com/wangweianger/zanePerfor/blob/master/docs/github.md)\n* [zanePerfor中集成kafka的开发实践和限流优雅降级](https://juejin.cn/post/6844903766139879438)\n\n## 项目说明\n\n* 项目已部署到正式环境，并已稳定运行一段时间，请放心使用。\n* 前期推荐使用单机数据库或者Mongodb副本集架构，后期根据自身需求考虑是否使用集群分片\n* 目前4核8G单机服务器大概能支撑每日50-100W的pv,8核16G单机服务器可支撑100W-500W的PV流量\n* 如果项目日PV超千万，需要Redis集群,Mongodb集群分片的部署方式\n* 项目后台查询性能增加合适的索引之后，千万以上的数据量可在100ms-2s之内查询出来，平均100-300ms(单机/副本集)\n\n## 浏览器端使用说明\n\n### 方式一\n\n在管理后台创建项目之后有详细的使用文档，参考使用即可。\n\n### 方式二\n\n* 使用SDK方式上报数据\n\n```js\n// install\nyarn add web-report\n\n// 使用\nimport { Performance, axiosReport, defaultReport, fetchReport, jqueryReport } from 'web-report'\n\ndefaultReport({\n    domain:'http://report.com/api/v1/report/web',\n    add:{\n        appId:'D3D9B9AA45B56F6E424F57EFB36B0XXX',\n    }\n})\n```\n\n* web-report SDK详细文档: \u003chttps://github.com/wangweianger/web-report-sdk\u003e\n\n* 附加： [vue 项目使用参考文档](./docs/vue.md)\n\n## 微信小程序端使用说明\n\n* 管理后台创建项目后下载sdk，引入到小程序的 app.js 最顶部\n\n```js\n// 微信小程序 app.js头部引入sdk\nconst wxRepotSdk = require('./utils/wx-report-sdk.min');\n\nnew wxRepotSdk({\n    domain:'http://test.com',\n    add:{\n        appId:'56F6E424F57EFB36B0XXX'\n    }\n})\n```\n\n* wx-report-sdk SDK详细文档：\u003chttps://github.com/wangweianger/wx-report-sdk\u003e\n\n## 展示效果\n\n![](https://github.com/wangweianger/zanePerfor/blob/master/demo/01.png \"\")\n![](https://github.com/wangweianger/zanePerfor/blob/master/demo/02.png \"\")\n![](https://github.com/wangweianger/zanePerfor/blob/master/demo/03.png \"\")\n![](https://github.com/wangweianger/zanePerfor/blob/master/demo/04.png \"\")\n![](https://github.com/wangweianger/zanePerfor/blob/master/demo/09.png \"\")\n![](https://github.com/wangweianger/zanePerfor/blob/master/demo/012.png \"\")\n","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwangweianger%2FzanePerfor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwangweianger%2FzanePerfor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwangweianger%2FzanePerfor/lists"}