网站首页 > 技术文章 正文
数据收集的方案
收集的方式:通过在客户端嵌入SDK的方式收集用户行为数据(SDK:一段收集数据的代码,放到客户端)
以事件作为数据收集的最小单位,当用户在系统或者APP上触发定义的事件的时候,产生数据,SDK将产生的数据发送到Nginx服务器上(通过url发送)
js sdk的事件(模拟前端)
launch事件:标识访客第一次访问的事件
pageView事件:标识用户浏览页面的事件
event事件:包容性最强的事件
chargeRequest事件:标识订单产生事件
找到我们的项目中的文件analytics.js,阅读分析下
修改这个地址
部署启动访问
http://localhost:8080/sdk_test/
后台监控nginx的日志
点击页面
观察后台日志,有新的日志出现
java sdk的事件(模拟后端)
chargeSuccess事件:标识订单支付成功事件
chargeRefund事件:标识订单退款事件
修改机器IP
启动主方法
同样检测nginx日志,发现日志也在读取
这就是模拟前后端的日志采集,但是目前日志显示不是很清晰,这就需要我们修改nginx的日志产生格式了
修改linux中nginx日志产生的格式
$remote_addr ---- ip地址
$msec ----访问时间,时间戳,毫秒
$request_uri ---用户请求参数,从客户端捕获到的用户行为数据都会封装到这个字段里
$remote_addr^A$msec^A$request_uri
同时将下面的日志生成目录放开
access_log logs/access.log main;
sbin/nginx -t 检测nginx.conf是否配置ok
定义好后重启Nginx服务器
sbin/nginx -s reload
我们重新点击页面采集下数据
查看日志的变化
我们可以将项目部署到虚拟机中使用
我们再虚拟机中准备一个Tomcat
解压
tar -zxvf apache-tomcat-8.5.24.tar.gz -C /opt/bigdata/
将项目打包sdk_test.war
将sdk_test.war拷贝到Tomcat下webapps目录
cp sdk_test.war /opt/bigdata/apache-tomcat-8.5.24/webapps/
启动tomcat
bin/startup.sh
重新查看webapps,多了sdk_test
在浏览器访问
http://masterhbase:8080/sdk_test/demo.html
点击demo,后台日志也可以出现
数据上传
(1)shell脚本发送日志数据(日志量较小)
(2)flume上传到hdfs(日志量较大)
shell脚本发送日志数据
在nginx目录下创建一个目录:mkdir scripts
创建脚本:vim cut_nginx_log.sh
授权chmod 755 cut_nginx_log.sh
一些命令
date +"%Y%m%d" 今天的日期
date -d "1 day ago" +"%Y%m%d" 昨天的日期
date -d "-1 day" +"%Y%m%d" 昨天的日期
编写脚本
#!/bin/bash
#获取昨天日期
YESTERDAY=$(date -d "1 day ago" +"%Y%m%d")
#定义日志目录
DATALOG=/opt/bigdata/nginx-1.12.2/logs
#切割昨天的日志
/bin/mv ${DATALOG}/access.log ${DATALOG}/access_${YESTERDAY}.log
#重启Nginx服务器生产access.log文件
/opt/bigdata/nginx-1.12.2/sbin/nginx -s reload
执行下脚本,没出现问题
我们查看日志,已经被切割了
可以定义一个crontab定时任务
crontab -e
00 00 * * * /opt/bigdata/nginx-1.12.2/scripts/cut_nginx_log.sh
创建脚本:vim put_log_hdfs.sh
授权chmod 755 put_log_hdfs.sh
编写脚本
#!/bin/bash
#获取昨天日期
YESTERDAY=$(date -d "1 day ago" +"%Y%m%d")
#定义日志目录
DATALOG=/opt/bigdata/nginx-1.12.2/logs
#定义HADOOP_HOME
HADOOP_HOME=/opt/bigdata/hadoop-2.7.3
#将日志上传到hdfs
${HADOOP_HOME}/bin/hdfs dfs -put ${DATALOG}/access_${YESTERDAY}.log /nginx_log
执行脚本
查看HDFS上,数据已经上传
同样可以加入定时
定时执行crontab:crontab –e
00 01 * * * /opt/bigdata/nginx-1.12.2/scripts/put_log_hdfs.sh
这里就不写了
查看任务:crontab –l
需要重启crontab:service crond restart
flume上传到hdfs
创建flume配置文件
touch flume-nginx-hdfs.properties
# Name the components on this agent
a1.sources = r1
a1.sinks = k1
a1.channels = c1
# Describe/configure the source
a1.sources.r1.type = exec
a1.sources.r1.command = tail -f /opt/bigdata/nginx-1.12.2/logs/access_20200113.log
# Describe the sink
a1.sinks.k1.type = hdfs
a1.sinks.k1.hdfs.path = hdfs://masterhbase:8082/flume/nginxlog/roll/%y%m%d/%H
a1.sinks.k1.hdfs.rollInterval = 600
a1.sinks.k1.hdfs.rollSize = 1048576
a1.sinks.k1.hdfs.rollCount = 0
a1.sinks.k1.hdfs.minBlockReplicas = 1
a1.sinks.k1.hdfs.useLocalTimeStamp = true
a1.sinks.k1.hdfs.round = true
a1.sinks.k1.hdfs.roundValue= 1
a1.sinks.k1.hdfs.roundUnit = hour
# Use a channel which buffers events in memory
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
# Bind the source and sink to the channel
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
source类:
exec 监控文件:access.log
Spooling Directory 监控目录:spoolDir=nginx-1.12.2/logs
channel类:
memory: 比较吃内存,但是速度比较快,数据不安全
file:文件比较安全,但是传输速度较慢
sink类:
hdfs:离线分析以及数据备份
kafka:流式计算 storm/spark
执行
bin/flume-ng agent -n a1 -c conf -f conf/flume-nginx-hdfs.properties -Dflume.root.logger=INFO,console
可以看到数据已经上传了
- 上一篇: Linux/MacOS 上管理 SDK 的最正确方式
- 下一篇: Java服务器端模拟SDK采集数据
猜你喜欢
- 2024-11-27 3小时 5步骤 快赢秒接手游渠道SDK
- 2024-11-27 Java服务器端模拟SDK向服务器发送数据
- 2024-11-27 Web3教程:仅仅一个周末,只用JS就可以构建出你自己的DAO(2)
- 2024-11-27 字节跳动小程序收银台集成支付宝、微信支付
- 2024-11-27 如何在 Vuejs 中使用 Supertokens 的预构建 UI
- 2024-11-27 一款建筑信息模型的BIM轻量化开发引擎
- 2024-11-27 前端对接微信公众号网页开发流程,JSSDK使用
- 2024-11-27 一文搞懂“支付核心”
- 2024-11-27 webfunny前端监控新功能分享:小程序、uni-app埋点SDK集成
- 2024-11-27 闲鱼前端如何做容灾
你 发表评论:
欢迎- 597℃几个Oracle空值处理函数 oracle处理null值的函数
- 591℃Oracle分析函数之Lag和Lead()使用
- 579℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 575℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 571℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 564℃【数据统计分析】详解Oracle分组函数之CUBE
- 550℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 544℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端懒加载 (49)
- 前端获取当前时间 (50)
- 前端接口 (50)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle 中文 (51)
- oracle的函数 (57)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)