大数据实时项目-01-数据采集
一、实时计算需求
1 实时需求与离线需求的比较
离线需求,一般是根据前一日的数据生成报表,虽然统计指标、报表繁多,但是对时效性不敏感。
实时需求,主要侧重于对当日数据的实时监控,通常业务逻辑相对离线需求简单一下,统计指标也少一些,但是更注重数据的时效性,以及用户的交互性。
二、实时统计架构
1、离线
MySQL有分析能力,但是存储能力有限,所以,往往用来保存结果。
2、实时
比较
离线数据主动问数据源要数据,而实时数据不知道什么时候来数据,所以,它是被动接收数据。
三、 模拟日志生成器
1、日志生成器代码
2、生产jar包并拷贝到虚拟机某个目录
在拷贝的时候,将resource目录下的配置文件也一同拷贝到 jar 包同目录下,这样方便修改配置文件
创建目录:
$ mkdir /opt/applog
拷贝jar包到该目录下:
[root@centos01 applog]# pwd
/opt/applog
[root@centos01 applog]# ls -l
总用量 10868
-rw-r--r--. 1 root root 610 10月 24 18:59 application.properties
-rw-r--r--. 1 root root 11114573 10月 24 18:59 gmall2020-mock-log-2021-10-23.jar
-rw-r--r--. 1 root root 3210 10月 24 18:59 logback.xml
-rw-r--r--. 1 root root 493 10月 24 18:59 path.json
3 修改application.properties
[root@centos01 applog]# cat application.properties
# 外部配置打开
# logging.config=./logback.xml
#业务日期
mock.date=2021-10-24
#模拟数据发送模式
mock.type=http
#http模式下,发送的地址
mock.url=http://192.168.222.10:8080/applog
#启动次数
mock.startup.count=10000
#设备最大值
mock.max.mid=50
#会员最大值
mock.max.uid=500
#商品最大值
mock.max.sku-id=10
#页面平均访问时间
mock.page.during-time-ms=20000
#错误概率 百分比
mock.error.rate=3
#每条日志发送延迟 ms
mock.log.sleep=10
#商品详情来源 用户查询,商品推广,智能推荐, 促销活动
mock.detail.source-type-rate=40:25:15:20
4、使用模拟日志生成器的jar 运行
java -jar gmall2020-mock-log-2021-10-23.jar
启动之后,出现了错误,这是由于网络地址还没发送:
...
Caused by: java.lang.RuntimeException: 发送失败...检查网络地址...
at com.atgugu.gmall2020.mock.log.util.HttpUtil.post(HttpUtil.java:43)
at com.atgugu.gmall2020.mock.log.Mocker.run(Mocker.java:119)
at com.atgugu.gmall2020.mock.log.MockTask.mainTask(MockTask.java:23)
at com.atgugu.gmall2020.mock.log.Gmall2020MockLogApplication.main(Gmall2020MockLogApplication.java:16)
... 8 more
[root@centos01 applog]# ls -l
总用量 10868
-rw-r--r--. 1 root root 615 10月 24 19:23 application.properties
drwxr-xr-x. 2 root root 51 10月 24 19:26 gmall2020
-rw-r--r--. 1 root root 11114573 10月 24 18:59 gmall2020-mock-log-2021-10-23.jar
-rw-r--r--. 1 root root 3210 10月 24 18:59 logback.xml
drwxr-xr-x. 2 root root 34 10月 24 19:26 logs
-rw-r--r--. 1 root root 493 10月 24 18:59 path.json
[root@centos01 applog]#
四、 搭建日志采集系统集群
1、采集系统
2、查看宿主机通信IP
查看宿主机IP,宿主机和虚拟机里边的服务可以通信。
3、修改生成日志器发送地址
application.properties
配置文件:
[root@centos01 applog]# cat application.properties
# 外部配置打开
# logging.config=./logback.xml
#业务日期
mock.date=2021-10-24
#模拟数据发送模式
mock.type=http
#http模式下,发送的地址
mock.url=http://192.168.222.1:8080/applog
#启动次数
mock.startup.count=10000
#设备最大值
mock.max.mid=50
#会员最大值
mock.max.uid=500
#商品最大值
mock.max.sku-id=10
#页面平均访问时间
mock.page.during-time-ms=20000
#错误概率 百分比
mock.error.rate=3
#每条日志发送延迟 ms
mock.log.sleep=5000
#商品详情来源 用户查询,商品推广,智能推荐, 促销活动
mock.detail.source-type-rate=40:25:15:20
4、启动生成日志服务
[root@centos01 applog]# java -jar gmall2020-mock-log-2021-10-23.jar
可以看到在服务器部署的日志生成器生成的日志,在IDEA中可以实时获取的到,至此我们打通了Linux的日志生成和Windows端的日志采集完整流程。
5、日志落盘
创建 logback.xml
日志文件:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property name="LOG_HOME" value="/opt/applog/gmall2020" />
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%msg%n</pattern>
</encoder>
</appender>
<appender name="rollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_HOME}/app.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/app.%d{yyyy-MM-dd}.log</fileNamePattern>
</rollingPolicy>
<encoder>
<pattern>%msg%n</pattern>
</encoder>
</appender>
<!-- 将某一个包下日志单独打印日志 -->
<logger name="com.atguigu.gmall.logger.controller.LoggerController"
level="INFO" additivity="true">
<appender-ref ref="rollingFile" />
<appender-ref ref="console" />
</logger>
<root level="error" additivity="true">
<appender-ref ref="console" />
</root>
</configuration>
然后重启服务,可以看到日志已经保存到根目录文件中了
为者常成,行者常至
自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)