为什么用到ELK

曾经的我需要分析日志的时候,都是直接去服务器上捞日志,直在日志文件中 grep、awk 获得自己想要的信息。之所以这种方式满足我的需求,是因为当时虽然是分布式系统,也用到springCloud,但还是服务太少,这个服务没找到错误日志,那么在下一个服务,或下下个服务,必然可以找到。

但在规模较大的场景中,此方法效率低下,如果遇到服务太多,如果定位问题、日志量太大如何归档、文本搜索太慢怎么办、如何多维度查询。这时候就需要一个集中化的日志管理了,所有服务器上的日志收集汇总,然后统一管理,访问。

一般大型系统是一个分布式部署的架构,不同的服务模块部署在不同的服务器上,问题出现时,大部分情况需要根据问题暴露的关键信息,定位到具体的服务器和服务模块,构建一套集中式日志系统,可以提高定位问题的效率。

ELK提供了一整套解决方案,并且都是开源软件,之间互相配合使用,完美衔接,高效的满足了很多场合的应用。目前主流的一种日志系统。

简介

ELK是一个免费开源的日志分析架构技术总称,包含三大基础组件,分别是Elasticsearch、Logstash、Kibana。实际上ELK不仅仅适用于日志分析,它还可以支持其他任何数据搜索、分析和收集的场景,日志分析和收集只是更具代表性。

随着ELK的发展,又有新成员Beats、ElasticCloud的加入,所以就形成了Elastic Stack。所以说ELK是旧的称呼,ElasticStack是新的名字。

elk 进程名_服务器

特色

处理方式灵活:es时目前最流行的准实时全文检索引擎,具有高速检索大数据的能力。
配置简单:安装elk的每个组件,仅需配置每个组件的一个配置文件即可。修改处不多,因为大量参数已经默认配在系统中,修改想要修改的选项即可。
接口简单:采用json形式RESTFUL API接受数据并响应,无关语言。
性能高效:es基于优秀的全文搜索技术Lucene,采用倒排索引,可以轻易在百亿级别数据量下,搜索出想要的内容,并且是秒级响应。
灵活扩展:es和logstash都可以根据集群规模线性扩展,es内部自动实现集群协作。
数据展示华丽:kibana作为前端展示工具,图表华丽,配置简单。

组件介绍

ElasticSearch简称ES,它是一个实时的分布式搜索和分析引擎,它可以用于全文搜索,结构化搜索以及分析。java开发,基于Lucene,特点有分布式、零配置、自动发现、索引自动分片、索引副本机制、restful风接口、多数据源等。

Logstash基于java开发,是一个数据收集转化工具。工作方式一般为c/s架构,client端安装在需要收集信息的主机上,server端负责将收到的个节点日志进行过滤、修改等发送到es或其他组件。

Kibana基于nodejs,是一个开源和免费的可视化工具。kebana可以为logstash和es提供友好的日志分析界面,可以汇总、分析和搜索重要数据日志。

Beats平台收集了多种单一用途数据采集器。他们从成百上千或成千上万台机器和系统向logstash或es发送数据。

用途

日志分析并不仅仅包括系统产生的错误日志,异常,也包括业务逻辑,或者任何文本类的分析。而基于日志的分析,能够在其上产生非常多的解决方案,譬如:

1.问题排查。日志分析技术显然是问题排查的基石。基于日志做问题排查,还有一个很帅的技术,叫全链路追踪,比如阿里的eagleeye 或者Google的dapper,也算是日志分析技术里的一种。
2.监控和预警。 日志,监控,预警是相辅相成的。基于日志的监控,预警使得运维有自己的机械战队,大大节省人力以及延长运维的寿命。
3.关联事件。多个数据源产生的日志进行联动分析,通过某种分析算法,就能够解决生活中各个问题。比如金融里的风险欺诈等。这个可以可以应用到无数领域了,取决于你的想象力。
4.数据分析。 这个对于数据分析师,还有算法工程师都是有所裨益的。