• 运营日志分析
  • 旅遊和交通运輸

Ctrip: 携程善用Elasticsearch 进行集中式的运维日志管理为业务部门提供统一的搜索服务平台

概览
  • 2.5万亿
    文档存放在 Elasticsearch 里
  • 700个
    节点的数量
  • 1600亿
    每天日志增长 (每天日志数量)
携程使用

Elasticsearch 统一收集日志,并用 Kibana 轻易地把数据可视化。

在运维和业务层面,

Elasticsearch 都帮助携程解决很多问题且优化流程。

携程网站具有海量数据,

而 Elasticsearch 的水平扩展能力以及可视化和可调试的特点,替他们带来很大的便利。

公司概览

携程创立于 1999 年,总部设于中国上海,现为亚洲领先的网上旅行社,业务包括酒店、机票及火车票预订、旅游团、商务旅游管理等全方位旅游服务。 2003 年,携程于美国纳斯达克证券交易所上市,至今公司市值已上升超过 30 倍。 2014 年,公司总交易额达 245 亿美元,总佣金收入达 13 亿美元。

攜程与 ELASTIC 携手合作的旅程

收集日志并把数据可视化

在 2014 年年初,公司最大的痛点就是当时日志还没有集中搜集起来,所有的系统和服务器的日志散步在各自的服务器上面,每次出现问题排查的时候,研发人员都需要登录到相对应的服务器,但这种方式效率非常低下,解决问题耗时非常长,所以当时运维的负责人就给我们提出一个需求,这些服务器上的日志有没有办法把它统一的收集起来,在我们需要的时候能够随时的查看。当时我们比较了各种不同的方案,才发现可利用 Elasticsearch 作为后端,透过 Logstash 把数据收集起来,然后再用 Kibana 简单地把数据可视化。

携程在很早期已经开始使用 Elasticsearch,见证着不同版本的用户体验升级,包括引入SKbroker去提早熔断坏查询、数据模型的设计改善、简化故障恢复流程等。

使用 Elasticsearch 在运维和业务层面协助公司

在公司的运维方面,携程主要是使用 Elastick Stack 这个一套工具,来处理数据的收集分析。他们的架构在这几年的变化很大,最早期是参照经典的 Elastic Stack 架构,使用 Logstash 收集数据,并用 Redis 作为中间缓存,后面用logstash做数据的解析。随着携程不停改进架构,目前转为使用基于磁盘阵列的 Kafka 作为中间缓存,提高吞吐量和容错性。

在公司的业务层面,携程旅行网高级技术经理胡航表示:”要求所有业务人员迅速学习 Elasticsearch 并广泛应用,我们觉得可能需要花一些时间,比较费时间,所以之前我们做了一个自己的简单版客户端,后来发现 Elasticsearch 比我们想象中要更容易学习和使用,所以我们现在把这个结构改掉了,变成由我们提供这个框架,把业务相关的一些数据收集起来,然后综合成一个 Elasticsearch 的文档,复制到 Elasticsearch 上。”

Elasticsearch 有助公司扩展数据的查询能力和数据量

携程技术保障部系统研发总监吴晓刚认为,Elasticsearch 其中一个优点在于其水平扩展能力,他说:”搜索引擎大多是基于 Lucene 去做的,Elasticsearch 就是能造成这种伺服器形式对外提供,对于用户来说,不用担心整个数据的分布底层如何运作,能把这个任务交给整个后端服务去做,方便扩展数据的查询能力和数据量,这个对于特别是像携程具有海量数据的这种网站来说,是非常有用的,否则公司需要耗费过多精力去优化底层。”

Elasticsearch 的可视化和可调试的特点,亦为携程带来很大的便利。他们过往是基于 Lucene 自己封装一套代码,这套代码实现功能起来比较方便,但是一旦出问题便要重新审视代码逻辑,查询语句如何生成等,没法直观的解决问题。然而,他们转到 Elasticsearch 后,可以直接看到 QueryDSL 生成和 Mapping,更可直接查看数据。

携程在 Elasticsearch 建立的系统规模十分庞大,目前在生产环境所有的,截止现在所有线上运行的集群数量是在 94 个,数据节点的数量加起来像是超过 700 多个。最大的集群就是做日志分析,目前这个集群的数据节点数量已经超过了 330 个。

Elastic Podcast - Ctrip