整体解决方案:基于微服务的日志中心设计、实现与关键配置

优采云 发布时间: 2020-09-06 17:07

  基于微服务的日志中心的设计,实现和关键配置

  转载本文必须注明出处:微信公众号EAWorld,必须对违法者进行调查。

  简介:

  日志一直是操作,维护和开发人员最关注的问题。操作维护人员可以通过相关的日志信息及时发现系统危害和系统故障,并安排人员及时处理和解决问题。如果没有日志信息的帮助,开发人员就无法解决问题。没有日志就等于没有眼睛和失去方向。

  微服务正变得越来越流行。在享受微服务架构的好处的同时,它们还必须承担由微服务引起的麻烦。日志管理就是其中之一。微服务有一个很大的功能:分布式。分布式部署的结果是,日志信息分散在各处,这给采集日志存储带来了一些挑战:

  本文文章将讨论与日志管理有关的问题。

  目录:

  一、日志的重要性和复杂性

  二、基于微服务的日志中心架构设计

  三、日志中心的流程和实现

  四、日志中心的关键配置

  五、摘要

  一、日志的重要性和复杂性

  说到管理日志,在管理日志之前有一个先决条件。我们需要知道什么是日志,它们可以做什么,以及它们的用途。用百度百科的话来说,它是系统运行事件的记录。

  当前系统的生命体征记录在日志文件中,就像我们在医院进行身体检查后得到的身体检查表一样,它反映了我们的肝功能,肾功能,血液常规和其他特定指标。日志文件在应用程序系统中的功能就像检查表一样,它反映了系统的运行状况,系统的运行事件以及系统的更改状态。

  日志在系统中扮演监护人的角色。它是确保高度可靠的服务并记录系统的每一个动作的基础。在操作和维护级别,业务级别和安全级别上都有日志。系统监视,异常处理,安全性和审计都离不开日志的帮助。

  日志类型很多,一个健壮的系统可能收录各种日志信息。

  我们应该捕获如此复杂多样的日志吗?我们需要什么?这些都是设计日志中心体系结构时需要考虑的问题。

  二、基于微服务

  日志中心架构设计

  日志中心是微服务生态系统中不可或缺的一部分,并且是第二个监视主控。在这里分享我们的产品级设计实践,以了解基于微服务的体系结构中日志中心在技术体系结构中的位置以及如何部署它。

  在此设计中,微服务结构由以下部分组成:

  日志中心的四个关键字不在图中,因为它们由多个独立的组件组成。这些组件是Filebeat,Kafka,Logstash和Elastic search,它们一起构成了日志中心。

  经过考虑和研究,我们确定了一套适合当前微服务架构的日志管理流程。

  1.日志选择----确定要选择进行分析的日志记录

  2.日志采集 ---- filebeat易于采集

  3.日志缓冲区---- Kafka在本地缓存以进行缓冲

  4.日志过滤器---- logstash过滤器

  5.日志存储---- elasticsearch构建索引并存储在数据库中

  6.日志检索----使用elasticsearch自己的检索功能

  7.日志显示----参考kibana样式实现日志数据可视化

  在传统的ELK中,Logstash日志采集被Filebeat取代,并且在日志存储之前添加了Kafka缓冲区和logstash过滤。这套过程可确保完整的功能,同时提高性能,并尽可能实现轻量级部署。

  三、日志中心的流程和实现

  选择:根据业务场景,日志内容复杂多样。如何采集有价值的日志是我们的重点。日志的值实际上取决于业务操作,并且不同业务场景中相同类型的日志的值将完全不同。根据以前的业务实践,结合企业级的一些业务要求,我们选择了重点关注以下类型的日志。 •跟踪日志[trace.log]系统维护人员使用Server引擎的调试日志来定位系统操作问题。 •系统日志[system.log]运行入口和出口日志的大粒度引擎用于调用堆栈分析,并且可以用于性能分析。 •部署日志[deploy.log]记录系统启动,停止,组件包部署,群集通知和其他信息的日志。 •引擎日志[engine.log]细粒度的引擎操作日志,可以打印上下文数据以查找业务问题。 •组件包日志[contribution.log]组件包记录的业务日志(使用基本组件库的日志输出API编写日志)。通过以上类型的日志,我们可以阐明分析问题时要查找的位置,并通过分类缩小搜索范围,从而提高了效率。 采集(Filebeat):专注于轻量级

  微服务应用程序将分布在各个领域的各个系统中。在每个域中的每个系统中相应地生成应用程序日志。对于日志管理,我们必须首先执行日志采集的工作。记录采集工作,我们在Elastic Stack中选择Filebeat。

  Filebeat链接到该应用程序,因为我们需要知道采集每个位置的日志信息,因此轻量级实际上是我们考虑的主要因素。

  Filebeat将具有一个或多个称为Prospectors的检测器,它们可以实时监视指定文件或指定文件目录的更改状态,并将更改状态传输到下一层--- Spooler进行处理。

  我们将在日志过滤器中引入Filebeat的另一个功能,这是查找源的关键。

  这两点恰好满足了我们对实时日志采集的需求。使用Filebeat可以及时动态存储和采样新添加的日志。到目前为止,如何采集记录信息的问题已得到很好的解决。

  缓冲区(Kafka):吞吐量大,易于扩展,上限高

  在日志存储之前,我们引入了一个组件--- Kafka作为日志缓冲层。 Kafka充当缓冲,以避免高峰应用程序对ES的影响。由于ES瓶颈而导致数据丢失问题。同时,它还可以用作数据摘要。

  选择kafka进行日志缓冲有几个优点:

  筛选(Logstash):预先掩埋点并方便定位

  日志信息是通过诸如filebeat和kafka之类的工具采集和传输的,从而为日志事件添加了许多其他信息。使用Logstash实现二次处理,可以对其进行过滤或在过滤器中进行处理。

  当我们在Filebeat中采集信息时,我们通过将同一服务器上的日志信息发送到同一Kafka主题来实现日志聚合。该主题名称是服务器的关键信息。从更细粒度的角度讲,您还可以将每个应用程序的信息作为主题进行汇总。通过Kafka中的Filebeat接收到的日志信息收录一个标识符---日志来自何处。 Logstash的作用是在将日志导入ES之前,通过标识对相应的日志信息进行二次筛选和汇总处理,然后将其发送给ES,以为后续搜索提供基础。我们可以很方便地找到问题所在。

  存储(ES):易于扩展和易于使用

  Elastic是Lucene的一个软件包,它提供了REST API的操作接口,该接口可以直接使用。

  选择ElasticSearch的主要原因是:分布式部署,易于扩展;处理海量数据可以满足各种需求;强大的搜索功能,基于Lucene可以实现快速搜索;活跃的开发社区,更多信息,易于使用。

  搜索(ES):分为几类

  Elasticsearch本身是一个功能强大的搜索引擎,它支持通过系统,应用程序,应用程序实例分组,应用程序实例IP,关键字,日志级别和时间间隔来检索所需的日志信息。

  Kibana:简单的配置,清晰而清晰的密集日志信息视图,经常让人头晕目眩。需要对日志信息进行精简和细化,对日志信息进行整合和分析,并以图表的形式显示日志信息。在显示过程中,我们可以学习和吸收Kibana在日志可视化方面的工作,以实现日志的可视化处理。您可以通过简单的配置查看特定服务或特定应用程序的清晰可视化日志分析结果。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线