数据管理功能是整个分析平台的基础,负责管理维护数据接入、维度字段、数据指标等基础数据相关内容。
项目是基础数据的容器,我们提供了多种方式将数据接入项目。同时,所有分析功能都是基于项目进行的。
在填写项目名称后,可以选择以后再接数据,仅创建项目。而选择数据接入方式之后,即可点击下一步,开始数据接入工作。
我们目前提供了三种数据接入方式:SDK接入、文件导入、日志导入。 SDK接入:主要针对可视化埋点数据的接入(Web/Android/IOS); 文件导入:主要针对小规模数据的导入; 日志导入:主要针对服务器日志的采集或历史日志数据的导入;
此外,我们还提供了数据导入工具,便于进行大规模的数据导入。
利用可视化交互界面进行页面事件埋点,无需写代码即可简单便捷的实现用户行为数据的采集。
在创建项目时,选择数据接入方式为SDK接入,点击下一步即可进入SDK接入管理页面。 对于已创建的项目,则可由项目管理页面的“数据接入”按钮进入。
SDK接入管理界面中,您可以看到针对iOS、Android、Web三种平台的接入管理。点击iOS/Android的接入按钮,右侧会出现接入说明。详细的SDK集成与使用说明,可以参见IOS 开发者文档与Android 开发者文档。
当SDK在APP集成完成后,将装有此APP的手机连入WiFi,即可点击“检测SDK安装状态”按钮。
SDK检测可能需要30秒至2分钟不等,若检测失败,可按照页面提示进行排查。 当SDK安装检测成功,即可开始可视化埋点。
开始可视化埋点界面,首先会出现一个二维码,用手机扫描二维码之后,打开页面,并按页面提示启动APP。
开启手机相应APP后,电脑上的界面也会自动转至APP可视化埋点界面。 此界面主要由以下几个部分组成:
- 页面分类设置:页面分类功能,相当于赋予当前页面一个标签,可以将多个页面赋予相同的分类,便于后期的数据分析。
- 页面设置:主要包括埋点页面名称的设置,显示当前页面所匹配的页面分类名称;
- 可视化选取界面:展示APP的实时界面,可以用鼠标点击选择埋点元素;
- 事件设置:对页面载入事件和页面点击事件的埋点进行设置;事件列表:展示当已埋点的事件列表,并提供快照截图,能直观查看埋点;
- 埋点测试与发布按钮,退出埋点按钮。
页面分类设置
页面路径规则说明:数据上报时将会按照页面路径规则自动上报页面分类名称。页面路径规则可输入完整页面路径或添加“*”号的正则表达式。
示例:
分类名称:体育
页面路径规则:sports.com.cn/*
上述设置会将页面路径中以"sports.com.cn/"开头的所有页面,归为“体育”分类。
例如页面"sports.com.cn/g/laliga/2017-08-09/doc-ifyitamv7507779.shtml"
将被归为体育进行上报。
当两个页面路径规则出现交错时,系统自动采用匹配字符数最多的规则。
示例:
分类名称:体育
页面路径规则:sports.com.cn/*
分类名称:体育-英超
页面路径规则:sports.com.cn/g/laliga/*
页面"sports.com.cn/g/laliga/2017-08-09/doc-ifyitamv7507779.shtml"
将会被归类为“体育-英超”, 因为此规则的匹配度更高。
页面设置
页面加载后,此区域会读取页面路径,默认将自动获取页面名称(仅支持HTML),显示当前页面所匹配的页面分类名称。若是原生页面,或需要特别定义页面名称时,可通过手动设置来命名此页面的名称。
此功能可以通过向页面注入代码,在页面载入时,自动上报指定的内容到指定维度字段。
此功能仅支持HTML页面,函数自带了 e
, element
, conf
, instance
这些参数, 可以直接调用执行变量。
示例说明:
var text = element.innerText; // 获取当前点击元素的text
var custom1 = document.getElementById('xxx').value //假设xxx为一个input框的id,我们又想在点击元素时同时上报这个input的value值。
return {EventText: text, Custom1: custom1} // 这里写的是一个函数内容,最终返回为json对象的自定义属性。
HTML页面元素埋点 首先,在可视化选取界面上点选需要埋点的元素; 左侧会自动获取此埋点的元素路径,现在我们可以对埋点事件进行设置:
-
事件名称:埋点事件的名称,请使用辨识度较高的名称,便于今后查询;
-
事件类型:固定为点击事件;
-
标签:用于对事件进行分类,便于跟踪;
-
同类有效:设置此埋点是否对页面中的同类元素一并生效。同类元素通过元素路径进行判别。例如下图中的文章列表,每篇文章都可视为同类元素,同类元素会用红色边框圈选;
-
全局有效:设置此埋点是否对整个APP内的同一全局元素一并生效。全局元素通过元素路径进行判别,例如商城APP的购物车按钮,通常具有相同的元素路径,无论它位于哪个页面,都可视为同一个全局元素;
-
高级选项-上报数据:在当前埋点事件触发时,将页面中某个或多个指定可视元素的文本上报至自定义维度字段(需要在维度管理中预先创建维度);
-
高级选项-注入代码:与页面载入时的注入代码相似,实现的结果也与上报数据相同。但上报数据仅能用于可视元素,而采用代码注入的方式,可将页面上的不可视元素进行上报。
原生页面元素埋点
首先,在可视化选取界面上点选需要埋点的元素; 左侧会自动获取此埋点的元素路径,现在我们可以对埋点事件进行设置:
- 事件名称:埋点事件的名称,请使用辨识度较高的名称,便于今后查询;
- 标签:用于对事件进行分类,便于跟踪;
- 高级选项-上报数据:在当前埋点事件触发时,将页面中某个或多个指定可视元素的文本上报至自定义维度字段(需要在维度管理中预先创建维度);详细操作会在HTML页面元素埋点一并讲述。
事件列表
查看当前页面的所有事件以及非当前页面的所有事件,鼠标移过事件时显示对应的事件快照。
Web可视化埋点—准备工作
在创建项目时,选择数据接入方式为SDK接入,点击下一步即可进入SDK接入管理页面。 对于已创建的项目,则可由项目管理页面的“数据接入”按钮进入。
SDK接入管理界面中,您可以看到针对iOS、Android、Web三种平台的接入管理。点击iOS/Android的接入按钮,右侧会出现接入说明。详细的SDK集成与使用说明,可以参见开发者文档部分。
当SDK在APP集成完成后,将装有此APP的手机连入WiFi,即可点击“检测SDK安装状态”按钮。
SDK检测可能需要30秒至2分钟不等,若检测失败,可按照页面提示进行排查。 当SDK安装检测成功,即可开始可视化埋点。
Web可视化埋点—开始埋点 首次进行埋点时,需输入项目首页的地址。
进入埋点界面后我们可以看到项目页面本身,以及埋点工具按钮。埋点工具按钮可以任意拖动位置。 鼠标悬停埋点工具按钮时,将出现埋点工具菜单:页面设置、创建埋点、埋点列表、页面分类、部署埋点、退出。
页面设置
页面路径:默认为当前页面的URL,即表达下面的页面名称等设置对此URL生效。页面路径支持通配符“*”,当使用通配符时,将会让本页面的埋点事件对所有符合页面路径的页面有效。
页面名称:分为自动获取和人工设置两种上报方式。自动获取是指数据上报时,自动获取页面head标签里,title标签中的内容作为页面名称,当title发生修改时,无需重新设置;人工设置是指人工输入要上报的固定页面名称。
页面分类:显示当前页面所匹配的页面分类名称,详见上文APP中的页面分类功能说明。 注入代码:根据需要填入js代码,可在页面载入时抓取页面指定内容,并上报至指定字段。详细说明可参考上文APP埋点部分的注入代码。
创建埋点
点击创建埋点按钮后,页面将进入埋点状态,此时页面将不可跳转,鼠标悬停在页面元素时会显示绿色的圈选框。当圈选需要埋点的元素后,点击鼠标左键即可弹出埋点设置菜单。
我们在埋点设置菜单中完成对圈选元素的埋点事件配置。
-
页面路径:取自页面设置中的页面路径,若页面设置的页面路径发生修改,此处会相应变化。上面图中页面路径带有通配符,意味着本事件将对所有符合页面路径规则的页面生效。
-
元素路径:当前圈选的页面元素的路径。
-
事件名称:为本事件输入名称,此名称将会被上报,在进行数据分析时使用。
-
事件类型:用于设置事件触发上报的条件。点击,当元素被点击时触发事件上报;改变,当元素内容改变时触发事件上报(例如下拉菜单选项改变);对焦,当元素获取焦点时触发事件上报(例如光标点入一个输入框)。
-
同类有效:设置此埋点是否对页面中的同类元素一并生效。同类元素通过元素的全量路径进行判别,可任意定制元素的父级影响范围。原始埋点元素为蓝色,同类元素为红色。
-
全局有效:设置此埋点是否对整个网站内的同一全局元素一并生效。全局元素通过元素路径进行判别,例如几乎贯穿全站的主导航栏,通常具有相同的元素路径,无论它位于哪个页面,都可视为同一个全局元素。
-
高级选项-上报数据:在当前埋点事件触发时,将页面中某个或多个指定可视元素的文本上报至自定义维度字段(需要在维度管理中预先创建维度);
-
高级选项-注入代码:根据需要填入js代码,可在页面载入时抓取页面指定内容,并上报至指定字段。详细说明可参考上文APP埋点部分的注入代码。
埋点小技巧-恢复原始点击事件
在进入创建埋点的状态后,无法点击按钮的原始事件就不能对事件的弹窗进行埋点。这时候只需要按住ctrl(windows\linux)或command(OSX)键,再点击按钮即可触发原始的事件。这时候松开按键后就回到埋点的状态,就能对事件的弹窗进行埋点操作了。
已创建完毕的埋点事件会在页面中用色框进行标记。创建完毕的事件并不会直接生效,需要点击“部署事件”按钮,进行部署之后才会发挥作用。 已经创建的事件或完成的修改,即使不进行部署也都已保存,下次进入埋点页面可延续上次的工作。
文件导入主要是用于快速接入小规模数据,用以做诸如活动的临时数据分析和储存,目前文件导入支持CSV文件(UTF-8编码),未来将提供更多文件格式的支持。 为保证性能与可靠性,若需导入大量数据,请使用我们提供的数据导入工具。
上传文件时,请确保CSV文件编码为UTF-8。同时,文件首行将判定为数据列标题,必须是英文或字母或下划线组成,不能以数字开头,不能包含中文,长度为2-50字节。
文件上传成功后可以进行预览,并进行一些导入设置:
- 导入启始行:由文件第几行开始导入。由于首行被强制判定为列标题,因此从第1行或第2行导入的结果是相同的;
- 分隔符号:选择文件所使用的分隔符号;
- 文本识别符号:选择文件所使用的文本识别符号,被符号标记的内容将被识别为文本而不是分隔符;
- 数据格式:根据实际数据需求,设置每一列的数据格式;若选择了错误的数据格式,例如字符串数据选择了int格式,会造成导入失败;
- 设置主时间字段:将某一列设置为时间维度列,即数据分析时的时间轴。此列的数据格式必须为date;
- 选择导入数据列:可自由选择将那些列进行导入,默认为全部导入。
日志导入主要是用于快速采集/导入日志数据文件,通过简单的配置即可简单便捷实现日志数据的采集。用以做日志的查询和分析,同时也支持导入历史的日志数据,提供任意文件格式的支持。
新建项目后,选择数据导入方式为日志接入,点击下一步即可进入日志接入的操作步骤。
- 选择需要接入的日志数据类型:提供nginx、tomcat、apache 三种类型
- 日志格式:根据选择的日志类型进行数据格式的配置
- 生成 Grok 表达式:填写日志格式后会自动生成,生成后可根据业务的情况点击进行修改。
- 样例数据:请输入您采集的服务器中其中的一条数据(截取格式对应的日志数据填入)
- 结果预览:若样例数据适配生成的Grok表达式,则自动生成结果预览。请核对字段与字段值是否匹配,如不匹配对日志格式或Grok表达式进行调整。
- 设定时间维度
- 选择时间列:时间维度是很重要的维度,请与Grok表达式中表示时间维度的维度名进行对应。默认会选择第一个时间类型的字段,可点击下拉修改;
- 预估每天数据量:对采集的服务器预估每天会采集的数据量。需要注意,填写该项能大大提高产品的使用性能。预估值将用于优化收集器的配置,越接近真实值,优化效果越好。
- 接入数据 日志数据的接入,数果提供两种方式接入:
- 方式一:下载Sugo-C 采集器
- 填写日志文件目录:被采集的日志所在的目录地址,请填写绝对地址。
- 填写日志文件名字:被采集的日志的文件名字,若为多个文件,可填写正则表达式来匹配。 服务端将按照基础配置中填写的信息进行配置并打包,点击下载按钮,下载Sugo-C日志采集器。
以下是下载采集器后的使用说明:
下载后的文件以tar.gz
为后缀,可使用通用的解压工具解压,或在命令行中,进入下载目录,使用如下命令进行解压:
tar -zxvf Sugo-C.tar.gz
进入Sugo-C
目录,使用bin
目录下的脚本进行启动或停止采集器。
cd Sugo-C
bin/start.sh
bin/stop.sh
在启动后,点击检测按钮测试采集器是否正常采集日志并上报。
conf
目录内的collect.properties
文件是采集器的配置文件,其配置参数如下:
参数说明
参数 | 默认值 | 说明 |
---|---|---|
file.reader.log.dir | 采集的日志所在目录 | |
file.reader.log.regex | 采集的文件名正则表达式(单文件可直接填写文件名) | |
file.reader.grok.patterns.path | ${user.dir}/conf/patterns | (可选)grok表达式配置文件路径 |
file.reader.csv.dimPath | ${user.dir}/conf/dimension | csv维度配置文件,parser.class 为io.sugo.collect.parser.CSVParser 时生效 |
file.reader.csv.separator | ,(逗号) | csv文件分隔符,空格分隔可填space , parser.class 为io.sugo.collect.parser.CSVParser 时生效 |
file.reader.log.type | separate | 日志文件类型,日志若是以分离形式生成,则为separate ,若是以单一文件不断增加内容的形式,则为only |
file.reader.batch.size | 数据分批发送,此配置为每个批次的大小 | |
file.reader.scan.timerange | 目录过期时间,采集程序不采集超过此时间的目录,单位(minutes) | |
file.reader.scan.interval | 目录扫描时间,单位(ms) | |
file.reader.threadpool.size | reader线程池大小,一个线程负责一个采集子目录 | |
file.reader.host | InetAddress.getLocalHost().getHostAddress() | 采集日志所在机器的IP地址 |
file.reader.grok.expr | grok 表达式 | |
kafka.bootstrap.servers | 以部署Kafka的地址,格式为host:port ,多个请以, 分割 |
|
writer.kafka.topic | Kafka的topic名称 | |
writer.class | writer类名,数据写入到kafka 使用io.sugo.collect.writer.kafka.KafkaWriter ,发送到gateway 使用io.sugo.collect.writer.gateway.GatewayWriter |
|
writer.gateway.api | 发送到网关的接口 | |
parser.class | parser类名,CSV 文件使用 io.sugo.collect.parser.CSVParser ,nginx 日志建议使用io.sugo.collect.parser.GrokParser |
|
reader.class | reader类名,暂时只有io.sugo.collect.reader.file.DefaultFileReader |
采集器的状态检测可能需要1分钟至10分钟不等,根据采集的数据量决定,数据量越大需要消耗的时间越长。 当检测成功后,即可开始日志分析。
- 方式二:上传文件
- 支持上传任意格式的文本文件
- 文件大小不超过 100M
采集日志数据需要注意的是:若数据为两个小时前的则视为历史数据,不会马上落地,所以无法马上从日志分析查询得到,您可以用过暂停项目触发历史数据的落地。
以某个项目数据为基础,通过设置筛选条件,将符合条件的数据划归一个新的项目。新的项目即为原项目的子项目。 子项目主要用于实现对数据的分权管理,将项目内的指定数据对指定人员开放。
上图展示了一个子项目创建的例子: 我们希望广州分部的人员只能看到项目数据中关于广州市的部分。于是我们用城市作为过滤条件,将广州市的数据过滤出来,创建了一个名为“数果智能行为项目-广州”的子项目。
然后我们可以将新创建的子项目授权给指定的用户组。
用户库是存放项目登录用户信息的主要载体,如果没有设置,那么就算调用了登录接口,用户的登录信息也不会上报。所以我们需要先为每个项目设定好一个用户库,数果提供两种创建方式,选择哪个方式取决于您对网站/应用的用户分析实际情况。