1.ELKA.ELK 简介
ELK在服务器运维界应该是运用的非常成熟了,很多成熟的大型项目都使用ELK来作为前端日志监控、分析的工具。
前端日志与后端日志不同,具有很强的自定义特性,不像后端的接口日志、服务器日志格式比较固定,大部分成熟的后端框架都有非常完善的日志系统,借助一些分析框架,就可以实现日志的监控与分析,这也是运维工作的一部分。
ELK实际上是三个工具的集合:
- E:Elasticsearch (弹性搜索)
- L:Logstash
- K:Kibana
这三个工具(框架)各司其职,最终形成一整套的监控架构。
Elasticsearch
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
我们使用Elasticsearch来完成日志的检索、分析工作。
Logstash
Logstash是一个用于管理日志和事件的工具,可以用它去收集日志、转换日志、解析日志并将它们作为数据提供给其它模块调用,例如搜索、存储等。
我们使用Logstash来完成日志的解析、存储工作。
Kibana
Kibana是一个优秀的前端日志展示框架,它可以非常详细的将日志转化为各种图表,为用户提供强大的数据可视化支持。
我们使用Kibana来进行日志数据的展示工作。
B.ELK使用场景
现在已经有非常多的公司在使用这套架构了,例如Sina、饿了么、携程,这些公司都是这方面的先驱。同时,这套东西虽然是后端的,但是『他山之石,可以攻玉』,我们将这套架构借用到前端,可以使用前端日志的分析工作,同样是非常方便的。这里我举一些常用的使用场景。
- 业务数据分析
通过客户端的数据采集系统,可以将一些业务流程的关键步骤、信息采集到后端,进行业务流程的分析。
- 错误日志分析
类似Bugly,将错误日志上报后,可以在后端进行错误汇总、分类展示,进行错误日志的分析。
- 数据预警
利用ELK,可以很方便的对监控字段建立起预警机制,在错误大规模爆发前进行预警。
C.ELK的优势
a. 强大的搜索
这是elasticsearch的最强大的功能,它可以以分布式搜索的方式快速检索,而且支持DSL的语法来进行搜索,简单的说,就是通过类似配置的语言,快速筛选数据。
b. 强大的展示
这是Kibana的最强大的功能,它可以展示非常详细的图表信息,而且可以定制展示内容,将数据可视化发挥的淋漓尽致。
所以,借助ELK的这两大优势,我们可以让前端日志的分析与监控展现出强大的优势。
D.ELK的缺点:
1、 三个独立的系统,没有统一的部署、管理工具,用户需要分别部署及管理这三套系统
2、复杂业务下权限的分组管理,企业肯定希望每个业务部分看自身的,但又存在矛盾点,企业想看汇总情况。
3、安全漏洞,之前乌云网站曾爆出Elasticsearch存在严重的安全漏洞。
4、不进行深度开发的话,数据挖掘能力弱2.EFK市场上另外一个非常好的数据收集解决方案即是Fluentd,它也支持Elasticsearch作为数据收集的目的地。所以运用相同的数据存储和前端解决方案,便形成了EFK.许多人选择用Fluentd 代替logtash。
3. Logstash 与FluentD(Fluentd)对比
二者都有许多可用插件,被积极的维护着。
技术上:
Lostash:有良好的并行性支持,jvm有很好的Grok支持
FlentD:缺少支持windows 平台
传输上:两者同时提供 向一个非常必要的的选项,即向一个完全成熟的实例读送日志信息的 部署轻量级组件。
安装
特征和表现