对接DataV

DataV是阿里云的可视化产品,能帮助您通过图形化的界面轻松搭建专业水准的可视化应用,丰富表现日志分析数据。本文档介绍如何通过日志服务对接DataV进行大屏数据展示。

前提条件

背景信息

实时大屏广泛应用于大型在线促销活动。实时大屏基于流式计算架构,该架构包含以下模块:

  • 数据采集:将来自各源头数据实时采集。

  • 中间存储:利用类Kafka Queue进行生产系统和消费系统解耦。

  • 实时计算:数据处理关键环节,订阅实时数据,通过计算规则对窗口中数据进行运算。

  • 结果存储:计算结果数据存入SQL和NoSQL。

  • 可视化:通过API调用结果数据进行展示。

在阿里集团内,有大量成熟的产品可以完成此类工作,一般可供选型的产品如下:

image

日志服务支持通过日志服务查询分析API直接对接DataV进行大屏数据展示。 日志服务对接DataV

功能特点

计算方式根据数据量、实时性和业务需求会分为以下两种。

  • 实时计算(流计算):固定的计算+变化的数据

  • 离线计算(数据仓库+离线计算):变化的计算+固定的数据

在对实时性有要求的日志分析场景中,日志服务为您提供实时索引LogHub中数据机制,可通过LogSearch/Analytics直接进行查询分析。LogSearch/Analytics具有以下优势:

  • 快速:一秒内查询(5个条件),可处理10亿级数据。一秒内分析(5个维度聚合+GroupBy),可聚合亿级别数据,无需等待和预计算结果。

  • 实时:99.9%情况下可做到日志产生1秒内反馈到大屏。

  • 动态:无论修改统计方法还是补数据,支持实时刷新显示结果,无需等待重新计算。

LogSearch/Analytics具有以下限制:

  • 数据量:单次计算数据量限制为百亿行,当超过百亿行,需要限定时间段。

  • 计算灵活度:计算限于SQL92语法,不支持自定义UDF。

添加日志服务SLS数据源操作步骤

  1. 登录DataV控制台

  2. 工作台页面,单击数据准备 > 数据源,进入数据源页面,单击新建数据源

  3. 类型列表中,选择简单日志服务SLS

  4. 填写简单日志服务SLS相关信息。

    image

    参数

    说明

    自定义数据源名称

    数据源的显示名称,您可以自由命名。

    AppKey

    拥有目标SLS访问权限的账号的AccessKey ID。

    AppSecret

    拥有目标SLS访问权限的账号的AccessKey Secret。

    EndPoint

    填写SLS服务的EndPoint。请参见日志服务入口文档,根据您SLS服务的网络类型和所在区域进行填写。

    例如VPC网络下,上海区域的EndPoint 填写为https://cn-shanghai-intranet.log.aliyuncs.com

  5. 信息填写完成后,单击确定,完成数据源的添加。

    新添加的数据源会自动显示在数据源列表中。

使用日志服务SLS数据源操作步骤

  1. 登录DataV控制台

  2. 工作台页面中,将鼠标移动至需要编辑的数据看板上,单击编辑

    重要

    如果您的工作台页面内还没有创建任何数据看板,请参见使用模板创建PC端看板,创建一个数据看板。

  3. 在画布编辑页面,单击画布中的某一组件。

    如果画布中还没有组件,请先添加组件,详情请参见组件画布操作

  4. 在画布右侧的组件配置面板中选择数据源

    image

  5. 设置数据源模块中,选择数据源类型简单日志服务SLS

  6. 选择已有数据源列表中选择配置完成的日志服务数据源。

  7. 在下方查询编辑框中输入查询参数 。

    支持以JSON对象为查询参数进行查询。 可填写的查询参数为:

    {
    "projectName": "test",
    "logStoreName": "access-log",
    "topic": "test",
    "from": 1509897600,
    "to": 1509984000,
    "query": "" ,
    "line": 100,
    "offset": 0
    }
    说明

    其中query参数的查询语法请参见查询语法

  8. 单击查看数据返回结果,查看数据返回结果。

案例:调整不同统计口径下的云栖大会网站访问实时大屏

云栖大会期间有一个临时需求,需要您统计大会网站的全国各地访问量以在实时大屏上显示。此前您已配置采集全量日志数据,并且在日志服务中打开了查询分析,所以只要输入查询分析Query即可。在此过程中,需求是不断调整的,如下所列:

  • 原始需求:在云栖大会的第一天,您需要统计UV(当日点击用户数量)。

    您要查询所有访问日志中nginx的forward字段的数据(该字段记录访问用户的一个或多个IP,每条日志一个forward字段),通过approx_distinct(forward)计算去重后的IP地址数量,获取从云栖大会首日零时到当前时刻的点击UV数,可以使用如下语句。

    * | select approx_distinct(forward) as uv
  • 需求第一次调整:云栖大会的第二天,需求调整为您需要统计yunqi.aliyun.com这个域名下的用户访问量数据。

    您可以增加一个过滤条件host进行实时查询,使用如下语句。

    host:yunqi.aliyun.com | select approx_distinct(forward) as uv
  • 需求第二次调整:在统计过程中,您发现Nginx访问日志forward字段存在多个IP,您默认只要第一个IP。

    使用如下语句。

    host:yunqi.aliyun.com | select approx_distinct(split_part(forward,',',1)) as uv
  • 需求第三次调整:云栖大会的第三天,需求被加上限制条件,您需要剔除通过UC浏览器访问并点击该浏览器广告而来的用户访问量,统计非UC浏览器广告导流、不重复IP的全国各地用户访问量。

    此时您可以加上一个过滤条件not,使用如下语句。

    host:yunqi.aliyun.com not URL:uc-iflow  | select approx_distinct(split_part(forward,',',1)) as uv

    图 2. 示例示例