{"id":19528979,"url":"https://github.com/lianjiatech/fee","last_synced_at":"2025-04-12T18:41:05.355Z","repository":{"id":37742758,"uuid":"155170380","full_name":"LianjiaTech/fee","owner":"LianjiaTech","description":"灯塔开源文档地址","archived":false,"fork":false,"pushed_at":"2022-03-10T13:07:40.000Z","size":28824,"stargazers_count":876,"open_issues_count":7,"forks_count":203,"subscribers_count":39,"default_branch":"master","last_synced_at":"2025-04-03T20:12:03.155Z","etag":null,"topics":["javascript","monitor","nodejs"],"latest_commit_sha":null,"homepage":"https://aa978563552.github.io/FEE-doc/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LianjiaTech.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}},"created_at":"2018-10-29T07:34:36.000Z","updated_at":"2025-03-24T01:43:37.000Z","dependencies_parsed_at":"2022-07-14T00:50:39.876Z","dependency_job_id":null,"html_url":"https://github.com/LianjiaTech/fee","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/LianjiaTech%2Ffee","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LianjiaTech%2Ffee/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LianjiaTech%2Ffee/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LianjiaTech%2Ffee/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LianjiaTech","download_url":"https://codeload.github.com/LianjiaTech/fee/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248616488,"owners_count":21134088,"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":["javascript","monitor","nodejs"],"created_at":"2024-11-11T01:21:16.363Z","updated_at":"2025-04-12T18:41:05.335Z","avatar_url":"https://github.com/LianjiaTech.png","language":"JavaScript","readme":"\n# 灯塔\n\n## 介绍\n**fee（灯塔）** 是前端监控系统，贝壳找房主要前端监控系统，服务公司上百条产品线。\n特点：**架构简单、轻量、支持私有化部署**。可收集前端**设备、系统、环境**信息，\n可以对前端**页面js报错、资源错误、性能指标**进行配置报警等，\n并且可以通过上报错误信息引导用户快速定位解决问题。\n\n## 系统功能\n\n### 用户行为\n\n- 用户在线时长\n\n![在线时长](./client/src/assets/github/1.0/onlineTime.png)\n\n- 菜单点击量\n\n![菜单点击量](./client/src/assets/github/1.0/menuClick.jpg)\n\n- 用户增长\n\n![用户增长](./client/src/assets/github/1.0/userGrowth_01.jpg)\n![用户增长](./client/src/assets/github/1.0/userGrowth_02.jpg)\n\n### 异常监控\n\n- 页面性能\n\n![页面性能](./client/src/assets/github/1.0/perf_01.jpg)\n![页面性能](./client/src/assets/github/1.0/perf_02.jpg)\n\n- 错误看板\n\n![错误看板](./client/src/assets/github/1.0/error.jpg)\n\n### 报警\n\n- 报警配置\n\n![报警配置](./client/src/assets/github/1.0/alarmConfig.jpg)\n\n- 报警日志\n\n![报警日志](./client/src/assets/github/1.0/alarmLog.jpg)\n\n## 环境搭建\n\n**下述`mysql`以及`redis`环境的搭建，大家可以移步配套 [Docker集成环境一键部署](https://github.com/alphawq/Fee-dev-docker)（欢迎大家`star`）。可以帮助大家一键创建相关服务环境，免去繁琐的环境部署与配置给大家带来的不必要的时间开销！**\n1. [mysql](https://www.mysql.com/)\n2. [Node.js](http://nodejs.cn/)\n3. [redis](https://redis.io/)\n4. 克隆项目 在克隆项目之前确保你的`nodejs`、`mysql`和`redis`环境是可用的。\n   ```bash\n    mkdir -p ~/www/ \\\n    \u0026\u0026  cd ~/www/ \\\n    \u0026\u0026  git clone git@github.com:LianjiaTech/fee.git \\\n    \u0026\u0026  cd fee\n    ```\n    在`~/www/openfee`找到我们克隆的项目\n    \n5. 配置MySQL\n- 在`server/src/configs/mysql.js`中修改主机地址/数据库端口/数据库用户名/数据库密码/数据库库名\n- 在数据库中创建一个空的名字叫做『`platform`』的数据库。\n    ```javascript\n    const development = {\n      host: '127.0.0.1', // 主机地址\n      port: '3306', // 数据库端口\n      user: 'root', // 数据库用户名\n      password: '00000000', // 数据库密码\n      database: 'platform'  // 数据库库名\n    }\n    ```\n6. 配置`redis`\n- 在`server/src/configs/redis.js`中修改主机地址或`redis`端口\n    ```javascript\n    // 开发环境配置\n    const development = {\n      host: '127.0.0.1', // 主机地址\n      port: '6379' // redis端口\n    }\n    ```\n7. 安装依赖，在项目 `server` 目录下\n    ```javascript\n    npm install\n    ```\n8. 编译 `server`，打开一个新的**窗口**在项目 `server` 目录下\n    ```javascript\n    npm run watch\n    ```\n9. 启动`server`服务，在项目 `server` 目录下\n    ```javascript\n    npm run dev\n    ```\n10. 创建数据库\n  - a. 在项目 `server` 目录下执行下列指令，会在当前目录下生成 `init.sql` 文件\n    ```javascript\n    npm run fee Utils:GenerateSQL 1 '2020-01' '2020-07' \u003e init.sql\n    ```\n  - b. 复制 `init.sql`中的内容（**不包括文件中的前两行**），完成数据库表的创建。\n\n11. 初始化样例数据。在项目 `server` 目录下，执行下列指令\n    ```javascript\n    npm run fee Utils:TemplateSQL\n    ```\n    执行成功后，样例数据会被写入数据库中。\n\n12. 安装 `Client` 依赖，在项目 `client` 目录下\n    ```javascript\n    npm install\n    ```\n13. 启动 `Client` 服务，在项目 `client` 目录下\n    ```javascript\n    npm run dev\n    ```\n\n14. 访问本地服务: `127.0.0.1:8080`\n- a. 使用默认管理员账户登录\n  - 账号：test@qq.com\n  - 密码：admin\n- b. 或进行**注册**、**登录**，就能看到模板项目数据了。\n\n### npm依赖插件说明\n\n```javascript\ndependencies =\u003e\n\nmysql           =\u003e  mysql客户端\nioredis         =\u003e  redis客户端\nknex            =\u003e  SQL Query Builder\n@adonisjs/ace   =\u003e  命令注册/管理工具\nnode-schedule   =\u003e  node版crontab, 用于进程调度\nlog4js          =\u003e  日志记录\nlei-stream      =\u003e  流式读取/写入文件. 对node的ReadStream/WriteStream的简单封装\nquery-string    =\u003e  解析url\nua-parser-js    =\u003e  解析ua\naxios           =\u003e  发起http请求\nshelljs         =\u003e  执行常见shell命令, 例如, mkdir -p\ndate-fns@next   =\u003e  替代moment进行日期操作, 目前2.0版本还处于alpha状态, 待正式发布后即可取消@next标记\nini             =\u003e  读取线上环境的ini配置文件\nipip-datx       =\u003e  将ip转换为对应坐标, ipip.net出品\n\ndevDependencies =\u003e\n\nnode-rdkafka                =\u003e  获取kafka数据, 如果node-kafka无法运行, 考虑本机中是否有librdkafka库 =\u003e `sudo apt-get install librdkafka-dev` \u0026 本机是否安装了Python2.7\n                            =\u003e  说明: node-rdkafka需要使用gcc进行编译, 但Jinkins上没有相应的编译脚本, 为了能从Jinkins上编译通过, 将`node-rdkfka`放在了dev依赖中.\n                            =\u003e  线上发布时, 直接把预编译好的tar文件解压到node_module文件夹里, 跳过gcc编译流程(开发机环境和线上环境一致, 因此使用开发机进行预编译)\n                            =\u003e  预编译时需要使用和线上node一致的版本\n                            =\u003e  打包命令demo =\u003e `tar cfv  pre_package.tar.gz node-rdkafka nan bindings`\n                            =\u003e  打包完成后使用 `sz node-rdkafka.tar.gz` 即可将文件下载到本机\n\n@babel/*                    =\u003e  7.0系列, 方便脱离对node环境的依赖, 使用js的最新特性\nbabel-plugin-root-import    =\u003e  解除对相对路径的依赖(项目中通过webpack.config.js(WebStrom) \u0026 jsconfig.json(VSCode)辅助编辑器识别路径)\nnodemon                     =\u003e  动态启动/载入项目\nstandard                    =\u003e  JS Standard代码规范\n```\n## 打点服务Demo搭建\n参见\u003ca href=\"https://github.com/LianjiaTech/fee/blob/master/KAFKA_DEMO.md\" target=\"_blank\" style=\"font-size:14px\"\u003e打点服务Demo搭建\u003c/a\u003e\n\n## 加入群来和开发人员讨论问题\n\n\u003cimg src=\"./client/src/assets/github/qq.jpeg\" width=\"180\" height=\"250\"/\u003e\n\n# 作者书籍\n\n项目搭建背景，以及前端监控平台搭建原理，设计思路，一步一步教你做。\n\n\u003cimg src=\"./client/src/assets/github/book.jpg\" width=\"400\" height=\"450\"/\u003e\n\n\u003ca href=\"https://item.jd.com/12639273.html\" target=\"_blank\" style=\"font-size:14px\"\u003e购书链接\u003c/a\u003e\n\n## License\n\n[MIT](http://opensource.org/licenses/MIT)\n\nCopyright(c) 2017 Lianjia, Inc. All Rights Reserved\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flianjiatech%2Ffee","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flianjiatech%2Ffee","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flianjiatech%2Ffee/lists"}