目录
什么要做日志分析平台
一、 Elasticsearch
elasticsearch核心概念
二、Logstash
Logstash 的主要组件
三、Kibana
介绍
功能
ELK搭建
四、Filebeat
Filebeat工作方式
Filebeat工作原理
五、Filebeat和Logstash
为什么使用filebeat收集日志更好
Filebeat结合Logstash的好处
六、ELK+Filebeat+Kafka+Zookeeper
ELK 是一整套解决方案,是三个软件产品的首字母缩写: Elasticsearch,Logstash 和 Kibana。这三款软件都是开源软件,通常是配合使用, 而且又先后归于 Elastic.co 公司名下,故被简称为 ELK 协议栈。
官网地址:免费且开放的搜索:Elasticsearch、ELK 和 Kibana 的开发者 | Elastic
什么要做日志分析平台
随着业务量的增长,每天业务服务器将会产生上亿条的日志,单个日志文件达几 个 GB,这时我们发现用 Linux 自带工具,cat grep awk 分析越来越力不从心了, 而且除了服务器日志,还有程序报错日志,分布在不同的服务器,查阅繁琐
一、 Elasticsearch
Elasticsearch是一个高度可扩展的全文搜索和分析引擎,基于 Apache Lucence (事实上,Lucence 也是百度所采用的搜索引擎)构建,能够对大容量的数据进 行接近实时的存储、搜索和分析操作。
elasticsearch核心概念
(1)、接近实时(NRT)
elasticsearch 是一个接近实时的搜索平台,这意味着,从索引一个文档直到这个 文档能够被搜索到有一个轻微的延迟(通常是 1 秒)
(2)、cluster 集群
一个集群就是由一个或多个节点组织在一起,它们共同提供索引和搜索功能。其中一个节点为主节点,这个主节点是可以通过选举产生的,并提供跨节点的联合索引和搜索的功能。集群有一个唯一性标示的名字,默认是 elasticsearch,集群名字很重要,每个节点是基于集群名字加入到其集群中的。因此,确保在不同环境中使用不同的集群名字。—个集群可以只有一个节点。es 具有集群机制,节点通过集群名称加入到集群中,同时在集群中的节点会有一个自己的唯一身份标识(自己的名称)
(3)、 node节点
节点就是一台单一的服务器,是集群的一部分,存储数据并参与集群的索引和搜索功能。像集群一样,节点也是通过名字来标识,默认是在节点启动时随机分配的字符名。当然,你可以自己定义。该名字也很重要,在集群中用于识别服务器对应的节点。节点可以通过指定集群名字来加入到集群中。默认情况,每个节点被设置成加入到 elasticsearch 集群。如果启动了多个节点,假设能自动发现对方,他们将会自动组建一个名为 elasticsearch 的集群。
(4)、 index 索引
一个索引就是一个拥有几分相似特征的文档的集合。比如说,你可以有一个客户数据的索引、一个产品目录的索引、还有一个订单数据的索引。一个索引用一个名字来标识(必须全部是小写字母组合),并且当我们要对相应的索引中的文档进行索引、收缩、更新和删除的时候,都要用到这个名字。在一个集群中,可以定义多个索引。(索引相对于关系型数据库的库)类型相对于关系型数据库的表 ——》索引(库)-》类型(表)-》文档(记录)
(5)、 类型(type)
类型(type)在一个索引中,你可以定义一种或多种类型。一个类型是你的索引的一个逻辑上的分类分区,其寓意完全由你来定义。通常,会为具有一组共同字段的文档定义一个类型。比如:我们假设运营一个博客平台并且将所有的数据存储到一个索引中,在这个索引中,你可以为用户数据定义一个类型,为博客数据定义一个类型,也可以为评论数据定义另一个类型。(类型相对于关系型数据库的表)
(6)、文档(document)
文档就是最终的数据了,可以认为一个文档就是一条记录。是 ES 里面最小的数据单元,就好比表里面的一条数据
(7)、分片和副本(shards & replicas)
在实际情况下,索引存储的数据可能超过单个节点的硬件限制。如一个 10亿文档需 1TB 空间可能不适合存储在单个节点的磁盘上或者从单个节点搜索请求太慢了。为了解决这个问题,elasticsearch 提供将索引分成多个分片的功能。当在创建索引时,可以定义想要分片的数量。每一个分片就是一个全功能的独立的索引,可以位于集群中任何节点上
二、Logstash
Logstash 是一个具有实时渠道能力的数据收集引擎。使用 JRuby 语言编写。其作者是世界著名的运维工程师乔丹西塞 (JordanSissel)。
—款强大的数据处理工具
可实现数据传输、格式处理、格式化输出
数据输入(从业务输入)、数据加工(如过滤、改写等)以及数据输出(输出到Elasticsearch 群集)
Logstash 的主要组件
shipper:日志收集者,负责监控本地日志文件的变化,及时把日志文件的最新内容收集起来。通常,远程代理端(agent)只需要运行这个组件即可
indexer:日志存储者,负责接收日志并写入到本地文件
broker:日志 hub,负责连接多个 shipper 和多个 indexer
search and storage:允许对事件进行搜索和存储
web interface:基于 Web 的展示界面
三、Kibana
介绍
(1)一个针对 Elasticsearch 的开源分析及可视化平台;
(2)搜索、查看存储在 Elasticsearch 索引中的数据;
(3)通过各种图标进行高级数据分析及展示;
(4)让海量数据更容易理解;
(5)操作简单,基于浏览器地用户界面就可以快速创建仪表板(dashboard)实时显示 Elasticsearch 查询动态;
(6)设置安装 Kibana 非常简单,无需编写代码,几分钟内就可以完成 Kibana安装并启动 Elasticsearch 监测。
功能
(1)Elasticsearch 无缝集成。Kibana 架构为 Elasticsearch 定制,可以将任何结构化和非结构化数据加入 Elasticsearch 索引。Kibana 还充分利用了 Elasticsearch强大的搜索和分析功能。
(2)整合数据:Kibana 能够更好地处理海量数据,并据此创建柱形图、折线图、散点图、直方图、饼图和地图。
(3)复杂数据分析:Kibana 提升了 Elasticsearch 分析能力,能够更加智能地分析数据,执行数学转换并且根据要求对数据切割分块。
(4)让更多团队成员受益:强大的数据库可视化接口让各业务岗位都能够从数据集合受益。
(5)接口灵活,分享更容易:使用 Kibana 可以更加方便地创建、保存、分享数据,并将可视化数据快速交流。
(6)配置简单:Kibana 的配置和启用非常简单,用户体验非常友好。Kibana 自带 Web 服务器,可以快速启动运行。
(7)可视化多数据源:Kibana 可以非常方便地把来自 Logstash、ES-Hadoop、Beats或第三方技术的数据整合到 Elasticsearch,支持的第三方技术包括 Apache Flume、Fluentd 等。
(8)简单数据导出:Kibana 可以方便地导出感兴趣的数据,与其它数据集合并融合后快速建模分析,发现新结果。
ELK搭建
四、Filebeat
Filebeat 是一款轻量级的开源日志文件数据搜索器。通常在需要采集数据的客户端安装 Filebeat,并指定目录与日志格式,Filebeat 就能快速收集数据,并发送给 Logstash 进行解析,或是直接发给 ES 存储,性能上相比运行于 JVM 上的 Logstash 优势明显,是对它的(日志收集)替代。
Filebeat 由两个主要组成部分组成:(inputs)prospector(探勘者)和 harvesters(矿车)。这些组件一起工作来读取文件并将事件数据发送到指定的 output。
prospector: 负责找到所有需要进行读取的数据源
harvesters:负责读取单个文件的内容,并将内容发送到 output 中,负责文件的打开和关闭
Filebeat工作方式
启动 Filebeat 时,它将启动一个或多个输入,这些输入将在为日志数据指定的位置中查找。对于 Filebeat 所找到的每个日志,Filebeat 都会启动收集器。每个收集器都读取单个日志以获取新内容,并将新日志数据发送到 libbeat,libbeat 将聚集事件,并将聚集的数据发送到为 Filebeat 配置的输出(例如elasticsearch、logstash等)
Filebeat工作原理
Filebeat 可以保持每个文件的状态,并且频繁地把文件状态从注册表里更新到磁盘。这里所说的文件状态是用来记录上一次 Harvster 读取文件时读取到的位置,以保证能把全部的日志数据都读取出来,然后发送给 output。如果在某一时刻,作为 output 的 ElasticSearch 或者 Logstash 变成了不可用,Filebeat 将会把最后的文件读取位置保存下来,直到 output 重新可用的时候,快速地恢复文件数据的读取。在 Filebaet 运行过程中,每个 Prospector 的状态信息都会保存在内存里。如果 Filebeat 出现了重启,完成重启之后,会从注册表文件里恢复重启之前的状态信息,让 FIlebeat 继续从之前已知的位置开始进行数据读取。
五、Filebeat和Logstash
为什么使用filebeat收集日志更好
logstash 是 jvm 跑的,资源消耗比较大,启动一个 logstash 就需要消耗 500M左右的内存(这就是为什么 logstash 启动特别慢的原因),而 filebeat 只需要 10 M 左右的内存资源。常用的 ELK 日志采集方案中,大部分的做法就是将所有节点的日志内容通过 filebeat 发送到 logstash,logstash 根据配置文件进行过滤。然后将过滤之后的文件输送到 elasticsearch 中,通过 kibana 去展示
Filebeat结合Logstash的好处
(1)通过 Logstash 具有基于磁盘的自适应缓冲系统,该系统将吸收传入的吞吐量,从而减轻 Elasticsearch 持续写入数据的压力
(2)从其他数据源(例如数据库,S3对象存储或消息传递队列)中提取
(3)将数据发送到多个目的地,例如S3,HDFS(Hadoop分布式文件系统)或写入文件
(4)使用条件数据流逻辑组成更复杂的处理管道
六、ELK+Filebeat+Kafka+Zookeeper
第一层、数据采集层
数据采集层位于最左边的业务服务器集群上,在每个业务服务器上面安装了filebeat 做日志收集,然后把采集到的原始日志发送到 Kafka+zookeeper 集群上。
第二层、消息队列层
原始日志发送到 Kafka+zookeeper 集群上后,会进行集中存储,此时,filbeat 是消息的生产者,存储的消息可以随时被消费。
第三层、数据分析层
Logstash 作为消费者,会去 Kafka+zookeeper 集群节点实时拉取原始日志,然后将获取到的原始日志根据规则进行分析、清洗、过滤,最后将清洗好的日志转发至 Elasticsearch 集群。
第四层、数据持久化存储
Elasticsearch 集群在接收到 logstash 发送过来的数据后,执行写磁盘,建索引库等操作,最后将结构化的数据存储到 Elasticsearch 集群上。
第五层、数据查询、展示层
Kibana 是一个可视化的数据展示平台,当有数据检索请求时,它从 Elasticsearch集群上读取数据,然后进行可视化出图和多维度分析。文章来源:https://www.toymoban.com/news/detail-404415.html
文章来源地址https://www.toymoban.com/news/detail-404415.html
到了这里,关于ELK日志分析系统和ELFK的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!