基于阿里云实现游戏数据运营(附Demo)

232 阅读4分钟
原文链接: click.aliyun.com

2、进入多维分析报表的IDE工作台:

af8ec22cb5fe4aeb38372c47ca52a66474f887fa

3、可以看到,左侧的字段属性区,会自动加载物理表的对应字段(默认加载comment描述):

ad4d55a9f1c52dfae7f0938ab2ae71842c67450d

4、具体分析操作,比较简单,按需双击、拖拽需要分析的字段,点击查询即可看到报表,比如:

1)按商品(维度),看充值(计量)的整体情况

5b86861bc0a4e21ac31baa532a086c6caad12e4d

2)增加角色等级(维度),做交叉表

c3275168403e45f4a3b0f6a9975cedc3157fec08

3)同时也支持各种查询条件的设置

按时间

11e9c7204ba244852ebf4bbb4dac0bbf110e5bc5

多层嵌套的高级查询

6b4558b702e4b07c579f46589789aa2de434195e

Step3:仪表盘、数据产品配置

灵活性较强的数据探查类场景,可以通过多维报表支撑,对于展现形式要求较高的,可以通过仪表盘来灵活实现;

1、数据集List页面,点击“新建仪表盘”:

7fc33758f6a7667daa0c4d7772a1c1158514ddcc

2、进入仪表盘的IDE工作台,页面分为左、中、右三栏:

e2e571f6b0731853dfd2eb5cf6e61eed31c0c378

3、同样,可以通过拖拽的方式,快速完成仪表盘页面的配置:

1)拖拽/双击 选择需要作图的字段:

d8488f151ab921f6eb5efaa14ba2a18d7b4945dc

2)点击更新,刷新图表,同时可以自由设置图表的样式

56bbc7d7c68ef1563ca5d5246c4771564a86caa1

3)拖拽设置页面布局

d45851beef524e8a6797ae7c30b69731475f7d61

比如,可以做一个专门的充值分析页面,效果示例:

38e7ace3282d6565be48559148a611ce9493ce05

数据产品是类似于分析专题、报表门户,具体配置就不再赘述:

3a4a9516d2647434f6d9cd210c7849c1c1de4773

六、架构总结

一、Demo涉及的产品 以及 数据流

如图所示:

bbcbc2924269b2f02fc6802a0a30deec61dfd2c8

二、如何实现生产场景下的动态数据采集及常见问题处理

和Demo不同的是,在生产场景下,我们的日志文件是动态的,因此需要实现如下逻辑:

1、 监控日志目录下的文件变化;

2、 根据配置的频率,采集日志;

1、flume1.7及以上版本

包含TaildirSource组件,可以实现监控目录,并且使用正则表达式匹配该目录中的文件名进行实时收集。

Flume作业配置:

1)在Flume安装目录的conf文件夹下,创建任务的conf文件;

vi  {任务名称}.conf

2)输入任务的配置信息(注意,此处差异较大)

#示例如下(重点关注{}中的内容)

#a1是要启动的agent的名字

 a1.sources = r1   #命名agent的sources为r1

a1.sinks = k1     #命名agent的sinks为k1

a1.channels = c1  #命名agent的channels为c1

# TaildirSource配置

a1.sources.r1.type = org.apache.flume.source.taildir.TaildirSource

a1.sources.r1.channels = memory_channel

a1.sources.r1.positionFile = /tmp/taildir_position.json

a1.sources.r1.filegroups = f1

a1.sources.r1.filegroups.f1 = {/usr/logfile/s51/mylog/*}

a1.sources.r1.batchSize = 100

a1.sources.r1.backoffSleepIncrement  = 1000

a1.sources.r1.maxBackoffSleep  = 5000

a1.sources.r1.recursiveDirectorySearch = true

# Describe/configure the source

a1.sources.r1.type = exec #指定r1的类型为exec

a1.sources.r1.command =cat {日志文件的位置}   #写入本地文件路径

# Describe the sink

a1.sinks.k1.type = com.aliyun.datahub.flume.sink.DatahubSink #指定k1的类型

a1.sinks.k1.datahub.accessID ={ accessID }

a1.sinks.k1.datahub.accessKey ={ accessKey }

a1.sinks.k1.datahub.endPoint = http://dh-cn-hangzhou.aliyuncs.com

a1.sinks.k1.datahub.project = {datahub_project_name}

a1.sinks.k1.datahub.topic ={datahub_ topic _name}

a1.sinks.k1.batchSize = 100 #一次写入文件条数

a1.sinks.k1.serializer = DELIMITED

a1.sinks.k1.serializer.delimiter = {字段间隔符}

a1.sinks.k1.serializer.fieldnames= {字段 “,” 隔开,注意需要与日志文件的顺序、datahub topic的顺序保持一致}

a1.sinks.k1.serializer.charset = {文字编码格式}

a1.sinks.k1.shard.number =  {分片数,需要与datahub 的topic配置一致}

a1.sinks.k1.shard.maxTimeOut = 60

# Use a channel which buffers events in memory

a1.channels.c1.type = memory  #指定channel的类型为memory

a1.channels.c1.capacity = 1000  #设置channel的最大存储数量为1000

a1.channels.c1.transactionCapacity = 1000 #每次最大可从source中拿到或送到sink中的event数量是1000

# Bind the source and sink to the channel

a1.sources.r1.channels = c1

a1.sinks.k1.channel = c1


3、检查无误后,启动flume日志采集agent;

bin/flume-ng agent -n a1 -c conf -f conf/ {任务名称}

.conf -Dflume.root.logger=INFO,console


2、flume 1.6 

原生不支持TaildirSource,需要自行下载集成:

下载地址:http://7xipth.com1.z0.glb.clouddn.com/flume-taildirfile-source.zip

将源码单独编译,打成jar包,上传到$FLUME_HOME/lib/目录下,之后配置方法可以参考上文;


3、常见问题:

1、日志文件解析错误

 异常信息截图:

805fbd1d659028bdcf768917a96fffa9147415a2

 原因分析及解决方法

出现图示异常的原因,一般是因为解析日志文件得到的属性数量和配置文件不一致所致,此时需要重点排查:

1) 配置文件的间隔符、属性是否正确

a1.sinks.k1.serializer.delimiter = {字段间隔符}

a1.sinks.k1.serializer.fieldnames= {字段 “,” 隔开,注意需要与日志文件的顺序、datahub topic的顺序保持一致}

a1.sinks.k1.serializer.charset = {文字编码格式}

2) 日志文件格式是否符合预期、是否包含特殊字符


2、文件适配符模式下,找不到文件

 异常信息截图:

929fb7a2bb022a59cb79940196c430b25eda3361

2a4756a176e772241a32cd6d8db50a2815088f01

 原因分析及解决方法

出现图示异常的原因,一般是因为按照通配符设置,未找到文件导致异常退出,此时需要重点检查配置文件中的日志路径设置:

a1.sources.r1.filegroups.f1 = {/usr/logfile/s51/mylog/*}


3、 修改配置文件后,重新启动,无异常信息但是不加载数据

 异常信息截图:

dc6b8257647c3a1ba8c46746a42fdf8de89b4154

 原因分析及解决方法

该问题比较隐秘,任务可以启动,没有明显的异常日志,但是到sink环节后不再加载数据,一般是因为修改了配置文件设置,但是没有删除对应的描述文件,需要:

1) 找到配置的描述文件路径

a1.sources.r1.positionFile = /tmp/taildir_position.json

2) 删除描述文件,重启任务

db57155c509e5d49c41c3f35f829c8c49371a696

可正常加载数据;

三、扩展场景的产品架构&数据流

f5e989ff3365eb7aab8675dff96d6aa8dc4d6d7b