在银行日志分析系统项目中,日志处理模块怎么设计?

3回答

刘康刘康  系统分析师 , 日志易
gswwlianglxyArdusty等赞同了此回答
大体架构: Agent --->Kafka--->REGEX--->index --->Search 根据上面的架构说下为什么,需要考虑那方面问题 接入层面Agent 不能占太多资源 效率高 功能强大 配置简单 数据缓存kafka 必须有,如果数据量猛增,会将后面压死 后端集群可以随意调节 可以将数据吐向别处 数据...显示全部

大体架构:

Agent --->Kafka--->REGEX--->index --->Search

根据上面的架构说下为什么,需要考虑那方面问题


接入层面
Agent

  1. 不能占太多资源
  2. 效率高
  3. 功能强大
  4. 配置简单

数据缓存
kafka

  1. 必须有,如果数据量猛增,会将后面压死
  2. 后端集群可以随意调节
  3. 可以将数据吐向别处

数据清洗
REGEX
这一步需要将数据进行提取。增减一些我们指定的字段。


数据入库
index

  1. 清洗完成之后要入库,甭管 ES、solr、还是其他的程序,首要就是迅速

数据搜索
Search

  1. 搜索迅速

  2. 语法简单

  3. 展现方式多种多样


    额外功能 现在挺火的智能运维、AIOps得上啊

说说有啥程序可以实现吧。

开源版:

  1. ELK,小企业玩玩可以,大企业的如果用他真的需要费点力气。
  2. solr 没见有人用过
  3. Hadoop 如果用他就不只是日志了吧。。。

    企业版:

  4. 日志易
  5. splunk
  6. 其他厂商
收起
 2019-08-01
浏览779
日志易 邀答
聂奎甲聂奎甲  项目经理 , 长春长信华天
yinxinwuwenpinmichael1983赞同了此回答
银行运维日志管理与日志分析平台采用ELK Stack搭建,ELK Stack是Elastic的三个开源产品Elasticsearch,Logstash和Kibana的集合。Logstash负责数据收集、传输、预处理。Elasticsearch负责数据存储、分析。Kibana负责数据展现。这三者的有机结合为银行运维日志管理与日志分析...显示全部

银行运维日志管理与日志分析平台采用ELK Stack搭建,ELK Stack是Elastic的三个开源产品Elasticsearch,Logstash和Kibana的集合。Logstash负责数据收集、传输、预处理。Elasticsearch负责数据存储、分析。Kibana负责数据展现。这三者的有机结合为银行运维日志管理与日志分析提供了完整的解决方案。下图是ELK Stack的日志数据处理流程图:

按照ELK Stack的数据处理流程和银行运维对日志管理与日志分析的要求设计银行日志管理分析平台。
Logstash在架构中起到的作用是从每台服务器上的某个路径中的文件中收集数据,并且按照预先编写好的过滤规则来过滤数据,然后按照要求将日志传输到ES集群中。
Logstash工作流程:

Logstash部署:
Logstash根据logstash-example.conf配置文件对数据源进行数据读取和清洗,并将清洗结果写入指定的目标文件。Logstash可以以命令行参数进行配置,也可以在logstash.yml等setting文件中进行设置。
Logstash知识结构:

Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
Elasticsearch工作流程:

新收到的数据会被写入到内存的 buffer 中,然后在一定的时间间隔后刷到磁盘中,成为一个新的 segment,然后另外使用一个 commit 文件来记录所有的 segment,数据只有在成为 segment 之后才能被检索。默认的从 buffer 到 segment 的时间间隔是 1 秒(可以调用/_refresh接口更改)。
采用Translog 保证数据从 buffer 到 segment 的一致性,通过定期保存到磁盘中来实现Translog 的一致性。对于不断生成新的segment,ES 会在后台把零散的 segment 做数据归并,归并完成后删除小的 segment,从而减少 segment 的数量;也会采用不同的归并策略,尽量让每次新生成的 segment 本身就比较大。
Elasticsearch部署:
为了提高Elasticsearch性能可以通过elasticsearch.yml文件修改配置参数,也可以根据用户系统配置降低配置参数,如jvm.heapsize。
Elasticsearch知识结构:

Kibana是一个开源的分析与可视化平台。可以用来搜索、查看、交互存放在Elasticsearch索引里的数据,并使用各种不同的图表、表格、地图等对数据进行分析和可视化。
Kibana3是一个使用Apache开源协议,基于浏览器的Elasticsearch分析和搜索的仪表板,整个项目基于HTML和Javascript写的,不需要任何服务器端组件,一个纯文本发布服务器即可。
Kibana4中Discover标签页可以提交搜索请求,过滤结果,然后检查返回的文档里的数据,默认情况下,Discover显示匹配搜索条件的500个文档。Visualization 用来为搜索结果做可视化,每个可视化都是跟一个搜索关联着的。Dashboard 创建、定制自己的仪表盘。任何需要展示的数据都需要现在 Settings 中进行索引配置,可以选择配置时间索引,这样在 Discover 页面会多出来时间的选项。
Kibana部署:
Kibana3中config.js核心配置的地方,文件包含的参数都是必须在初次运行Kibana之前提前设置好的。
Kibana4启动,在安装目录运行:
$bin/kibana (Linux/Mac OS X)
$binkibana.bat (Windows)
配置可以通过命令行参数或配置文件kibana.yml。
Kibana知识结构:

收起
 2019-06-14
浏览874
匿名用户匿名用户
yinxin赞同了此回答
日志处理模块的主要功能是保证日志分析系统中日志数据的实时异步处理。由于我们所要采集的日志是分布在多个采集节点,一旦交易高峰期所产生的日志增长速度比较快,所需要采集分析的日志量非常大,而实时计算模块消费日志的速度无法达到日志生产的速度,造成实时计算模块的资源比...显示全部

日志处理模块的主要功能是保证日志分析系统中日志数据的实时异步处理。由于我们所要采集的日志是分布在多个采集节点,一旦交易高峰期所产生的日志增长速度比较快,所需要采集分析的日志量非常大,而实时计算模块消费日志的速度无法达到日志生产的速度,造成实时计算模块的资源比较紧张,导致系统中的数据流量不稳定。基于这个原因,系统就需要提供一个对数据流量进行缓存的模块,来进行保证日志数据的异步处理。
日志处理模块通过在日志采集模块与日志存储模块之间提供数据缓存,降低模块之间的耦合度,如果某个模块出现问题不至于影响其它模块的正常工作。另外,日志处理模块可以使日志数据可以进行异步处理以及处理有衔接,这样可以保证在业务高峰期,最重要的数据可以优先分析,保证了系统中流量的稳定,提高了系统的稳定性和可用性,也确保最新的业务数据可以提供使用
日志处理模块主要由以下三部分组成:
producer(消息生产者),负责日志处理模块中数据流的输入,在本系统中我们的采集agent就作为消息生产者,将采集的日志数据全部发布出来。
broker(由kafka分布式集群组成),提供缓存代理,它接收到生产者发布的消息并存储这些消息,接收到消费者的订阅后将存储的消息推送给消费者。
consumer(消息消费者),负责日志处理模块中日志数据的消费,通过向kafka集群发送fetch请求,拉取数据进行消费。在本系统中,日志的消费者主要是实时计算模块,一方面通过对采集到的日志进行计算和分析,得出日志分析的计算结果,另一方面将日志转移到日志存储模块

收起
 2019-06-15
浏览810

问题状态

  • 发布时间:2019-06-14
  • 关注会员:5 人
  • 问题浏览:1733
  • 最近回答:2019-08-01