阅读 2105

ELK前端日志分析、监控系统

ELK前端日志分析、监控系统

前端日志与后端日志不同,具有很强的自定义特性,不像后端的接口日志、服务器日志格式比较固定,大部分成熟的后端框架都有非常完善的日志系统,借助一些分析框架,就可以实现日志的监控与分析,这也是运维工作的一部分。

什么是ELK

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来进行日志数据的展示工作。

以上三个框架,就构成了我们这套架构的核心。如果你想进一步了解这套架构,可以去他的官网上进行了解:

www.elastic.co/

这里也讲一个真实的故事——Elasticsearch项目的来历。

Elasticsearch 来源于作者 Shay Banon 的第一个开源项目 Compass 库,而这个 Java 库最初的目的只是为了给 Shay 当时正在学厨师的妻子做一个菜谱的搜索引擎。2010 年,Elasticsearch 正式发布。至今已经成为 GitHub 上最流行的 Java 项目,不过 Shay 承诺给妻子的菜谱搜索依然没有面世。

不得不说,还真是面向对象编程……

ELK架构图解

下面这张图很好的解释了什么是ELK:

当然,这也是最简单的ELK架构,在后端运维架构中,可能远不止如此,比如,还需要加入Kafka活这Redis等等,这里我们不做过多的讨论,我们只讨论最基础的架构。

ELK环境搭建

有同事问我,配置一套ELK环境需要多长时间,我说,大概需要20分钟,另外,其中大概有15分钟是在下载!

由于现在整个ELK项目基本上都已经被elastic这个公司收购了,所以,在它的官方网站上可以很容易的找到配置Guide。

www.elastic.co/start

按照这个配置指南,基本上很快就可以完成ELK的搭建,我们唯一需要做的,就是找到一份Log,然后配置下,让他展示出来就完了。

下载好tar包后,请尽量使用tar指令解压,不然就会像我的同事TT那样因为解压后的权限折腾上很长时间。

配置Logstash

我们首先需要在Logstash的文件根目录下创建一个配置文件,我这里举一个例子:

input {
    file {
        path => "/Users/xuyisheng/Downloads/temp/log.txt"
        ignore_older => 0
        sincedb_path => "/dev/null"
    }
}
output {
    elasticsearch{}
    stdout{}
}复制代码

这个配置相信不用我多说,大家也能看懂,当然,这是一个非常基本的配置,只是从固定的文件中去读取Log信息并写入到elasticsearch,并不做任何处理工作。

写好配置文件后,只需要通过如下所示的指令启动Logstash即可:

➜  logstash-5.0.1 bin/logstash -f logstash.conf复制代码

启动之后,Logstash就会从文件中读取信息了。

配置Elasticsearch和Kibana

为什么Logstash我要单独讲,而Elasticsearch和Kibana我可以放一起讲呢?因为——这两个的配置实在是太简单了,简单到你根本不用配置任何东西……

只需要两个指令就完成了,启动Elasticsearch:

➜  elasticsearch-5.0.0 bin/elasticsearch复制代码

启动Kibana:

➜  kibana-5.0.0-darwin-x86_64 bin/kibana复制代码

OK,等程序启动完成,只需要打开localhost:5601就可以看见Kibana的界面了。

给大家看几张截图,简单的体会下它的强大就好(由于我这里项目是公司的,所以就从网上找了一些,是一样的)

这个是Kibana3的界面。

这个是Kibana5的界面,大家可以根据自己的需要选择不同的Kibana版本,反正配置都是一句话。

ELK的优势

ELK在运维上的优势我们就不具体的说了,什么分布式啊、什么消息队列、消息缓存啊,太多了,但我们其实并不用太关心。

强大的搜索

这是elasticsearch的最强大的功能,他可以以分布式搜索的方式快速检索,而且支持DSL的语法来进行搜索,简单的说,就是通过类似配置的语言,快速筛选数据。

强大的展示

这是Kibana的最强大的功能,他可以展示非常详细的图表信息,而且可以定制展示内容,将数据可视化发挥的淋漓尽致。

所以,借助ELK的这两大优势,我们可以让前端日志的分析与监控展现出强大的优势。

ELK使用场景

据我所知,现在已经有非常多的公司在使用这套架构了,例如Sina、饿了么、携程,这些公司都是这方面的先驱。同时,这套东西虽然是后端的,但是『他山之石,可以攻玉』,我们将这套架构借用到前端,可以使用前端日志的分析工作,同样是非常方便的。这里我举一些常用的使用场景。

  • 业务数据分析

    通过客户端的数据采集系统,可以将一些业务流程的关键步骤、信息采集到后端,进行业务流程的分析。

  • 错误日志分析

    类似Bugly,将错误日志上报后,可以在后端进行错误汇总、分类展示,进行错误日志的分析。

  • 数据预警

    利用ELK,可以很方便的对监控字段建立起预警机制,在错误大规模爆发前进行预警。

ELK的基本介绍就到这里,其实还有很多东西没有讲,例如使用Logstash对日志内容的处理、已经elasticsearch的搜索语法等等,如果大家有兴趣,可以在下面留言,如果感兴趣的人比较多,我会在后面的文章中进行进一步的分析。

一年一度的CSDN博客之星评选又开始了,欢迎大家给我投票:
blog.csdn.net/vote/candid…
有了各位的支持,我才有动力能够继续写出更多更好的文章,非常感谢大家的支持。

关注下面的标签,发现更多相似文章
评论