阿里云官方提供多种数据采集方式 阿里云Maxcomputer数据上传工具
阿里云官网 博文 Logstash + DataHub + MaxCompute/StreamCompute 进行实时数据分析
阿里云的基于飞天开发的pubsub服务 datahup
安装 logstash about datahub:
$ tar -xzvf logstash-with-datahub-2.3.0.tar.gz
$ cd logstash-with-datahub-2.3.0
安装流程参考 阿里云社区博文
在 logstash 配置文件中给出的示例日志数据:
20:04:30.359 [qtp1453606810-20] INFO AuditInterceptor - [13pn9kdr5tl84stzkmaa8vmg] end /web/v1/project/fhp4clxfbu0w3ym2n7ee6ynh/statistics?executionName=bayes_poc_test GET, 187 ms
示例 logstash conf 配置文件:
input {
file {
path => "${APP_HOME}/log/bayes.log"
start_position => "beginning"
}
}
filter{
# 对每一条日志message进行分割,并将各分片指定对应的tag
# 若将整条日志作为Topic的一个字段,可创建只包含(message string)字段的Topic,从而不用配置grok filter
grok {
match => {
"message" => "(?<request_time>\d\d:\d\d:\d\d\.\d+)\s+\[(?<thread_id>[\w\-]+)\]\s+(?<log_level>\w+)\s+(?<class_name>\w+)\s+\-(?<detail>.+)"
}
}
}
output {
datahub {
access_id => ""
access_key => ""
endpoint => ""
project_name => "project"
topic_name => "topic"
#shard_id => "0"
#shard_keys => ["thread_id"]
dirty_data_continue => true
dirty_data_file => "/Users/u1/trash/dirty.data"
dirty_data_file_max_size => 1000
}
}
如设涉及多文件采集(/home/admin/accessxxx.log /home/admin/xxx.log),input 可改为:
# 第一种
input {
file {
path => ["home/admin/accessxx.log","home/admin/xxx.log"]
start_position => "beginning"
}
}
# 第二种
input {
file {
path => "home/admin/accessxx.log"
#start_position => "end"
}
file {
path => "home/admin/xxx.log"
#start_position => "end"
}
}
"""
start_position 参数
logstash 从什么位置开始读取文件数据,默认是结束位置,也就是说 logstash 进程会以类似 tail -F 的形式运行。如果你是要导入原有数据,把这个设定改成 "beginning",logstash 进程就从头开始读取,有点类似 cat,但是读到最后一行不会终止,而是继续变成 tail -F
"""
关于grok的校验,可以参考 GROK DEBUG(强烈建议使用此工具调试grok)
grok match 提供两种方式,一种是示例中自定义正则,另一种是logstash官方 grok patterns ,参考上篇博文
logstash 启动命令,进入安装目录(建议在screen中运行):
./logstash -f 配置文件地址
关于datahub关联maxcomputer分区表的建立,
首先在maxcomputer中新建分区表设置分区字段(如使用系统分区,设置ds hh mm三个分区字段),在datahub中新建表时选择从maxcomputer导入即可,注意分区时间,分区选择,是否建立自动归档关联等,字段必须一一对应,完全一致,
日志处理:
如日志不需要处理,在grok中正则过滤即可直接上传datahup 自动归档maxcomputer
反之 则可以用过通过datahup 订阅 发布数据数据 具体参考 sdk 支持 java python (如分表等其他操作)
关于异常调试,数据调试:
maxcomputer表中数据与原始日志不相符!
- 首先确保 logstash 数据的完全采集,即logstabsh采集有没有问题,可以在datahup控制台某时候数据抽样对比原始日志
- 如果能查出表中数据相较于原始日志缺失详细,更快定位错误
- logstash 没有问题,极大可能自定义数据处理程序出现问题,排查代码逻辑,禁用异常处理,打log等方式
其他问题google 或 提交工单