华泰证券Elasticsearch在日志搜索、日志分析、链路管理系统方面的应用实践

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
日志服务 SLS,月写入数据量 50GB 1个月
简介: 2018Elastic Meetup南京交流会,由华泰证券李文强带来以“华泰证券Elasticsearch应用实践”为题的演讲。本文首先介绍了华泰证券具有系统运维繁琐、日志不能长期保存、日志数据价值没有挖掘、大数据领的一角的特点,接着介绍了它在日志搜索、日志分析和链路管理系统方面的应用实践,最后介绍了华泰证券Elasticsearch在使用中应注意的事项。

2018Elastic Meetup南京交流会,由华泰证券李文强带来以“华泰证券Elasticsearch应用实践”为题的演讲。本文首先介绍了华泰证券具有系统运维繁琐、日志不能长期保存、日志数据价值没有挖掘、大数据领的一角的特点。接着介绍了它在日志搜索、日志分析和链路管理系统方面的应用实践。最后介绍了华泰证券Elasticsearch在使用中应注意的事项。
数十款阿里云产品限时折扣中,赶快点击这里,领劵开始云上实践吧!
直播视频回顾
以下内容根据现场分享整理而成。

建设背景及现状

背景

在过去,华泰证券具有系统运维繁琐、日志不能长期保存、日志数据价值没有挖掘、大数据领的一角的四个特点。所谓的系统运维繁琐是指系统多、独立建设、服务产生大量日志、运维时需要登陆服务器才能查看日志等,遇到复杂问题时需要一台台地登陆服务器搜索相关日志文件才能定位问题。日志没有长期保存是指根据证券行业相关的法律法规,日志数需要保存一定年限并支持随时调取。日志数据价值没有挖掘是指日志中包含非常有价值的信息,但并没有深入挖掘。大数据领域的一角是指Hadoop主要面向的是结构化数据的存储和分析,而不是非结构化数据的存储和分析。

现状

  • 2016年6月,华泰证券开始建设Elasticsearch集群,由于机房通过专线进行联网,当数据量太大时机房会被占用,所以机房不一样会导致需要许多个集群,因此集群需要单独建设。
  • Elasticsearch建设容量为120T,每天数据量会占用 600G甚至800G的空间,由于Elasticsearch容量比较小,所以日志保存时间非常短,有些只能保存两个月甚至几个星期,只有非常重要的信息才能保存三个月。在未来计划将Elasticsearch容量进行扩展,预期日志保存时间能够达到一年甚至两年以上。
  • 华泰证券支持的应用包括支撑涨乐、理财平台、监控数据分析、日志分析等。例如理财平台,Elasticsearch能够发现用户的行为,并给出用户建议方案。
    展望未来,中国证券市场已发生根本性转变,现在正面临着历史性的发展机遇。面对新的形势,华泰证券将继续坚持规范化、集团化、国际化发展战略,进一步加快公司做大做强步伐,力争尽快使公司成为具有核心竞争力的、业务规模和综合实力进入行业前列的证券控股集团。

应用实践

日志搜索

在日志搜索中,日志源是整个ES上的第一部分,跟ELK的采集与展示基本一致,它主要分为日志采集模块、采集代理、日志存储模块、日志检索模型、前台展示模块、采集管理模块。
其中,日志采集模块又分为采集代理和日志处理两部分。采集处理主要用来做数据的缓存,日志处理是把日志消费成两份,一份消费进入到ES,另一份消费日志进行实时报警。日志检索模块是对日志进行展示,它主要有三个功能,即统一的日志检索、实时监控报警、统一权限管理功能。

日志分析

数据源不仅包括日志,还包括网页和数据库。数据源通过morphling将数据采集放置三个库中,三个库包含ES、HDFS和Hbase。ES最终进行日志检索,HDFS和Hbase最终通过Hve和Kylin进行展现。

链路管理系统

在链路管理系统中,由数据质量分析、统一采集框架、自动化部署、应用监控构成一个内循环系统。

  • 对于数据质量的分析而言,用户要求数据一条不能多一条不能少,但在实际上对于分支系统来讲,由于链路比较长,所以几乎是不可能实现数据不多不失的。但是链路管理系统可以做到的是去辅助链路发现是否有质量问题,并在这个系统里及时对数据质量进行分析。
    例如,一个节点发送1000万条数据,通过链路管理最终进入到ES。在这个过程中可能会出现数据延迟的现象,若发送的曲线和对应发送的最终曲线一致,那么就说明数据质量是完好的,即最终数据是一致的。若两条曲线不能拟合,那就说明有数据已丢失。
  • 对于统一采集框架而言,即在采集的日志文件中对日志进行标准化,比如,日志应该包含什么等等。
  • 自动化部署即对部署过程的每一个步骤自动化,目前部署过程涉及到应用、环境和部署流程等。要实现自动化首先要做的是将需要部署的应用、环境和流程进行建模,并需要一个自动化部署系统来支撑。
  • 应用监控,即每天巡检只需要通过应用监控系统就能够知道每个链路上的节点是否正常,如果异常则会报警。

使用经验

华泰证券Elasticsearch的使用有六点注意事项。第一,磁盘目录不易过多,建议做Raid5,便于管理;第二,索引分片根据实际需求分配;第三,冷热分离策略;第四,根据业务特点进行集群部署,通过TrieNode连接;第五,元数据不易过多,过多会导致集群性能降低,触发BUG;第六,设置节点离开时的分片延迟分配策略。
其中,对于磁盘目录不易过多问题而言,需采取官网建议,即采取裸盘。由于单台机器有24块盘,长期运行当某些分片都落在某个磁盘上时,会造成单盘的读写热点问题,且这些分片的数据量较大时,这个磁盘的空间很容易爆满,ES也不会进行数据均衡,一旦磁盘超过阈值,整个节点都不会再分配分片,造成空间利用率不足的情况。可以通过新购机器的磁盘做Raid5和统一管理来解决这个问题,这样既不会出现某一块盘爆满,还能提升整体I/O吞吐,将老机器逐渐替换。
Jstat发现Master持续GC时,CPU使用率会非常高。可能存在有内存泄露问题,这就需要把Jmap内存dump出来分析,接着进一步分析漏点,最后修改源码并验证。
对于使用经验中的第六点, 集群运行很久后,集群分片就会越来越多,元数据就会多,当集群分片个数超过1.5万时,性能将出现问题,运行一段时间后集群运行不正常,节点就会无法连接Master。
在集群实际运转过程中,往往会出现节点由于网络或GC等原因从集群中离开、日常运维时节点下线的情况。集群为避免数据丢失,必须保证每个分片都有足够的副本,所以会产生大量的网络I/O,而这时如果节点重新加入集群,Elasticsearch会为该节点再次分配数据分片,这将再次导致大量的网络I/O操作。在这种情况下,集群长期处于Yellow状态,恢复非常缓慢,通过监控可看到分片处于迁移状态。这就需要通过设置参数index.unassigned.nod_left.delayed_timeout来延迟分片平衡的时间,为运维和节点异常恢复提供缓冲时间。

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
6天前
|
存储 SQL 监控
|
6天前
|
自然语言处理 监控 数据可视化
|
7天前
|
存储 Linux Docker
centos系统清理docker日志文件
通过以上方法,可以有效清理和管理CentOS系统中的Docker日志文件,防止日志文件占用过多磁盘空间。选择合适的方法取决于具体的应用场景和需求,可以结合手动清理、logrotate和调整日志驱动等多种方式,确保系统的高效运行。
9 2
|
18天前
|
XML JSON 监控
告别简陋:Java日志系统的最佳实践
【10月更文挑战第19天】 在Java开发中,`System.out.println()` 是最基本的输出方法,但它在实际项目中往往被认为是不专业和不足够的。本文将探讨为什么在现代Java应用中应该避免使用 `System.out.println()`,并介绍几种更先进的日志解决方案。
42 1
|
26天前
|
监控 网络协议 安全
Linux系统日志管理
Linux系统日志管理
40 3
|
1月前
|
监控 应用服务中间件 网络安全
#637481#基于django和neo4j的日志分析系统
#637481#基于django和neo4j的日志分析系统
32 4
|
7天前
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
97 30
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
1月前
|
XML JSON Java
Logback 与 log4j2 性能对比:谁才是日志框架的性能王者?
【10月更文挑战第5天】在Java开发中,日志框架是不可或缺的工具,它们帮助我们记录系统运行时的信息、警告和错误,对于开发人员来说至关重要。在众多日志框架中,Logback和log4j2以其卓越的性能和丰富的功能脱颖而出,成为开发者们的首选。本文将深入探讨Logback与log4j2在性能方面的对比,通过详细的分析和实例,帮助大家理解两者之间的性能差异,以便在实际项目中做出更明智的选择。
196 3
|
1月前
|
存储 缓存 关系型数据库
MySQL事务日志-Redo Log工作原理分析
事务的隔离性和原子性分别通过锁和事务日志实现,而持久性则依赖于事务日志中的`Redo Log`。在MySQL中,`Redo Log`确保已提交事务的数据能持久保存,即使系统崩溃也能通过重做日志恢复数据。其工作原理是记录数据在内存中的更改,待事务提交时写入磁盘。此外,`Redo Log`采用简单的物理日志格式和高效的顺序IO,确保快速提交。通过不同的落盘策略,可在性能和安全性之间做出权衡。
1613 14
|
29天前
|
Python
log日志学习
【10月更文挑战第9天】 python处理log打印模块log的使用和介绍
28 0