1.ELKA.ELK 简介

    ELK在服务器运维界应该是运用的非常成熟了,很多成熟的大型项目都使用ELK来作为前端日志监控、分析的工具。
    前端日志与后端日志不同,具有很强的自定义特性,不像后端的接口日志、服务器日志格式比较固定,大部分成熟的后端框架都有非常完善的日志系统,借助一些分析框架,就可以实现日志的监控与分析,这也是运维工作的一部分。
    ELK实际上是三个工具的集合:

    • E:Elasticsearch (弹性搜索)
    • L:Logstash
    • K:Kibana

    日志监控分析工具ELK - 图1
    这三个工具(框架)各司其职,最终形成一整套的监控架构。
    日志监控分析工具ELK - 图2
    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。
    日志监控分析工具ELK - 图3
    3. Logstash 与FluentD(Fluentd)对比
    二者都有许多可用插件,被积极的维护着。
    技术上:
    Lostash:有良好的并行性支持,jvm有很好的Grok支持
    FlentD:缺少支持windows 平台
    传输上:两者同时提供 向一个非常必要的的选项,即向一个完全成熟的实例读送日志信息的 部署轻量级组件。
    安装
    日志监控分析工具ELK - 图4
    特征和表现
    日志监控分析工具ELK - 图5