从日志到双十一大屏只要一步:LOG/SLS+DataV 打通

提到双十一人人都会想到天猫霸气的实时大屏。说起实时大屏,都会想到最典型的流式计算架构:

  • 数据采集:将来自各源头数据实时采集
  • 中间存储:利用类Kafka Queue进行生产系统和消费系统解耦
  • 实时计算:环节中最重要环节,订阅实时数据,通过计算规则对窗口中数据进行运算
  • 结果存储:计算结果数据存入SQL和NoSQL
  • 可视化:通过API调用结果数据进行展示

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

​ 除这种方案外,今天给大家介绍一种新的方法:通过日志服务(LOG,原SLS)查询分析LogSearch/Analytics API 直接对接DataV进行大屏展示。

2017年9月日志服务(原SLS)加强日志实时分析功能(LogSearch/Analytics),可以使用查询+SQL92语法对日志进行实时分析。在结果分析可视化上,除了使用自带Dashboard外,还支持Grafana、Tableua(JDBC)等对接方式

两种方式差别

计算一般根据数据量、实时性和业务需求会分为两种方式:实时计算(流计算)、离线计算(数据仓库+离线计算),日志服务(原SLS)对实时采集数据提供两种方式对接。

除此之外,对于数据量偏大,对实时性有要求的日志分析场景,我们提供实时索引LogHub中数据机制,之后可通过LogSearch/Anlaytics直接进行查询分析。这种方法好处是什么:

  • 快速:API传入Query立马拿到结果,无需等待和预计算结果
  • 实时:日志产生到反馈大屏99.9%情况下1秒内
  • 动态:无论修改统计方法、补数据能立马刷新结果,不需要等待重新计算

当然没有一个计算系统是万能的,这种方式限制如下:

  • 数据量:单次计算数据量在百亿以下,超过需要限定时间段
  • 计算灵活度:目前计算限于SQL92语法,不支持自定义UDF

实际案例:不断调整统计口径下实时大屏

云栖大会期间有个临时需求,统计线上(网站)在全国各地访问量。由于之前采集全量日志数据并且在日志服务中打开了查询分析,所以只要写一个查询分析Query即可。以统计UV为例子:我们对所有访问日志中nginx下forward字段获取10月11日到目前唯一计数:

* | select approx_distinct(forward) as uv

线上已跑了1天需求变更了,只需要统计yunqi这个域名下的数据。我们增加了一个过滤条件(host),立马拿到结果:

host:yunqi.aliyun.com | select approx_distinct(forward) as uv

后来发现Nginx访问日志中有多个IP情况,默认情况下只要第一个ip即可,在查询中对Query进行处理

host:yunqi.aliyun.com | select approx_distinct(split_part(forward,',',1)) as uv

到第三天接到需求,针对访问计算中需要把uc中广告访问去掉,于是我们加上一个过滤条件(not …)既马上算到最新结果:

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

最后大屏效果如下:

使用说明:SLS对接DataV

主要分3个步骤:

  1. 数据采集,参考文档
  2. 索引设置 与控制台查询,参考索引设置与可视化,或最佳实践中网站日志分析案例
  3. 对接DataV插件,将实时查询SQL转化为视图

我们主要演示步骤3,在做完1、2步骤后,在查询页面可以看到原始日志:

创建dataV数据源

类型指定『简单日志服务-SLS』

名称自定义

AK ID和AK Secret填写主账号,或者有权限读取日志服务的子帐号的AK。

Endpoint填写 日志服务的project所在region的地址。图中为杭州的region地址。

创建一个折线图

创建一个折线图,在折线图的数据配置中,数据源类型选择『简单日志服务-SLS』,然后选择刚刚创建的数据源『log_service_api』在查询中输入参数。

查询参数样例如下:

{
    "projectName": "dashboard-demo",
    "logStoreName": "access-log",
    "topic": "",
    "from": ":from",
    "to": ":to",
    "query": "*| select approx_distinct(remote_addr) as uv ,count(1) as pv , date_format(from_unixtime(date_trunc('hour',__time__) ) ,'%Y/%m/%d %H:%i:%s')   as time group by time  order by time limit 1000" ,
    "line": 100,
    "offset": 0
  }

projectName填写自己的project。

logstoreName填写日志的logstore。

from和to分别是日志的起始和结束时间。

注意,上文的我们填写的是:from和:to。 在测试时,可以先填写unix time,例如1509897600。等发布之后,换成:from和:to这种形式,然后我们可以在url参数里控制这两个数值的具体时间范围。例如,预览是的url是http://datav.aliyun.com/screen/86312, 打开http://datav.aliyun.com/screen/86312?from=1510796077&to=1510798877后,会按照指定的时间进行计算。

query填写查询的条件,query的语法参考分析语法文档。样例中是展示每分钟的pv数。 query中的时间格式,一定要是2017/07/11 12:00:00这种,所以采用date_format(from_unixtime(date_trunc('hour',__time__) ) ,'%Y/%m/%d %H:%i:%s') 把时间对齐到整点,再转化成目标格式。

其他参数采用默认值。

配置完成后,点击『查看数据响应结果』:

点击上方『使用过滤器』,然后新建一个过滤器:

过滤器内容填写:

return Object.keys(data).map((key) => {
  let d= data[key];
  d["pv"] = parseInt(d["pv"]);
  return d;
}
)

在过滤器中,要把y轴用到的结果变成int类型,上述样例中,y轴是pv,所以需要转换pv列。

能看到在结果中有t和pv两列,那么我们在x轴配置为t,y轴配置成pv。

配置一个饼状图

查询填写:

{
    "projectName": "dashboard-demo",
    "logStoreName": "access-log",
    "topic": "",
    "from": 1509897600,
    "to": 1509984000,
    "query": "*| select count(1) as pv ,method group by method" ,
    "line": 100,
    "offset": 0
  }

在查询中,我们计算不同method的占比。

添加一个过滤器,过滤器填写:

return Object.keys(data).map((key) => {
  let d= data[key];
  d["pv"] = parseInt(d["pv"]);
  return d;
}
)

饼图的type填写method, value填写pv。

预览和发布

点击预览和发布,一个大屏就创建成功了。开发者和业务同学可以在双十一当天实时看到自己的业务访问情况!

附上:Demo地址。url中的参数from和to,大家可以随意切换成任意时间。

操作演示:

时间: 2025-01-26 07:14:37

从日志到双十一大屏只要一步:LOG/SLS+DataV 打通的相关文章

#大促第一弹#篇一:好价即正义!阿里云双十一大促主会场全攻略

2016阿里云双十一"生生态狂欢节"已经于10月24日正式开启,从已开放的活动页面来看,活动分为两个阶段: 10月24日-11月10的预热阶段和11月11日00:00:00之后的云服务抢购阶段.而活动一共有8大会场:包括主会场(云产品).安全(云盾)分会场.大数据分会场.云市场分会场.域名与网站分会场.解决方案分会场.国际分会场,以及特设的无线专场. 在双十一这个一年唯一一次的大幅度降价促销日,怎样才能花最少的钱配置最特惠的云服务?在异彩纷呈的活动会场中,怎样掌控各个促销时段选购惊爆价

#大促第一弹#:阿里云双十一大促主会场全攻略

2016阿里云双十一"生态狂欢节"已经于10月24日正式开启,从已开放的活动页面来看,活动分为两个阶段: 10月24日-11月10的预热阶段和11月11日00:00:00之后的云服务抢购阶段.而活动一共有8大会场:包括主会场(云产品).安全(云盾)分会场.大数据分会场.云市场分会场.域名与网站分会场.解决方案分会场.国际分会场,以及特设的无线专场.  丨活动阵地:http://click.aliyun.com/m/7262/ 丨关键词:充值.抽奖.返券.5折.买赠  l攻略一: 充值返

宗宁:双十一大促变大坑,淘宝商城视诚信无物

上午刚写了文章说双十一大促可能是淘宝商城的末日盛宴,晚上回来,微薄上就满是淘宝大促坑爹的微薄. 主要问题就是虚假抬价后打折,折扣无法实现承诺,产品本身在实体店打五折,网上价格毫无优势,很多真正便宜的东西,看到就已经无货下架了.而最坑爹的是,我女友甚至发现一件她大一时买过的f4毛衣,现在竟然又翻出库存来大促.而veryXXXX品牌的一件大衣,也是去年就已经买过的前年打折款.大家去专柜试是没用了,因为都没新款的.类似的旧款,光我女朋友就发现了四五件,真可怕啊. . &http://www.aliyu

秒针双十一大促来袭 保驾护航线上营销

从朋友那听说了这样一件有意思的事情,说他们公司也参加了双十一大促.其实这件事情本身并没有问题,但是当你听说这是一家做大数据营销的技术公司时,问题来了,大数据技术公司促什么? 朋友发过来这样一个界面,顿时明白了,其实,对于大众消费品而言,或者快消品而言,双十一大促是理所应当,因为在这样的购物狂欢节里,日常消耗品看起来更有市场一些.不过,眼尖的消费者肯定发现了今年与往年也有一些不同,与往年相比,不管是商家还是消费者,都显得理性了. 朋友介绍说,秒针系统的产品虽然不同于大众快消品,更多的是基于技术层面

天猫今日举办了双十一大促之前的首场媒体沟通会

摘要: 10月15日下午消息,天猫今日举办了双十一大促之前的首场媒体沟通会.根据官方披露的信息,今年双十一将首次打通线上线下,也就是说部分品牌的线下实体店将参与到大促中.与此同 10月15日下午消息,天猫今日举办了"双十一"大促之前的首场媒体沟通会.根据官方披露的信息,今年"双十一"将首次打通线上线下,也就是说部分品牌的线下实体店将参与到大促中.与此同时,今年"双十一"将突出社交互动.个性化推送.等部分,为阿里提出的所谓"社交商务&qu

易车‧惠买车加入双十一大促 超千万补贴用户

易车今天宣布其http://www.aliyun.com/zixun/aggregation/33446.html">11.11"购车狂欢节"的主力之一--易车‧惠买车将于11月1日起正式启动双十一大促.易车‧惠买车将拿出千万现金补贴用户,单个用户的补贴金额高至6000元.易车‧惠买车意图通过常态化手段解决汽车电商最大的痛点价格透明问题,直逼电商本质,而双十一也是该平台自上线以来最大的促销活动之一. 易车‧惠买车为双十一活动设置价值6000元的"疯抢三重礼包&

阿里双十一大促,技术准备只做了这两件事情?

双十一的技术准备在做两件事情:第一是系统的准备尽可能的接近真实,包括容量确定性和资源的确定性:第二是整个过程中的效率,包括人和单位资源效率.仅凭这两件事情,就能撑起这场大促吗? 本文整理自蒋江伟在ArchSummit 2016 北京站上的演讲. 后台回复关键词「双十一」,下载本文完整PPT. 亲历双十一 从2009年到2016年,参与了8届双十一技术备战工作.2009年的双十一,印象并不深刻,主要原因是当时整个淘宝的体量已经很大,每天的交易额已经有几亿的规模,而当时的淘宝商城双十一交易额只有50

亿玛CEO柯细兴解读双十一大数据价值

亿玛CEO柯细兴"除了上帝,任何人都必须用数据来说话."管理学大师戴明曾如是说.如今,大数据俨然成为一个席卷全球的热词和话题,大数据的相关理论与技术已经成为国内外学术界.产业界和应用行业普遍关注的热点研究问题,在国内外掀起了一个空前的研究热潮.刚刚过去的双十一电商狂欢节,天猫销售破百亿仅用38分钟,中午1点,成交额便已超过去年全天的销售总额,最终的成交额定格在571亿--而这一系列亮眼的成绩都与大数据息息相关."通过数据,我们能够帮助客户找回85%的网络用户."亿玛

阿里云Elasticsearch11月2日正式商业化,双十一大促最低5折

阿里云Elasticsearch是阿里云和Elasticsearch开源公司Elasitc联合打造的重磅产品,经过了2个月的公测锤炼,已于11月2日正式商业化.我们决定在双十一期间(11月10日~11日)以最低5折的产品优惠回馈广大用户. 有两种优惠方式可选: A:如果您是后付费,可购买后付费储值卡包,有1万.2万.5万.10万四个档次,分别可以抵扣1.15万.2.4万.6.2万.13万,相当于8折优惠. B:如果您选择预付费年付,最高优惠可达5折(2核8G规格),其他规格全线7折. 更多优惠详