ELKK 日志处理
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开发并跑在java虚拟机上的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服务进行采集到的日志索引操作
ELKK 日志处理的更多相关文章
- .NetCore中的日志(2)集成第三方日志工具
.NetCore中的日志(2)集成第三方日志工具 0x00 在.NetCore的Logging组件中集成NLog 上一篇讨论了.NetCore中日志框架的结构,这一篇讨论一下.NetCore的Logg ...
- .NetCore中的日志(1)日志组件解析
.NetCore中的日志(1)日志组件解析 0x00 问题的产生 日志记录功能在开发中很常用,可以记录程序运行的细节,也可以记录用户的行为.在之前开发时我一般都是用自己写的小工具来记录日志,输出目标包 ...
- Logstash实践: 分布式系统的日志监控
文/赵杰 2015.11.04 1. 前言 服务端日志你有多重视? 我们没有日志 有日志,但基本不去控制需要输出的内容 经常微调日志,只输出我们想看和有用的 经常监控日志,一方面帮助日志微调,一方面及 ...
- SQLServer事务同步下如何收缩日志
事务同步是SQLServer做读写分离的一种常用的方式. 随着业务数据的不断增长,数据库积攒了大量的日志,为了腾出硬盘空间,需要对数据库日志进行清理 订阅数据库的日志清理 因为订阅数据库所有的数据都来 ...
- 如何正确使用日志Log
title: 如何正确使用日志Log date: 2015-01-08 12:54:46 categories: [Python] tags: [Python,log] --- 文章首发地址:http ...
- 前端学HTTP之日志记录
前面的话 几乎所有的服务器和代理都会记录下它们所处理的HTTP事务摘要.这么做出于一系列的原因:跟踪使用情况.安全性.计费.错误检测等等.本文将谥介绍日志记录 记录内容 大多数情况下,日志的记录出于两 ...
- ASP.NET Core应用中如何记录和查看日志
日志记录不仅对于我们开发的应用,还是对于ASP.NET Core框架功能都是一项非常重要的功能特性.我们知道ASP.NET Core使用的是一个极具扩展性的日志系统,该系统由Logger.Logger ...
- .NET Core的日志[5]:利用TraceSource写日志
从微软推出第一个版本的.NET Framework的时候,就在“System.Diagnostics”命名空间中提供了Debug和Trace两个类帮助我们完成针对调试和跟踪信息的日志记录.在.NET ...
- .NET Core的日志[4]:将日志写入EventLog
面向Windows的编程人员应该不会对Event Log感到陌生,以至于很多人提到日志,首先想到的就是EventLog.EventLog不仅仅记录了Windows系统自身针对各种事件的日志,我们的应用 ...
随机推荐
- LeetCode题目: Remove Duplicate Letters
问题描述 给一个字符串(只包含小写字母),删除重复的字母, 使得每个字母只出现一次.返回的结果必须是字典顺序最小的. 举例:“bcabc" -> "abc", &q ...
- Nginx:handler模块按处理阶段挂载原理
参考资料<深入理解Nginx>(陶辉) 在Nginx中,handler模块真正的处理函数通过两种方式挂载到处理过程中,一种方式就是按处理阶段挂载;另外一种挂载方式就是按需挂载. 本次我们将 ...
- 【Android开发-6】了解内情,我们须要一些调试和測试手段
前言:人生不可能十全十美,总会有些遗憾存在,经历过遗憾,我们才懂的什么是生活. 程序也一样.追求完美,就必定会有经历bug存在的时候. 经历过不断的bug磨练.我们技术才会不断的成长.对于调试bug, ...
- HttpClient简介
栏目:Web开发 作者:admin 日期:2015-05-02 评论:0 点击: 204 次 虽然在JDK的java net包中已经提供了访问 HTTP 协议的基本功能,但是对于大部分应用程序来说 ...
- 文件json
import jsondef op_data(filename,dic=None): if dic:#写入进去 with open(filename,'w',encoding='utf-8') as ...
- mongoDB 使用总结
http://blog.chinaunix.net/space.php?uid=22270773&do=blog&id=19935171. 如果无特别用途,建议:表名,字段名 全部用小 ...
- iOS GCD不同场景的使用比較
/** * async -- 并发队列 * 会创建线程.一般同一时候开多条 * 并发运行任务 */ <span style="font-size:14px;"> ...
- bean对应mapper.xml字段
在bean中set的时候最好写上这个,避免报空指针............... public void setImgAddress(String imgAddress) { this.imgAddr ...
- Sql效能优化总结(续)- sql语句优化篇
今晚继续进行Sql效能问题的分享,今天主要是一些具体的sql优化方法和思路分享,若看过后你也有其他想法,欢迎一起探讨,好了,进入今天的主题. 针对性地对一些耗资源严重的具体应用进行优化 出现效能问题时 ...
- C指针解析 ------ 指针的算术运算
本文是自己学习所做笔记.欢迎转载.但请注明出处:http://blog.csdn.net/jesson20121020 指针是一个特殊的变量,表示一个地址,而地址能够上减去或加上一个整数,从而能够表示 ...