一、日志数据采集
### --- 原始日志数据(一条启动日志)
2020-07-3014: 18: 47.339[
main
]INFOcom.yanqi.ecommerce.AppStart-{
"app_active": {
"name": "app_active",
"json": {
"entry": "1",
"action": "1",
"error_code": "0"
},
"time": 1596111888529
},
"attr": {
"area": "泰安",
"uid": "2F10092A9",
"app_v": "1.1.13",
"event_type": "common",
"device_id": "1FB872-9A1009",
"os_type": "4.7.3",
"channel": "DK",
"language": "chinese",
"brand": "iphone-9"
}
}
二、数据采集的流程:
### --- 选择Flume作为采集日志数据的工具:
~~~ # Flume 1.6
~~~ 无论是Spooling Directory Source、Exec Source均不能很好的满足动态实时收集的需求
~~~ # Flume 1.8+
~~~ 提供了一个非常好用的 Taildir Source
~~~ 使用该source,可以监控多个目录,对目录中新写入的数据进行实时采集
三、日志采集配置:taildir source
### --- taildir source配置
~~~ # taildir Source的特点:
~~~ 使用正则表达式匹配目录中的文件名
~~~ 监控的文件中,一旦有数据写入,Flume就会将信息写入到指定的Sink
~~~ 高可靠,不会丢失数据
~~~ 不会对跟踪文件有任何处理,不会重命名也不会删除
~~~ 不支持Windows,不能读二进制文件。支持按行读取文本文件
### --- taildir source配置
a1.sources.r1.type = TAILDIR
a1.sources.r1.positionFile = /data/yanqidw/conf/startlog_position.json
a1.sources.r1.filegroups = f1
a1.sources.r1.filegroups.f1 = /data/yanqidw/logs/start/.*log
~~~ # positionFile
~~~ 配置检查点文件的路径,检查点文件会以 json 格式保存已经读取文件的位置,解决断点续传的问题
~~~ # filegroups
~~~ 指定filegroups,可以有多个,以空格分隔(taildir source可同时监控多个目录中的文件)
~~~ # filegroups.
~~~ 配置每个filegroup的文件绝对路径,文件名可以用正则表达式匹配