实时日志分析系统-ELK

一、ELK简介

1.什么是日志

日志就是程序产生的,遵循一定格式(通常包括时间戳)的文本数据。

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

1).日志的重要性

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

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

数据查找:通过检索日志信息,可以找到故障或bug的原因,找出解决方案

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

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

2)存在的问题

通常,日志被分散的储存不同的设备上,当多数十上百台服务器,还使用依次登录每台主机的传统方法查看,大大影响我们查阅的效率,当务之急我们使用集中化的日志管理。

集中化管理日志后,日志的统计和检索又成为一件比较麻烦的事情,一般我们使用grep、awk和wc等Linux命令能实现检索和统计,但是对于要求更高的查询、排序和统计等要求和庞大的机器数量依然使用这样的方法难免有点力不从心

3)如何解决

ELK是一个成熟的日志系统,主要功能有日志的收集、分析、检索。ELK由ElasticSearch(日志的查询)、Logstash(日志收集和过滤)和Kibana(展示日志)三个开源工具组成。

这工具组合形成了一套实用、易用的日志管理平台,可抓取系统日志、apache日志、nginx日志、mysql日志等多种日志类型

2.ELK

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

 Elasticsearch:是个开源分布式搜索引擎数据库、提供搜索、分析存储数据三大功能。

主要负责将logstash抓取来的日志数据索引并存储起来,特点有:分布式,零配置,自动发现。索自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。数据以JSON文档的格式存储索引,不需要预先规定范式

Logstash :主要用于日志搜索、过滤的日志工具,支持大量的数据获取方式,一般工作方式为C/S架构,客户端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上。

Kibana :为Logstash 和ElasticSearch 提供了日志分析的 Web 界面,汇总、分析和搜索重要的数据日志

ELK是三个开源软件的缩写分别表示:Elasticsearch , Logstash, Kibana,都是开源软件

新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具

官方网站:Elastic 产品:搜索、分析、日志和安全 | Elastic

扩展:ElasticSearch和传统数据库的术语对比

RDS        Elasticsearch说明
datebaseindex在关系型数据库中库叫datebase,ES中一个index就是一个库
tabletype
primary keyid关系型数据库的主键在ES中是ID
row

JSON

document

文档是最基本的数据存储单元,因此ES为文档型 NoSQL数据库
colummfield列是 field
schemamapping可以支持动态范式,也可以将范式指定下来,从而优化对数据索引和查询
index(all)在ES(ElasticSearch)中所有字段都是被索引的,不需要手动指定索引
SQLquery DSLES中语句是,DSL

 3.优点

ELK又称为ELK stack,官方域名为stactic.co,ELK stack的主要优点有如下几个:

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

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

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

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

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

 4.ELK应用场景

1.分布式部署,需要收集日志

2.微服务架构项目,收集各个服务的日志

3.大数据行业

ELK组件在大数据运维系统中,主要可解决的问题如下:

         日志查询,问题排查,上线检查

         服务器监控,应用监控,错误报警,bug管理

        性能分析,用户行为分析,安全漏洞分析

5.ELK常见的集中架构体系

1)Elasticsearch + Logstash + Kibana

由Logstash分布于各个节点上搜集相关日志、数据,并经过分析、过滤后发送给远端服务器上的Elasticsearch进行存储, 最后通Kibana web的方式页面展示

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

2)Elasticsearch + Logstash + filebeat + Kibana

 

 与上一种架构相比,这种架构增加了一个filebeat模块。filebeat是一个轻量的日志收集代理,用来部署在客户端,优势是消耗非常少的资源(较logstash), 所以生产中,往往会采取这种架构方式

更灵活,消耗资源更少,扩展性更强。同时可配置Logstash 和Elasticsearch 集群用于支持大集群系统的运维日志数据监控和查询。但是这种架构有一个缺点,没有消息队列缓存,当logstash出现故障,会造成日志的丢失

轻量级日志采集框架Beats,其中包含以下6种:

 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 的负荷比较重,可将他们配置为集群模式,以分担负荷。引入消息队列,均衡了网络传输,从而降低了网络闭塞,尤其是丢失数据的可能性

6.ELK有两种安装方式

1)集群环境:Logstash有一个集成包,里面包括了其全套的三个组件;也就是安装一个集成包

2)独立环境:三个组件分别单独安装、运行、各司其职(比较常用)

7.官网地址

Elastic 产品:搜索、分析、日志和安全 | Elastic

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蟹黄堡!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值