博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ELKK 日志处理
阅读量:5268 次
发布时间:2019-06-14

本文共 2248 字,大约阅读时间需要 7 分钟。

http://blog.csdn.net/u010022051/article/details/54342357 在ELKK的架构中,各个框架的角色分工如下:  ElasticSearch1.7.2:数据存储+全文检索+聚合计算+服务端  Logstasch2.2.2:日志收集与分发**  Kafka0.9.0.0:分布式高可靠消息队列+数据中转存储(失效期默认7天,可配置时间或大小来控制删除策略)  Kibana4.1.2:全文检索+查询+图形化页面展示+客户端  拓扑架构如下: 

  2.1 日志的采集 灵活性是我们选择日志采集方案更看重的因素,所以logstash属于首先方案, 它可以兼顾多种不同系统和应用类型等因素的差异,从源头上进行一些初步的日志预处理。 logstash唯一的小缺憾是它的不轻便, 因为它是使用jruby开发并跑在上的agent, 当然啦,同时也是优点,即各种平台上都可以用。 2.2 日志的汇总与过滤 kafka在我们挖财已经属于核心的中间件服务, 所以, 日志的汇总自然而然会倾向于使用kafka。 日志的过滤和处理因为需求的多样性,可以直接对接订阅kafka, 然后根据各自的需求进行日志的定制处理, 比如过滤和监控应用日志的异常,即使通过zabbix进行预警; 或者数据仓库方面在原始日志的基础上进行清洗和转换,然后加载到新的数据源中; 2.3 日志的存储 原始的日志存储我们采用ElasticSearch, 即ELK技术栈中E的原本用途,遵循ELK技术栈中各个方案之间的通用规范, 比如日志如索引采用logstash与kibana之间约定的index pattern。 日志的衍生数据则日志使用各方根据需求自行选择。 2.4 日志的分析与查询 ELK技术栈中的Kibana已经可以很好的满足这一需求,这里我们不折腾。 3 需要解决哪些技术问题? 因为我们在ELK技术栈的处理链路上插入了一些扩展点,所以,有些问题需要解决和澄清... 3.1 logstash与kafka的对接 ELK技术栈中, Logstash和Elastic Search是通过logstash的elasticsearch或者elasticsearch_http这几个output直接对接的, 为了让logstash转而对接kafka,我们有几种选择: logstash-kafka logstash-output-kafka logstash的httpoutput 第一种和第二种方案都需要编译打包相应的依赖到logstash,然后随同logstash一起部署到服务结点, 虽然可以work, 但依赖重, 资源消耗多, 通用性不强; 个人更倾向于第三种方案,即使用logstash默认提供的http这个output, 因为http比较通用, 而且本身我们的kafka前面就有为了多系统对接而提供的http proxy方案部署。另外,依赖的管理和升级都在服务端维护,对每个服务结点是透明的。 当然, 唯一的弱点是效率可能不如基于长连接的消息传递高,只是暂时不是问题,即使将来成为瓶颈,也可以通过sharding的形式进行扩展。 3.2 kafka到elastic search的对接 kafka和es之间我们要加入一套日志过滤与处理系统, 这套系统是我们发挥整个体系最大威力的地方。 在整个系统的处理pipeline中,我们可以根据需求添加任意需要的Filter/Processor, 比如服务于应用报警的Filter/Processor,服务于数据仓库ETL的Filter/Processor等等。 但不管前面做了多少事情, 日志最终是要接入到ES进行存储的。 因为ELK技术栈中三者的对接遵循一些规范或者说规则, 而我们又需要继续复用这个技术栈中的服务提供的特定功能, 所以,即使是我们在整个处理链路中插入了扩展点,但数据的存储依然需要遵循ELK原来的规范和规则, 以便Kibana可以从ES中捞日志出来分析和展示的时候不需要任何改动。 logstash存入ES的日志,一般遵循如下的index pattern: logstash-%{+YYYY.MM.dd} 使用日期进行索引(index)界定的好处是, 可以按照日期范围定期进行清理。 NOTE 进一步深入说明一下, 针对不同的日志类别, index pattern也最好分类对应。 更多信息: Each log line from the input file is associated with a logstash event. Each logstash event has fields associated with it. By default, "message", "@timestamp", "@version", "host", "path" are created. The "message" field, referenced in the conditional statement, contains all the original text of the log line. 日志处理系统可以使用ES的java客户端或者直接通过ES的HTTP服务进行采集到的日志索引操作

转载于:https://www.cnblogs.com/dadadechengzi/p/6956797.html

你可能感兴趣的文章
A-Softmax的总结及与L-Softmax的对比——SphereFace
查看>>
UVa 11059 最大乘积
查看>>
数组分割问题求两个子数组的和差值的小
查看>>
composer 报 zlib_decode(): data error
查看>>
linux下WPS的使用
查看>>
Web Api 利用 cors 实现跨域
查看>>
hdu 3938 并查集
查看>>
instanceof
查看>>
《深入分析Java Web技术内幕》读书笔记之JVM内存管理
查看>>
python之GIL release (I/O open(file) socket time.sleep)
查看>>
2015/8/4 告别飞思卡尔,抛下包袱上路
查看>>
软件开发与模型
查看>>
161017、SQL必备知识点
查看>>
kill新号专题
查看>>
MVC学习系列——Model验证扩展
查看>>
mysqladmin 修改和 初始化密码
查看>>
字符串
查看>>
vue2.x directive - 限制input只能输入正整数
查看>>
实现MyLinkedList类深入理解LinkedList
查看>>
自定义返回模型
查看>>