前言
在日常工作中我们会面临很多问题,那么处理问题时候,怎么快速的解决问题?一般都会说看日志,看日志得会看才行,那么如何从一堆堆的英文日志中找到问题所在呢?这时候就需要借助工具了:ELK。
一、什么是ELK?
实际上 ELK 是三款软件的简称,分别是Elasticsearch、Logstash、Kibana组成,在发展的过程中,又有新成员Beats的加入,所以就形成了Elastic Stack。
1.Elasticsearch
Elasticsearch是个基于java的开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。主要负责将日志索引并存储起来,方便业务方检索查询。
2.Logstash
Logstash 主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。
它是一个日志收集、过滤、转发的中间件,主要负责将各条业务线的各类日志统一收集、过滤后,转发给 Elasticsearch 后进行下一步处理。
3.Kibana
Kibana 基于nodejs,也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供一个友好的日志分析的Web界面,可以汇总、分析和搜索重要数据日志。
4.Beats
Beats是elastic公司开源的一款采集系统监控数据的代理agent,是在被监控服务器上以客户端形式运行的数据收集器的统称,可以直接把数据发送给Elasticsearch或者通过Logstash发送给Elasticsearch,然后进行后续的数据分析活动。
tips:Beats和Logstash其实都可以进行数据的采集,但是目前主流的是使用Beats进行数据采集,然后使用 Logstash进行数据的分割处理等,早期没有Beats的时候,使用的就是Logstash进行数据的采集。
二、为什么有ELK?
前面也说到了,看日志的时候需要用到ELK,怎么理解呢?我们都知道通过日志排除,可以快速发现问题根源并解决问题。如果是1台或者几台服务器,我们可以通过 linux命令,tail、cat,通过grep、awk等过滤去查询定位日志查问题,但是如果几十台、甚至几百台,通过这种方式肯定不现实。常见解决思路是建立集中式日志收集系统,将所有节点上的日志统一收集,管理,访问,所以这时就该ELK上场了。
ELK系统是一个分布式部署的架构,不同的服务模块部署在不同的服务器上,问题出现时,大部分情况需要根据问题暴露的关键信息,定位到具体的服务器和服务模块,构建一套集中式日志系统,可以提高定位问题的效率。
ELK系统的几个主要特点:
收集-能够采集多种来源的日志数据
传输-能够稳定的把日志数据传输到中央系统
存储-存储日志数据
分析-可以支持 UI 分析
警告-能够提供错误报告,监控机制
总结
以上就是今天要分享的内容,本文仅仅简单介绍了ELK的使用,之后将会具体分析其中每一个组件。
如果本篇博客对您有一定的帮助,大家记得留言+点赞+收藏哦。