铸龙用户行为分析系统

联合创作 · 2023-10-01 23:25

铸龙是一款用于分析用户行为事件的 BI 软件。

特点如下

  • 事件分析
  • 埋点上报
  • 漏斗分析
  • 留存分析
  • 智能路径分析
  • 报表,面板管理
  • 多平台部署,直接二进制部署无需搭建环境

技术栈主要用

  • mysql
  • redis
  • kafka
  • clickhouse
系统组成
  • 该系统分为以下四部分
  1. 埋点上报sdk
  2. report_server
  3. sinker
  4. manager
  • 埋点上报sdk: 用于采集埋点信息,目前SDK支持类型
  1. web
  2. cocos creator
  3. egert
  • report_server:用于收集sdk上报的信息,并生产消息入kafka
  • sinker:消费kafka的埋点消息并入库
  • manager:基于入库后的埋点数据进行分析,报表。
部署

部署文件下载地址为 https://gitee.com/cynthia520/xwl_bi/releases/v1.0.0

  1. 下载sdk.zip,解压缩 如下图所

下面我们拿web为例子 步骤如下

1. 打开web文件夹后有如下js文件

<script type="text/javascript" src="report_sdk.js" ></script>
<script type="text/javascript" >

	let parmas = {"appid":"********","appkey":"********"}
	let eventReport = new EventReport("http://127.0.0.1:8091", parmas["appid"], parmas["appkey"], 0)
	eventReport.track("访问铸龙BI文档",{feeling:"Hello World!"})

</script>
  1. 下载对应操作系统的压缩包,如windows系统则下载win.zip,解压缩后有如下文件企业微信截图_16431016173979.png

    • 修改 config文件夹下的config.json

    具体配置项解释如下

    {
      "manager": {							    //bi管理系统配置模块
        "port": 8090, 						               //启动端口
        "jwtSecret": "1340691923@qq.com",		     //jwt密钥
        "deBug": true						                 //是否为调试模式 ,非调试模式会调用浏览器打开bi访问地址
      },
      "report": {							        //上报服务模块
        "reportPort":8091,					             //启动端口
        "readTimeout":20,					               //读超时时间,单位(秒)(不填则不受限制)
        "writeTimeout":20,					             //写超时时间,单位(秒)(不填则不受限制)
        "maxConnsPerIP":100000,				           //每个IP允许的最大并发客户端连接数(不填则不受限制)
        "maxRequestsPerConn":100000,		         //每个连接服务的最大请求数(不填则不受限制)
        "idleTimeout":20,					               //等待消息的最长时间,如果为零,则使用readTimeout的值。
        "userAgentBanList":["mpcrawler"]		     //不允许访问的userAgent请求头 , 例如 demo中的 mpcrawler 是微信小程序机器人的 userAgent
      },
      "sinker": {							        //sinker模块
        "reportAcceptStatus":{				           //上报数据状态入库(入库 CK)
          "bufferSize": 999,  					         //入库批次数量
          "flushInterval": 2					           //入库轮循间隔时间(秒)
        },
        "reportData2CK":{					               //上报数据入库(入库 CK)
          "bufferSize": 1000,				           	//入库批次数量
          "flushInterval": 2					          //入库轮循间隔时间(秒)
        },
        "realTimeWarehousing":{				         //实时数据入库(入库 ES)
          "bufferSize": 1000,					         //入库批次数量
          "flushInterval": 2					         //入库轮循间隔时间(秒)
        },
        "pprofHttpPort": 8093				           //pprof性能检测端口
      },
      "comm": {							  //公用模块
        "log": {								     //日志模块
          "storageDays":4,					     //存放天数
          "logDir":"logs"						     //存放目标文件夹
        },
        "mysql": {							     //mysql模块
          "username":"root",					   //用户名
          "pwd":"123456",					       //密码
          "ip":"127.0.0.1",					     //ip
          "port":"3306",						     //端口
          "dbName":"lyn_bi",					   //数据库名
          "maxOpenConns":10,				     //连接池最大打开数
          "maxIdleConns":10					     //连接池初始化闲置数
        },
        "clickhouse": {						  //clickhouse模块
          "username":"default",				   //用户名 没有则不填
          "pwd":"EtHnvllx",					     //密码 没有则不填
          "ip":"127.0.0.1",						  //IP
          "port":"9000",						    //端口
          "dbName":"default",					  //数据库名
          "clusterName":"perftest_3shards_1replicas",	//集群名 单机CK则不填
          "macrosShardKeyName":"share",				//metrika.xml 的share key名 单机CK则不填
    
          //例如:  <macros>
          //<share>1</share>
          // <replica>192.168.1.236</replica>
          //</macros>                 
          //则 macrosShardKeyName 填share
    
          "macrosReplicaKeyName":"replica",	//metrika.xml 的replica key名 单机CK则不填
    
          "maxOpenConns":100,	              //连接池最大打开数
          "maxIdleConns":1000	              //连接池初始化闲置数
        },
        "kafka": { 										         //kakfa 模块
          "addresses":["127.0.0.1:9092"],		          //访问地址
          "username":"",									            //用户名
          "password":"",									            //密码
          "numPartitions":300,								        //初始化 埋点数据topic分区数
          "debugDataTopicName": "debugDataTopicName",	//测试模式下 测试埋点数据的topic名
          "debugDataGroup": "debugDataGroup",			    //测试模式下 测试埋点数据的消费者组名
          "reportTopicName": "test005",						    //埋点数据的topic名
          "reportData2CKGroup": "reportData2CKGroup2", //埋点数据的消费者组名(入库 CK)
          "realTimeDataGroup": "realTimeDataGroup2",	//实时数据的消费者组名(入库 ES)
          "producer_type":"async",							      //kafka生产者类型  async 为异步模式  sync 为同步模式 ,不填为async
        },
        "redis": {										       //redis模块
          "addr":"127.0.0.1:6379",							       //访问地址
          "passwd":"",									               //密码
          "db": 7,										                 //库名
          "maxIdle": 300,									             //连接池初始化闲置数
          "maxActive": 0									             //连接池所能分配的最大的连接数目 ,当设置成0的时候,该连接池连接数没有限制
    
        }
      }
    }
  2. 启动 windows环境 则双击 应用名.exe linux环境则 chmod +x 应用名 && ./应用名

    • init_app

    显示 “数据已全部初始化完毕!”则为正常启动

    • manager

    启动后显示下图则为正常启动

    report_server

    启动后显示下图则为正常启动

    • sinker

    启动后显示下图则为正常启动

    至此,服务端已配置完毕

 

浏览 5
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报