铸龙用户行为分析系统
铸龙是一款用于分析用户行为事件的 BI 软件。
特点如下
- 事件分析
- 埋点上报
- 漏斗分析
- 留存分析
- 智能路径分析
- 报表,面板管理
- 多平台部署,直接二进制部署无需搭建环境
技术栈主要用
- mysql
- redis
- kafka
- clickhouse
系统组成
- 该系统分为以下四部分
- 埋点上报sdk
- report_server
- sinker
- manager
- 埋点上报sdk: 用于采集埋点信息,目前SDK支持类型
- web
- cocos creator
- egert
- report_server:用于收集sdk上报的信息,并生产消息入kafka
- sinker:消费kafka的埋点消息并入库
- manager:基于入库后的埋点数据进行分析,报表。
部署
下面我们拿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>
- 下载对应操作系统的压缩包,如windows系统则下载win.zip,解压缩后有如下文件
-
- 修改 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的时候,该连接池连接数没有限制
}
}
} -
启动 windows环境 则双击 应用名.exe linux环境则 chmod +x 应用名 && ./应用名
- init_app
显示 “数据已全部初始化完毕!”则为正常启动
- manager
启动后显示下图则为正常启动
report_server
启动后显示下图则为正常启动
- sinker
启动后显示下图则为正常启动
至此,服务端已配置完毕
评论
