开源实时日志分析平台-ELK

1、ELK简介

1、什么是日志

日志就是程序产生的,遵行一定格式的文本数据

通常日志由服务器生成,输出到不同的文件中,一般会有系统日志、 应用日志、安全日志。这些日志分散地存储在不同的机器上

2、日志的重要性

日志主要包括系统日志、应用程序日志和安全日志。系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因。经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误。

我认为,日志数据在以下几方面具有非常重要的作用

1、数据查找:

通过检索日志信息,定位相应的bug,找出解决方案

2、服务判断:

通过对日志信息进行统计,分析,了解服务器的负荷和服务运行状态

3、数据分析:

可以做进一步的数据分析,比如根据请求中的商品id,找出用户感兴趣的商品

3、存在的问题

通常,日志被分散的储存不同的设备上。如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志。这样是不是感觉很繁琐和效率低下。当务之急我们使用集中化的日志管理,例如:开源的syslog,将所有服务器上的日志收集汇总。集中化管理日志后,日志的统计和检索又成为一件比较麻烦的事情,一般我们使用grep、awk和wc等Linux命令能实现检索和统计,但是对于要求更高的查询、排序和统计等要求和庞大的机器数量依然使用这样的方法难免有点力不从心。

4、如何解决

开源实时日志分析ELK平台能够完美的解决我们上述的问题,ELK是一个成熟的日志系统,主要功能有日志的收集、分析、检索。ELK由ElasticSearch、Logstash和Kibana三个开源工具组成。这三个工具组合形成了一套实用、易用的日志管理平台,可抓取系统日志、apache日志、nginx日志、mysql日志等多种日志类型,目前很多公司用它来搭建可视化的集中式日志分析平台。

5、ELK关系

ELK这三个开源工具的关系,简单来说就是logstatsh收集日志,存到elasticerach(存储、产生索引、检索),再由kibana展现

elasticsearch:

是一个开源分布式搜索引擎,提供搜索、分析存储数据三大功能。他主要负责将logstash抓来的日志数据索引并储存起来。

logstash :

主要是用来日志搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为C/S构架

kibana:

也是一个开源和免费的工具,kibana可以为logstsh和elasticsearsh提供的日志分析友好的web界面,可以帮助汇总、分析和搜索重要数据日志

6、ELK优点

通俗来讲,ELK是由Elasticsearch、Logstash、Kibana 三个开源软件的组成的一个组合体,这三个软件当中,每个软件用于完成不同的功能,ELK又称为ELK stack,官方域名为stactic.co,ELK stack的主要优点有如下几个:

    处理方式灵活: elasticsearch是实时全文索引,具有强大的搜索功能

    配置相对简单:elasticsearch全部使用JSON 接口,logstash使用模块配置,kibana的配置文件部分更简单。

    检索性能高效:基于优秀的设计,虽然每次查询都是实时,但是也可以达到百亿级数据的查询秒级响应。

    集群线性扩展:elasticsearch和logstash都可以灵活线性扩展

    前端操作绚丽:kibana的前端设计比较绚丽,而且操作简单。Kibana 界面上,只需要点击鼠标,就可以完成搜索、聚合功能,生成炫丽的仪表板

7、ELK常见的几种构架体系

7.1、Elasticsearch + Logstash + Kibana

此构架由logstash分布于各个节点上搜集相关日志、数据、并经过分析、过滤后发送给远端服务器上的Elasticsearch进行存储。 Elasticsearch将数据以分片的形式压缩存储并提供多种API供用户查询,操作。用户亦可以更直观的通过配置Kibana Web方便的对日志查询,并根据数据生成报表。

  这是最简单的一种ELK架构方式。优点是搭建简单,易于上手。缺点是Logstash耗资源较大,运行占用CPU和内存高。另外没有消息队列缓存,存在数据丢失隐患。

7.2、Elasticsearch + Logstash + filebeat + Kibana

与上一种架构相比,这种架构增加了一个filebeat模块。filebeat是一个轻量的日志收集代理,用来部署在客户端,优势是消耗非常少的资源(较logstash), 所以生产中,往往会采取这种架构方式,此种架构将收集端logstash替换为beats,更灵活,消耗资源更少,扩展性更强。同时可配置Logstash 和Elasticsearch 集群用于支持大集群系统的运维日志数据监控和查询。但是这种架构有一个缺点,没有消息队列缓存,当logstash出现故障,会造成日志的丢失。

7.3、Elasticsearch + Logstash + filebeat + redis(kafka)+ Kibana

说明:

 logstash节点和elasticsearch节点可以根据日志量伸缩节点数量, filebeat部署在每台需要收集日志的服务器上。

 此种架构引入了消息队列机制,位于各个节点上的beats先将数据/日志传递给消息队列(kafka、redis、rabbitMQ等),logstash从消息队列取数据进行过滤、分析后将数据传递给Elasticsearch存储。最后由Kibana将日志和数据呈现给用户。因为引入了Kafka(或者Redis),所以即使远端Logstash server因故障停止运行,数据将会先被存储下来,从而避免数据丢失。

注:Beats还不支持输出到消息队列,新版本除外:5.0版本及以上

 工作流程:Filebeat采集—>发到kafka—>  logstash处理从kafka缓存的数据进行分析—>  输出到es—>  显示在kibana

    多个独立的agent(filebeat)负责收集不同来源的数据,一个中心agent(logstash)负责汇总和分析数据,在中心agent前的Broker(使用kafka/redis实现)作为缓冲区,中心agent后的ElasticSearch用于存储和搜索数据,前端的Kibana提供丰富的图表展示。

    filebeat表示日志收集,使用filebeat收集各种来源的日志数据,可以是系统日志、文件、redis、mq等等;

    Broker作为远程agent与中心agent之间的缓冲区,使用kafka/redis实现,一是可以提高系统的性能,二是可以提高系统的可靠性,当中心agent提取数据失败时,数据保存在kafka/redis中,而不至于丢失;

    中心agent也是LogStash,从Broker中提取数据,可以执行相关的分析和处理(Filter);

    ElasticSearch用于存储最终的数据,并提供搜索功能;

    Kibana提供一个简单、丰富的web界面,数据来自于ElasticSearch,支持各种查询、统计和展示。

 这种模式特点:这种架构适合于日志规模比较庞大的情况。但由于 Logstash 日志解析节点和 Elasticsearch 的负荷比较重,可将他们配置为集群模式,以分担负荷。引入消息队列,均衡了网络传输,从而降低了网络闭塞,尤其是丢失数据的可能性。

8、ELK两种安装方式

1、集成环境:

logstash有一个集成包,里面包括了其全套的三个组件;也就是安装一个集成包

2、独立环境:三个组件分别单独安装、运行、个词其职

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值