开源最大的特征就是开放性,云生态则让开源技术更具开放性与创造性,Elastic 与阿里云的合作正是开源与云生态共生共荣的典范。值此合作三周年之际,我们邀请业界资深人士相聚云端,共话云上Elasticsearch生态与技术的未来。
本篇内容是上海乐言信息科技有限公司Elasticsearch、Kafka负责人徐二涛分享的Elasticsearch在乐言的多场景应用实践。
分享人:上海乐言信息科技有限公司Elasticsearch、Kafka负责人徐二涛
视频地址:http://cloud.video.taobao.com/play/u/3177173649/p/1/e/6/t/1/296822688713.mp4
关于Elasticsearch在乐言科技的多场景应用实践,本文将通过三个部分展开介绍:
- 背景介绍
- ES的核心价值
- ES在乐言的应用场景
- ES面临的挑战
一、背景介绍
上海乐言信息科技有限公司(下文简称“乐言科技”)成立于2016年4月,致力于将AI前沿技术赋能各垂直行业客户,在电商客服、金融咨询、政务问答医疗问诊等领域有广泛应用。
乐言科技的AI智能客服产品“乐语助人”,具备了自动应答训、训练客服、协同人机交互等功能。
二、ES的核心价值
展开介绍ES的核心价值前,首先介绍下ES在乐言科技的业务体量,Elasticsearch在乐言科技支持了多条业务线,包括乐语助人、智能营销、智能推荐、汇乐读。
乐言科技各个业务使用ES的情况都不相同,目前共有30多套ES集群,每天产生50T的数据量,每月的存储数据量级达到P级,双十一期间每天写入数据甚至达到每秒200万。
ES的核心价值离不开Elastic Stack生态圈。近几年Elastic有很大的发展,一方面它的使用场景很丰富,主要是基于ES的搜索和分析,具有多种场景应用。目前,ES可以提供的解决方案有搜索、日志分析、指标分析和安全分析等。
在开源领域,ES有比较成熟的技术组件,比如可视化的Kibana,搜索和查询可以在Kibana汇集成各种各样的直观的图表和柱状图。Elasticsearch是分布式存储计算一组多副本的,在保证高可用性下又保证性能。数据抓取主要有Logstash和Beat。Beat可以结合开源组件自己编写。
从商业的角度来看,X-pack具有更丰富的功能,比如安全、报警、监控和图查询、机器学习等方面。这些X-pack的功能对于开源来说是比较缺乏的,当下很多云厂商都对以上这些功能做了封装。
三、ES在乐言的应用场景
ES在乐言科技的应用场景很丰富,比如日志分析搜索、业务搜索、运营数据、数据分析等等。
在日志系统,乐言科技主要收集外部日志、系统日志、堡垒机日志和业务日志。在业务搜索领域,主要包括商家后台的话术搜索、问答搜索和商品过滤。运营数据包括运营系统的Galaxy系统、运营人员和图标绘制。Galaxy系统也是基于ES研发的,由于ES开箱即用的搜索功能和数据分析功能,大大提高了开发效率。
在运营系统中,运营人员使用Galaxy系统可以很好的进行数据分析,在Kibana上也可以进行多种多样的图标绘制。数据分析后,Kibana也可以支持导出。另外,还有丰富的Rest API可以调用。
在数据分析方面,乐言科技可以对用户的数据打各种各样的标签,然后每天离线实时写入ES,最后生成用户画像、用户标签和统计分析。
总而言之,在数据挖掘和分析方面,ES提供了不可小觑的能力。
ES在乐言科技的应用场景——日志搜索分析
日志系统在乐言科技有很广泛的应用。乐言科技的日志架构是经典的ELK架构。ELK架构最左边是系统日志,通过syslog输出到Kafka;Web日志通过Logstash做一些解析,然后将结构化的数据写入到Kafka;容器日志是基于filebeats实现服务发现的一些功能,可以将容器打上不同的tag,再将需要收集的容器打到不同的Kafka的Topic;应用日志封装了SDK,通过log组件接入Kafka-appender, 然后将数据通过序列化再写入Kafka。
Kafka基于goagent到Elasticsearch,不仅支持基于pro buff的解析,针对logstash来说也能节省不少资源,大大提高Elasticsearch的写入。Kibana是基于业务日志和系统日志的搜索。
在日志采集中,应用日志主要用于异常日志和慢日志,用来定位问题;Web日志主要用于监控web服务器的运营情况,以及一些Web服务器请求情况的监控;系统和堡垒机日志,可以进行一些日志的分析,用来做安全分析。
ES为日志提供了一套比较完美的解决方案,它的主要特点就是任何一个开发运维的同学都可以使用成熟组件,并通过简单的部署搭建一个完整的日志分析服务。从日志的实时性来讲,即使在亿级的日志也能达到10秒级的查询,相对于传统的数据解决方案小时级的时效性都是非常高的。即使在亿级别的日志,在交互式分析上ES的搜索响应也可以做到秒级。
ES提供了非常丰富的查询分析能力,支持全文搜索。由于ES基于倒排索引和存储数据结构,基本所有不同类型的搜索都可以实现。作为不同行业日志搜索最广泛的形式,ES非常完美地解决了日志实时分析应用场景,这也是最近几年ES快速发展的原因之一。
ES在乐言科技的应用场景——Web日志统计分析
针对Web的请求监控,ES可以对请求状态码占比及实时的qps进行绘制图标,比如基于timeline走势的绘图,或基于一些维度的饼状图等等。
在这样的Web日志系统,排障是交互式的可视化操作,非常方便。比如发现一个请求有大量的502, 就可以在Kibana上通过过滤条件过滤出502的相关请求,可以看到502的surname等信息。总而言之,在Web日志分析方面有很强的竞争力。
另外,ES还可以支持扩展,可将来源IP进行GeoIP库的解析,比如解析成地理位置,或查看Web请求分布的情况。
ES在乐言科技的应用场景——业务搜索
业务搜索在商家后台,包括商品过滤、话术搜索、问答搜索和搜索结果排序等功能。对ES搜索条件可以进行多维度的组合。
在业务搜索方面来说,最主要的特点是高可用性,ES的高可用性可达到99.99%。这依赖于阿里云ES,可以创建跨区的部署,支持单机可用的故障容灾。业务搜索一般都比较复杂,ES搜索的高性能也非常突出。它支持单台万级qps搜索,响应实践平均在30毫秒以内。
ES在乐言科技的应用场景——运营数据分析
运营数据分析可以对店铺、订单、商品或用户等维度绘制运营数据监控图表,包括饼图、柱状图或基于时间线的线状图。
由于ES在多维度的聚合排序是相当强劲的,所以ES在开发能力上有丰富的Rest API 非常方便,对于开发效率的提升也很有帮助。
ES有成熟的可视化工具,这就对运营成员很友好,使得他们的学习成本降低,非常简单的就可以绘制各种分析或监测所需的图表,包括在Kibana中检索的数据做过滤,或用于其他的分析等等。
ES在乐言科技的应用场景——数据分析
乐言科技的数据分析会给用户打多种多样的标签,离线统计之后形成用户画像,写入ES,再通过ES的强大聚合和分析能力,观察老用户的流失率和新用户的情况,包括复购用户等等很多有价值的数据。同时,基于ES搜索分析的能力,在大数据报表生成方面,也是很方便的。
总而言之,ES在未来数据挖掘中可以提供更多帮助。
四、ES面临的挑战
ES在使用过程中面临的挑战包括日志和搜索两方面。
日志的挑战
从日志的角度来看,数据量非常大,每天有超过50T的数据产生,若保留30天就会达到P级的日志;日志还有低延迟和高并发写入的特点,这就需要SSD存储,随之而来的就是成本高的问题。
所以从日志的角度来看,挑战就是还没有很好的节约成本的架构。乐言科技的解决方案是采取hot&warm+oss归档的架构。Hot主要是基于SSD节点进行存储,且只保留7天数据,超过7天会定期转存到warm节点,它的成本相对较低。同时这些数据都会写入OSS归档一份,用于查询超过1个月的数据。另外Logstash和Beat在Kafka写的效率不高,这里乐言科技重新编写了goagent,以节省资源。
另外,通过APP名称建索引,然后不同APP名称对应的索引在ES中表留了时效性,也可以节省成本,包括约束研发、打印日志的规范等等。
搜索的挑战
搜索的挑战主要是高可用性和高性能,不仅要达到99.99%可用性还要做到比较丰富的性能查询。所以从单机可用区故障容灾方面来讲,主要是使用阿里云ES在创建过程中创建的多可用区,即使这样也避免不了ES集群会有故障。所以在重要的ES搜索方面,乐言科技的解决方案是做了一主一备的搜索。一主一备是双写,主份是以查询为主的,备份也可以进行少量级别的查询。如果主份有问题,程序可以自动接入到备份集群。
在开源Elasticsearch的安全性也是很大的挑战。针对这个问题的解决方案,乐言科技做了基于Aliyun Elasticsearch支持的X-pack认证,通过不同的role和user完成关系架构,然后分配给所有级别一个权限,以保证数据的安全性。