业务背景:小程序推广,不同渠道给到不同的二维码,记录每个渠道的推广数据,主要指标有访问量 拉新数(新用户注册)
思路 1.前端设置埋点记录用户行为
2.后端格式化埋点数据
3.logstash二次格式化数据 取出有用的字段 扔到elasticsearch
4.elasticsearch做聚合查询
之前想着访问量不太 埋点数据直接入库 但是增删改查实在写烦了 而且这种需要+1+1+1的 *** 作还要加锁保证数据的一致性 实在麻烦
安装logstash+elasticsearch就不赘述了 百度都有
首先针对埋点数据格式化 由log4j就可以完成了 json格式输出 方便后续处理
log4j.logger.com.yaoxun.system.service.impl.PointServiceImpl=INFO,POINT log4j.appender.POINT=org.apache.log4j.RollingFileAppender log4j.appender.POINT.DatePattern='.'yyyy-MM-dd log4j.appender.POINT.File=D://logs/point.log log4j.appender.POINT.layout=org.apache.log4j.PatternLayout log4j.appender.POINT.layout.ConversionPattern={"time":"%d{yyyy-MM-dd HH:mm:ss,SSS}","logType":"%p","logInfo":%m}%n
大概是这种格式
{“time”:“2021-12-16 17:56:59,776”,“logType”:“INFO”,“logInfo”:"{“sourceId”:“12132”,“type”:“login”}"}
logstash的config文件夹新增文件point.conf
二次处理log4j日志 取出需要的字段 存入elasticsearch
input { file { path => "/home/tomcat/test8081/apache-tomcat-8.5.57/logs/point*.log" type => "sit_point" codec => "json" } } filter { json { source => "message" add_field => { "javalog" => "%{logInfo}" } } json { source => "javalog" remove_field => [ "logInfo","javalog","logType" ] } } output { elasticsearch { hosts => ["localhost:9200"] index => "%{type}-%{+YYYY.MM.dd}" } }
bin目录下执行
./logstash -f /usr/local/src/logstash-7.0.0/config/point.conf
在elasticsearch大概是这样
数据插入后就可以聚合查询了
curl -XPUT ‘http://localhost:9200/sit_point-2021.12.16/_mapping’ -d ’
{
“properties”: {
“logInfo.type”: {
“type”: “text”,
“fielddata”: true
}
}
}’
curl -H “Content-Type:application/json” -XPOST ‘http://localhost:9200/sit_point-2021.12.16/_search?pretty’ -d ’
{
“aggs”: {
“products_per_tag”: {
“terms”: {
“field”: “logInfo.type”
}
}
},
“size”: 0
}’
最终结果
{
“took” : 1,
“timed_out” : false,
“_shards” : {
“total” : 1,
“successful” : 1,
“skipped” : 0,
“failed” : 0
},
“hits” : {
“total” : {
“value” : 4,
“relation” : “eq”
},
“max_score” : null,
“hits” : [ ]
},
“aggregations” : {
“products_per_tag” : {
“doc_count_error_upper_bound” : 0,
“sum_other_doc_count” : 0,
“buckets” : [
{
“key” : “login”,
“doc_count” : 3
},
{
“key” : “regist”,
“doc_count” : 1
}
]
}
}
}
可以看到 有3次浏览行为 一次注册行为 搞定!!!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)