ElasticSearch构建千亿级日志分析系统-实时分析

 

1、背景介绍

随着业务系统的复杂度上升,单应用无法适用业务场景,分布式系统已经成为目前服务器的常用解决方案。

随之而来的是分析问题变得困难,需要跨多个模块进行分析定位,涉及的应用节点几十上百个,需要一套日志收集与分析架构来满足我们的日常问题定位。

下图是一个实时日志采集系统架构:

 

分为采集器、消息队列、处理器、存储分析四个模块。

2、采集器

采集各个源头日志上报到消息队列,这里用到了四个采集器:

Elastic Beats:Elastic系列的套件,采集文件日志,可以配置过滤器进行日志预处理;

Apache Flume:采集文件日志,Java开发的采集器,可以自动以处理器进行日志处理,需要自己写Java代码,使用Java语言开发的同学比较容易上手;

Java封装Log4j:采集实时日志,Java封装Log4j,实现实时日志上报,动态上传,可做到消息的冬天路由,Kafka集群的动态切换(故障转移),日志级别的动态调整等,后面会有专门的章节来介绍日志管理系统;

Logstash:Elastic 系列比较早的采集器,可以采集文件日志,可接收日志写入ElasticSearch,可接收日志写入Kafka

这里不重点介绍这些采集器的差异,如有需要了解采集器的优劣可以参考如下文章:

https://developer.51cto.com/art/201904/595529.htm

3、消息队列

使用Kafka作为消息队列,缓冲日志带来的冲击,当ElasticSearch繁忙时数据堆积在Kafka,起到削峰填谷作用,给日志调控留下操作的时间。官方地址:http://kafka.apache.org/

4、处理器

消费Kafka日志写入到ElasticSearch,这里使用Java开发处理写入ElasticSearch可以做到灵活的调整写入的频率,优化写入速度,结合ElasticSearch的部署

情况优化写入的效率,日志进入Kafka之后在处理器模块可以做适当的处理和分流,根据业务场景可以分模块分割ElasticSearch集群,结合日志结构将日志分

模块写入到不同的集群不同的索引,如遇单集群压力过大,性能处理不过来可以通过处理器动态分流,将数据写入到新的集群来解决查询问题。

5、存储分析

存储使用全文搜索引擎ElasticSearch,ElasticSearch是一款高效率的全文索引软件,恰好满足日志存储与分析的业务场景,根据语言的区别我们可以设置不同的分词器来优化查询,分析工具使用Kibana,功能比较强大的UI分析工具,满足日常查询。

处理日志的关键在于ElasticSearch的索引和查询能力,后面的章节会重点讲到如何搭建和优化ElasticSearch集群。

ElasticSearch官方地址:https://www.elastic.co/cn/elasticsearch

Kibana官方地址:https://www.elastic.co/cn/kibana

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值