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
Es+kafka搭建日志存储查询系统(设计)的更多相关文章
- 2018年ElasticSearch6.2.2教程ELK搭建日志采集分析系统(教程详情)
章节一 2018年 ELK课程计划和效果演示1.课程安排和效果演示 简介:课程介绍和主要知识点说明,ES搜索接口演示,部署的ELK项目演示 es: localhost:9200 k ...
- logstash+elasticsearch+kibana搭建日志收集分析系统
来源: http://blog.csdn.net/xifeijian/article/details/50829617 日志监控和分析在保障业务稳定运行时,起到了很重要的作用,不过一般情况下日志都分散 ...
- 2018年ElasticSearch6.2.2教程ELK搭建日志采集分析系统(目录)
章节一 2018年 ELK课程计划和效果演示 1.课程安排和效果演示 简介:课程介绍和主要知识点说明,ES搜索接口演示,部署的ELK项目演示 章节二 elasticSearch 6.2版本基础讲解到 ...
- x86主机搭建家庭智能路由系统 ---- 设计篇
组件简介 Proxmox: 基于Debian的虚拟化系统,支持OpenVZ和KVM. pfSense: 基于FreeBSD的开源路由系统. FreeNAS: 开源NAS系统. shadowsocks: ...
- ELK+kafka构建日志收集系统
ELK+kafka构建日志收集系统 原文 http://lx.wxqrcode.com/index.php/post/101.html 背景: 最近线上上了ELK,但是只用了一台Redis在 ...
- 快速搭建日志系统——ELK STACK
什么是ELK STACK ELK Stack是Elasticserach.Logstash.Kibana三种工具组合而成的一个日志解决方案.ELK可以将我们的系统日志.访问日志.运行日志.错误日志等进 ...
- 企业日志大数据分析系统ELK+KAFKA实现【转】
背景: 最近线上上了ELK,但是只用了一台Redis在中间作为消息队列,以减轻前端es集群的压力,Redis的集群解决方案暂时没有接触过,并且Redis作为消息队列并不是它的强项:所以最近将Redis ...
- ELK+FileBeat+Log4Net搭建日志系统
ELK+FileBeat+Log4Net搭建日志系统 来源:https://www.zybuluo.com/muyanfeixiang/note/608470 标签(空格分隔): ELK Log4Ne ...
- 【ELK】5.spring boot日志集成ELK,搭建日志系统
阅读前必看: ELK在docker下搭建步骤 spring boot集成es,CRUD操作完整版 ============================================== 本章集成 ...
随机推荐
- select下拉框不能赋值
前言: 需要用到类似于下面的下拉选择框,按照官方文档写,始终实现不了下拉框赋上值的情况. 过程: 认认真真的看了好几遍文档,但是还没找到原因,不过还是应该感谢自己加入的vue-admin的微信群,大家 ...
- Mybatis中insert
<insert id="insert" parameterType="Currency"> INSERT INTO YZ_SECURITIES_CU ...
- 【mysql】查看版本的四种方法
1:在终端下:mysql -V. 以下是代码片段: [test@login ~]$ mysql -V mysql Ver 14.7 Distrib 4.1.10a, for redhat-linux- ...
- dialog里面数据更新问题
在实际开发中经常会用到showDialog(int id)的方法来展示一个对话框,但是会遇到一个Dialog展示之后下次再show的时候对话框的界面还是上次展示的那个,而不是我们想象的界面.很多时候我 ...
- Python 如何引入自定义模块
Python 中如何引用自己创建的源文件(*.py)呢? 也就是所谓的模块. 假如,你有一个自定义的源文件,文件名:saySomething.py .里面有个函数,函数名:sayHello.如下图: ...
- 腾讯云CMQ消息队列测试
版权声明:本文由王冲原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/128 来源:腾云阁 https://www.qclou ...
- <a>标签实现链接和锚点的区别
如果是实现链接,a标签中必须有href属性,并且属性值是合法的url 如果实现锚点,a标签中必须有name属性,当点击该标签时,会跳转到id同该标签的name值相同的元素处.
- 配置maven使用nexus
本文简单介绍使用配置maven使用nexus仓库,在团队中使用nexus,避免每个人都从中央仓库去下载依赖,节省带宽,提高下载速度,同时也减少了中央仓库的压力 配置在maven中使用nexus很简单( ...
- 一、微信小游戏开发 --- 初次在微信开发者工具里跑Egret小游戏项目
尝试下Egret的小游戏开发,学习,学习,干IT,不学习,就得落后啊... 相关教程: Egret微信小游戏教程 微信公众平台-微信小游戏教程 微信公众平台-微信小游戏接入指南 开发版本: Egret ...
- java如何计算两个日期之间相差多少天?
java如何计算两个日期之间相差多少天? public static void main(String [] args) { Date now = new Date(); Calendar cal = ...