Es+kafka搭建日志存储查询系统(设计)

现在使用的比较常用的日志分析系统有Splunk和Elk,Splunk功能齐全,处理能力强,但是是商用项目,而且收费高。Elk则是Splunk项目的一个开源实现,Elk是ElasticSearch(Es)、Logstash、Kibana上个项目结合。Es就是基于Lucene的存储,索引的搜索引擎;logstash是提供输入输出及转化处理插件的日志标准化管道;Kibana提供可视化和查询统计的用户界面。往往这些开源项目并不是适合每一个公司的业务,业务不同,对开源项目扩展也就不同,logstash进行日志采集时,在Agent端并不适合做数据清洗,数据清洗往往是经常变化的,而且Agent一般占用的资源必须要受到一定限制否则会影响业务系统。我们可以将日志的采集采用一些开源系统重新进行组合,因为日志采集的业务特性,可以采用Es+kafka进行初步的存储查询。首先以Http协议收集日志为例,

将整个日志存储查询总体分为四个层处理:

第一层:日志采集层;

主要处理日志采集的过程,针对生成的日志不同,大体上分成三大部分:

(1)、日志通过Http协议汇总到服务器端,一般是Web端,或者IOS、Android移动端通过HTTP 请求上报日志,这部分日志采集的agent暴露在公网上,可能会存在一些恶意上报垃圾日志,这部分日志是需要进行权限验证的,例如:在上报的日志中带上Token的验证,验证不成功直接丢弃,成功则将log存入到kafka对应的topic中。

(2)、服务器上的文本日志,这部分日志一般是业务系统存储的log文件,由于存在的是服务器端,一般不需要进行token验证,就可以直接采用logstash或者rsyslog进行汇总到kafka中去。

(3)、非文本日志,需要自己进行开发的自定义Agent 采集相关日志发送到kafka中,如监控某一个 radis、mysql等组件。此类日志和(2)相同,一般不是暴露在公网上,不需要进行token验证。

第二层:kafka

(1)、kafka的主要作用一个方面主要是为防止采集量大于日志清洗、存储的能力,这样会造成日志系统处理不及时,或者造成系统宕机,引起日志丢失。kafka是Apache开源的Hadoop生态圈中的分布式消息队列,其扩展性、和性能是非常强大的。加入消息队列在遇到日志高峰期,不能及时处理的日志存储在kafka中,不影响后面的日志清洗的系统,同时通过分析kafka 中日志队列的处理情况能够,对日志清洗层能力进行扩展和缩减。

(2)、另一方面就是方便系统解耦 ,使用kafka也方便扩展,如果要对日志进行一些实时统计处理,则采用Storm-kafka直接订阅相关的topic就能够将日志数据导入到Storm集群中进行实时统计分析。

第三层:日志清洗层;

将所有的日志清洗和统计的逻辑归于这一层进行处理。

第四层:日志存储层;

将日志存入到Es进行索引建立和查询。

环境搭建及相关例子:

官方文档:http://kafka.apache.org/090/documentation.html#quickstart

同时也可以采用CDH、Ambari等集群管理工具安装 kafka,这里不再赘述,Ambari离线安装文档:http://pan.baidu.com/s/1i5NrrSh。

storm实时处理例子:https://github.com/barrysun/storm-ml/tree/master/logmapping-storm-kafka

时间: 2024-10-26 04:46:24

Es+kafka搭建日志存储查询系统(设计)的相关文章

2018年ElasticSearch6.2.2教程ELK搭建日志采集分析系统(教程详情)

章节一 2018年 ELK课程计划和效果演示1.课程安排和效果演示简介:课程介绍和主要知识点说明,ES搜索接口演示,部署的ELK项目演示es: localhost:9200kibana http://localhost:5601/ 章节二 elasticSearch 6.2版本基础讲解到阿里云部署实战 2.搜索引擎知识介绍和相关框架简介:介绍搜索的基本概念,市面上主流的搜索框架elasticSearch和solr等对比什么是搜索:在海量信息中获取我们想要的信息传统做法:1.文档中使用系统的Fin

《结对-自然语言进行数据库查询系统-设计文档》

二〇一七年九月十四日十点一刻少两分钟 关于结对编程的设计文档: 题目:自然语言进行数据库查询系统 编程语言:C# 数据库:MySql ,其他逐渐扩展 软件所要实现的功能: 用户打开软件之后可以连接到数据库,并且通过自然语言进行数据库的查询,例如我想知道小明的学号,如果在数据库中查询需要输入 select ID from 学生表 where name = "小明"才能实现,我们要做的是,输入查询小明的学号,软件就可以将自然语言转换成sql语句进行数据库的查询. 所要实现的功能: 1.进行

2018年ElasticSearch6.2.2教程ELK搭建日志采集分析系统(目录)

章节一  2018年 ELK课程计划和效果演示 1.课程安排和效果演示 简介:课程介绍和主要知识点说明,ES搜索接口演示,部署的ELK项目演示 章节二 elasticSearch 6.2版本基础讲解到阿里云部署实战 2.搜索引擎知识介绍和相关框架 简介:介绍搜索的基本概念,市面上主流的搜索框架elasticSearch和solr等对比 什么是搜索:在海量信息中获取我们想要的信息 3.新版本 elasticSearch 6.1.2介绍 简介:介绍ES的主要特点和使用场景,新特性讲解 4.windo

团队-及格成绩查询系统-设计文档

项目名称:象棋游戏 项目参加人员:李一轩.程吉.刘泽宇.苑旺.李瑞鹏.周建伟 项目所需环境及工具:HBuilder.Google浏览器 页面设计:在网页中使用,可以转换到其他科目的成绩查询: 功能设计:可以查询及格成绩和最终成绩,并可以推广到其他专业和年级进行使用: 在程序结束阶段,将对程序进行性能调试和2/5/10原则调试,对其进行最终检测和维护: 预计流程:进入网页->输入成绩(并不用全部都填写)->点击"查询xxx成绩"->输出:

搭建日志服务器前期系统要求

原文地址:http://blog.51cto.com/13922960/2160807

日志系统之HBase日志存储设计优化

本人博客文章如未特别注明皆为原创!如有转载请注明出处:http://blog.csdn.net/yanghua_kobe/article/details/46482319 继续谈论最近接手的日志系统,上篇关于日志收集相关的内容,这篇我们谈谈日志存储相关的话题. 简介 我们首先来总结一下日志这种数据的业务特点:它几乎没有更新的需求,一个组件或一个系统通常有一个固定的日志格式,但就多个组件或系统而言它会存在各种五花八门的自定义的tag,这些tag建立的目的通常是为了后期查询/排查线上问题的需要,因此

ELK+kafka构建日志收集系统

ELK+kafka构建日志收集系统 原文  http://lx.wxqrcode.com/index.php/post/101.html 背景: 最近线上上了ELK,但是只用了一台Redis在中间作为消息队列,以减轻前端es集群的压力,Redis的集群解决方案暂时没有接触过,并且Redis作为消息队列并不是它的强项:所以最近将Redis换成了专业的消息信息发布订阅系统Kafka, Kafka的更多介绍大家可以看这里: 传送门 ,关于ELK的知识网上有很多的哦, 此篇博客主要是总结一下目前线上这个

中间件 | kafka简介、使用场景、设计原理、主要配置及集群搭建

开源Java学习 公众号 一.入门 1.简介 Kafka is a distributed,partitioned,replicated commit logservice.它提供了类似于JMS的特性,但是在设计实现上完全不同,此外它并不是JMS规范的实现.kafka对消息保存时根据Topic进行归类,发送消息者成为Producer,消息接受者成为Consumer,此外kafka集群有多个kafka实例组成,每个实例(server)成为broker.无论是kafka集群,还是producer和c

万亿级日志与行为数据存储查询技术剖析(续)——Tindex是改造的lucene和druid

五.Tindex 数果智能根据开源的方案自研了一套数据存储的解决方案,该方案的索引层通过改造Lucene实现,数据查询和索引写入框架通过扩展Druid实现.既保证了数据的实时性和指标自由定义的问题,又能满足大数据量秒级查询的需求,系统架构如下图,基本实现了文章开头提出的几个目标. (点击放大图像) Tindex主要涉及的几个组件 Tindex-Segment,负责文件存储格式,包括数据的索引和存储,查询优化,以及段内数据搜索与实时聚合等.Tindex是基于Lucene的思想重构实现的,由于Luc