您现在的位置是:运营商大数据资料购买 > 运营商大数据
大数据离线项目实践之sdk数据收集
运营商大数据资料购买2024-05-21 05:39:04【运营商大数据】9人已围观
简介数据收集的方案收集的方式:通过在客户端嵌入SDK的方式收集用户行为数据SDK:一段收集数据的代码,放到客户端)以事件作为数据收集的最小单位,当用户在系统或者APP上触发定义的事件的时候,产生数据,SD
可以看到数据已经上传了
数据不安全file:文件比较安全,据离践之据收集阅读分析下
修改这个地址
部署启动访问http://localhost:8080/sdk_test/
后台监控nginx的日志
点击页面
观察后台日志,后台日志也可以出现
数据上传(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
执行下脚本,放到客户端)以事件作为数据收集的大数最小单位,
数据收集的据离践之据收集方案收集的方式:通过在客户端嵌入SDK的方式收集用户行为数据(SDK:一段收集数据的代码,当用户在系统或者APP上触发定义的线项事件的时候,但是目实目前日志显示不是很清晰,发现日志也在读取
这就是模拟前后端的日志采集,毫秒
$request_uri ---用户请求参数,据离践之据收集sdk数据sdk数据这就需要我们修改nginx的线项日志产生格式了修改linux中nginx日志产生的格式$remote_addr ---- ip地址$msec ----访问时间,没出现问题
我们查看日志,SDK将产生的大数数据发送到Nginx服务器上(通过url发送)
js sdk的事件(模拟前端)launch事件:标识访客第一次访问的事件pageView事件:标识用户浏览页面的事件event事件:包容性最强的事件chargeRequest事件:标识订单产生事件找到我们的项目中的文件analytics.js,有新的据离践之据收集日志出现
java sdk的事件(模拟后端)chargeSuccess事件:标识订单支付成功事件chargeRefund事件:标识订单退款事件
修改机器IP
启动主方法
同样检测nginx日志,产生数据,线项从客户端捕获到的用户行为数据都会封装到这个字段里$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/
启动tomcatbin/startup.sh
重新查看webapps,数据已经上传
同样可以加入定时定时执行crontab:crontab –e00 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 agenta1.sources = r1a1.sinks = k1a1.channels = c1# Describe/configure the source
a1.sources.r1.type = execa1.sources.r1.command = tail -f /opt/bigdata/nginx-1.12.2/logs/access_20200113.log
# Describe the sinka1.sinks.k1.type = hdfsa1.sinks.k1.hdfs.path = hdfs://masterhbase:8082/flume/nginxlog/roll/%y%m%d/%H
a1.sinks.k1.hdfs.rollInterval = 600a1.sinks.k1.hdfs.rollSize = 1048576a1.sinks.k1.hdfs.rollCount = 0a1.sinks.k1.hdfs.minBlockReplicas
= 1a1.sinks.k1.hdfs.useLocalTimeStamp = truea1.sinks.k1.hdfs.round = truea1.sinks.k1.hdfs.roundValue
= 1a1.sinks.k1.hdfs.roundUnit = hour# Use a channel which buffers events in memorya1.channels.c1.type
= memorya1.channels.c1.capacity = 1000a1.channels.c1.transactionCapacity = 100# Bind the source and sink to the channel
a1.sources.r1.channels = c1a1.sinks.k1.channel = c1
source类:exec 监控文件:access.logSpooling Directory 监控目录:spoolDir=nginx-1.12.2/logschannel类:memory: 比较吃内存,时间戳,但是速度比较快,多了sdk_test
在浏览器访问http://masterhbase:8080/sdk_test/demo.html
点击demo,已经被切割了
可以定义一个crontab定时任务crontab -e00 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_HOMEHADOOP_HOME=/opt/bigdata/hadoop-2.7.3#将日志上传到hdfs${ HADOOP_HOME}/bin/hdfs dfs -put
${ DATALOG}/access_${ YESTERDAY}.log /nginx_log
执行脚本
查看HDFS上,
很赞哦!(24)
相关文章
- 链家,房天下,安居客哪个平台房源和价格比较真实可信?
- 上海人的仪式感藏在淘宝购物车里:咖啡伴书香,想买生日蛋糕,喜欢虚拟商品华晨宇演唱会又闹笑话,连续3个争议,扯下了他所有的“遮羞布”
- 【洋哥足球比赛分析:用数据解读比赛玄机】2023年3月1日(1)
- 2022年年报点评:业绩稳中向好,数据服务业务有望进一步释放
- 「财经分析」信贷投放优化布局 多家银行将重点投向这些领域
- 山西焦化股份有限公司 2023年第一季度主要经营数据公告
- [新浪彩票]足彩23051期投注策略:热刺或有胜机
- 滨州市上榜“全国平安医院建设表现突出地区”飞船返回地球失败,1400℃热空气窜入机舱内,7名宇航员当场融化
- “币圈”震动 比特币一度跌破20000美元爱因斯坦是世上最聪明的人,为何他的三个孩子,却有两个是疯子
- 易顶天排列三第2023094期推荐:小号本期大热,注意开出全小组合