ELK之便捷的日志搜集、搜索、展示工具
优采云 发布时间: 2020-08-27 01:39ELK之便捷的日志搜集、搜索、展示工具
大家在做分布署系统开发的时侯是不是常常由于查找日志而头痛,因为各服务器各应用都有自己日志,但比较分散,查找上去也比较麻烦,今天就给你们推荐一整套便捷的工具ELK,ELK是Elastic公司开发的一整套完整的日志剖析技术栈,它们是Elasticsearch,Logstash,和Kibana,简称ELK。Logstash做日志搜集剖析,Elasticsearch是搜索引擎,而Kibana是Web展示界面。
1、日志搜集剖析Logstash
LogstashLogstash 是一个接收,处理,转发日志的工具,支持系统日志,webserver 日志,错误日志,应用日志,总之包括所有可以抛下来的日志类型。
Logstash的理念很简单,它只做3件事情:
Collect:数据输入Enrich:数据加工,如过滤,改写等Transport:数据输出
别看它只做3件事,但通过组合输入和输出,可以变幻出多种构架实现多种需求。这里只抛出用以解决日志汇总需求的布署构架图:
解释术语:
无论是Shipper还是Indexer,Logstash仍然只做上面提及的3件事:
一个Logstash进程可以有多个输入源,所以一个Logstash进程可以同时读取一台服务器上的多个日志文件。Redis是Logstash官方推荐的Broker角色“人选”,支持订阅发布和队列两种数据传输模式,推荐使用。输入输出支持过滤,改写。Logstash支持多种输出源,可以配置多个输出实现数据的多份复制,也可以输出到Email,File,Tcp,或者作为其它程序的输入,又或则安装插件实现和其他系统的对接,比如搜索引擎Elasticsearch。
总结:Logstash概念简单,通过组合可以满足多种需求。
2、日志搜索Elasticsearch
Elasticsearch是一个实时的分布式搜索和剖析引擎。它可以帮助你用前所未有的速率去处理*敏*感*词*数据。
它可以用于全文搜索,结构化搜索以及剖析,当然你也可以将这两者进行组合。
Elasticsearch是一个构建在全文搜索引擎 Apache Lucene 基础上的搜索引擎,可以说Lucene是现今最先进,最高效的全功能开源搜索引擎框架。
但是Lucene只是一个框架,要充分利用它的功能,需要使用JAVA,并且在程序中集成Lucene。需要好多的学习了解,才能明白它是怎样运行的,Lucene确实十分复杂。
Elasticsearch使用Lucene作为内部引擎,但是在使用它做全文搜索时,只须要使用统一开发好的API即可,而不需要了解其背后复杂的Lucene的运行原理。
当然Elasticsearch并不仅仅是Lucene如此简单,它不但包括了全文搜索功能,还可以进行以下工作:
这么多的功能被集成到一台服务器上,你可以轻松地通过客户端或则任何你喜欢的程序语言与ES的RESTful API进行交流。
Elasticsearch的上手是极其简单的。它附送了好多十分合理的默认值,这使初学者挺好地避开一上手就要面对复杂的理论,
它安装好了就可以使用了,用太小的学习成本就可以显得太有生产力。
随着越学越深入,还可以借助Elasticsearch更多中级的功能,整个引擎可以太灵活地进行配置。可以依照自身需求来订制属于自己的Elasticsearch。
使用案例:
但是Elasticsearch并不只是面向小型企业的,它还帮助了好多类似DataDog以及Klout的创业公司进行了功能的扩充。
在这里简单介绍下与solr的比较,因为solr作为现今最为流程的搜索引擎,为什么不选用
3、日志展示Kibana
Kibana是一个开源的剖析与可视化平台,设计下来用于和Elasticsearch一起使用的。你可以用kibana搜索、查看、交互储存在Elasticsearch索引里的数据,使用各类不同的图表、表格、地图等kibana才能太轻易地展示中级数据剖析与可视化。
Kibana使我们理解大量数据显得很容易。它简单、基于浏览器的插口让你能快速创建和分享实时诠释Elasticsearch查询变化的动态仪表盘。安装Kibana特别快,你可以在几分钟之内安装和开始探求你的Elasticsearch索引数据,不需要写任何代码,没有其他基础软件依赖。
总结
整一套软件可以当成一个MVC模型,logstash是controller层,Elasticsearch是一个model层,kibana是view层。
首先将数据传给logstash,它将数据进行过滤和低格(转成JSON格式),然后传给Elasticsearch进行储存、建搜索的索引,kibana提供后端的页面再进行搜索和图表可视化,它是调用Elasticsearch的插口返回的数据进行可视化。logstash和Elasticsearch是用Java写的,kibana使用node.js框架。各具体搭建配置就不在这儿具体说明,可自行百度,其实都很简单的。