APP下载

多级日志管理系统的应用

2019-06-28中移互联杭州科技有限公司阚宗挺刘顺宇

网络安全和信息化 2019年6期
关键词:日志储存统一

■ 中移互联(杭州)科技有限公司 阚宗挺 刘顺宇

编者按:网络信息迅速发展的今天,企业在面对用户剧增的实际场景时,单节点的接口服务已无法满足剧增的访问量,这时就需要用到分布式架构:企业将相同的服务发布到不同的服务器上。但在分布式架构中日志的管理就成了一个必须要解决的问题,分散式的日志结构难以迅速定位查询目标,因此要用到分布式日志服务来对我们的日志进行统一管理。

在项目中通常会遇到并发量突增时导致系统不可用而采用分布式架构的情况,日志此时也要进行统一管理,方便查询定位。在进行统一管理时,如果集群服务器有许多台,那么这么多台服务器同时向统一日志系统发送数据,将导致系统的IO效率特别底下,存在数据丢失的情况。为解决该问题,加入一个二级日志储存策略,将部分服务器日志先通过缓存传入二级储存,再通过二级储存通过缓存传入统一日志系统,这样统一日志系统的总连接数大大减少,

IO效率大大提高。另外,为了保证总系统的稳定性,业务和日志服务之间必须是解耦的,因此通过监听日志文件而非采用远程写入日志的形式。日志服务器宕机对业务无干扰,某个业务服务器宕机对日志服务也没有影响,日志服务可以继续收集其他服务器的日志。

需求分析

本系统包括三个需求模块,分别是组件通信模块、分级采集日志模块、日志管理模块、日志查询分析模块。

1.组件通信模块

应用服务器和二级储存,二级储存和统一日志服务之间都是通过远程过程调用来实现的。在数据传输时,会把待传数据放到缓冲中,再进行发送。

2.分级采集日志模块

此模块主要是为了解决集群中的应用服务器过多同时进行数据传输时造成统一日志服务端负载过大导致系统崩溃,在应用服务器和日志服务储存端添加一个二级储存作为一个中间传输间,二级服务器与应用服务器之间是一对多关系,这样通过增加二级缓存数可避免上述系统崩溃的情况,而且当某个应用服务器长时间未发送日志时,会在其对应的二级存储上发出日志警报,帮助查找原因。

3.日志管理模块

对生产日志进行日常监控,并提供实时预警,此外为了实现系统分权限、分角色管理,还应用了PaaS下的多租户框架,以此来实现不同用户组对不同日志的操作和监控。

4.日志查询分析模块

日志查询分析是对统一日志服务中的日志进行错误回溯,数据挖掘并提取有用的信息,可以用来监测接口的性能以及给用户画像。

总体设计

在本文介绍的统一日志管理总体上采用分层的思想建立二级储存系统,同时为了提高IO效率,会通过缓存来减少单位时间传输次数。通过Elasticsearch技术来实现日志的持久化储存和全文检索。可以用来处理PB级的数据,查询效率高。为了避免日志储存并发大的问题可以配置Elasticsearch集 群来实现。当我们的服务相当多时,单节点储存的效率是相当低的,因此我们添加了一个二级储存策略,将不同的服务日志分开持久化到二级日志服务中,再将二级服务中的日志投递到服务日志中随后交给Elasticsearch处理,图1是整体设计架构图。

系统模块设计

1.日志通用模型

图1 总体设计

图2 日志通用模型

图3 日志采集架构

在进行分布式日志系统中,沿用之前的通用的日志模型是不准确的,因为普通的日志模型一般包括:日志级别、日志生成时间、日志所在类名、日志内容。在分布式系统中,我们应该在普通日志模型的基础上加上服务器的IP以及日志的文件路径。这样在进行查找错误时,可以快速定位到哪个项目的哪个类下发生错误,便能快速的对项目进行维护,日志通用模型如图2所示。

2.日志采集模块

日志采集采用无侵入式的方式来采集日志,用户按照原来的方式通过配置将日志输出到该服务器特定的文件中,采集时通过在服务器上安装日志监听插件进行监听特定文件夹下的文件信息是否发生变化,把增加的部分数据采集到该插件中,通过该插件的投递功能将缓存的日志投递到远程的日志服务中,这样通过在每个服务器中加入日志监听插件来实现日志的采集和统一储存,架构如图3所示。

3.日志查询模块

不同的日志储存方案可以提高日志查询的效率,因此我们可以采用Elasticsearch对日志进行储存,储存之前将接受到的文件通过日志的模型字段进行内容映射,并通过Elasticsearch的分布式实时文件存储技术将每一个字段都编入索引,使其可以被搜索。查询分析时可以通过Elasticsearch进行全文检索查询。因其每个字段都已加入索引,查询效率比较高。然后对查询到的数据进行数据清洗、筛选、展示。架构如图4所示。

4.日志管理模块

(1) 监控模块

监控模块用于显示日志系统一段时间内的性能状态,如:吞吐量,并发量,日志采集效率等,通过sql语句每隔一段时间进行查询一次这些状态信息,将计算结果用柱状图或仪表盘的形式显示在Web上,用于管理人员分析,起到监控预防作用。

(2)告警模块

当使用sql进行查询监测日志的性能超出了管理人员规定的所能接受的最大范围时,会通知管理人员进行排查问题,如图5所示。

(3)多租户模块

对于查询系统为了维护日志系统的安全,可以对不同的地区分配不同的组,将相关查询人员分配到该人员对应地区对应的组上,通过给不同的组增加相应的权限来约束管理人员。比如某些地区可以不用了解系统的性能,可以在相应的组上将相应的权限按钮关闭。亦需要设立一个超级管理员组对系统的整体进行调控,图6为架构分析图。

图4 日志查询架构

图5 日志监控告警模块架构

图6 日志多租户模块架构

图7 日志分析架构

5.日志分析模块

日志分析是为了更好的能够帮助企业掌控系统运行状况,以及分析用户行为特征,以便更好地优化系统,提升用户体验。

系统同时支持离线和实时分析。两种方式都提供SQL的思想来提供查询分析服务。在日志分析模块应用层通过报表和仪表盘的方式来实现安全诊断与分析。图7为数据处理架构图。

测试实验

进行测试的应用服务器均在linux服务器进行压力测试,目的是为了测试单节点储存与增加二级储存之间的性能差异,以及通过统一储存后查询的效率。

经测试,可以得出以下结论二级储存日志收集的采集效率明显比单节点的收集效率高,而且在并发量达到2000时单节点储存出现了数据丢失的问题。

用户在通过日志查询查找问题时,直接通过查询页面进行统一查询即可,追踪问题效率更高。由此可见该种日志采集方案具有更高的性能和可用性。

猜你喜欢

日志储存统一
一名老党员的工作日志
坚持严管和厚爱相统一的着力点
扶贫日志
碑和帖的统一,心和形的统一,人和艺的统一
统一数量再比较
游学日志
安防云储存时代已来
冬眠
一种基于粗集和SVM的Web日志挖掘模型
火电厂碳捕集与储存中吸收法的应用和改进