请选择 进入手机版 | 继续访问电脑版

[其它综合] 深入浅析ELK原理与简介

[复制链接]
查看153 | 回复25 | 2021-9-12 18:33:52 | 显示全部楼层 |阅读模式

为什么用到ELK:

一样寻常 我们必要 举行 日志 分析场景:直接在日志 文件中 grep、awk 就可以获得本身 想要的信息。但在规模较大的场景中,此方法服从 低下,面临 题目 包括日志 量太大怎样 归档、文本搜索 太慢怎么办、怎样 多维度查询。必要 集中化的日志 管理,全部 服务器上的日志 网络 汇总。常见办理 思绪 是建立集中式日志 网络 体系 ,将全部 节点上的日志 同一 网络 ,管理,访问。

一样寻常 大型体系 是一个分布式部署的架构,不同的服务模块部署在不同的服务器上,题目 出现时,大部分环境 必要 根据题目 暴露的关键信息,定位到具体 的服务器和服务模块,构建一套集中式日志 体系 ,可以进步 定位题目 的服从 。

一个完备 的集中式日志 体系 ,必要 包含以下几个重要 特点:

  • 网络 -可以或许 采集多种泉源 的日志 数据
  • 传输-可以或许 稳固 的把日志 数据传输到中央 体系
  • 存储-怎样 存储日志 数据
  • 分析-可以支持 UI 分析
  • 告诫 -可以或许 提供错误报告,监控机制

ELK提供了一整套办理 方案,并且都是开源软件,之间互相共同 使用 ,完善 衔接,高效的满意 了很多场合的应用。如今 主流的一种日志 体系 。

ELK简介:

ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件。新增了一个FileBeat,它是一个轻量级的日志 网络 处理工具(Agent),Filebeat占用资源少,得当 于在各个服务器上搜集日志 后传输给Logstash,官方也保举 此工具。

Elasticsearch是个开源分布式搜索 引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零设置 ,主动 发现,索引主动 分片,索引副本机制,restful风格接口,多数据源,主动 搜索 负载等。

Logstash 重要 是用来日志 的搜集、分析、过滤日志 的工具,支持大量的数据获取方式。一样寻常 工作方式为c/s架构,client端安装在必要 网络 日志 的主机上,server端负责将收到的各节点日志 举行 过滤、修改等操作在一并发往elasticsearch上去。

Kibana 也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志 分析友爱 的 Web 界面,可以帮助汇总、分析和搜索 告急 数据日志 。

Filebeat从属 于Beats。如今 Beats包含四种工具:

  1. Packetbeat(搜集网络流量数据)
  2. Topbeat(搜集体系 、进程 和文件体系 级别的 CPU 和内存使用 环境 等数据)
  3. Filebeat(搜集文件数据)
  4. Winlogbeat(搜集 Windows 变乱 日志 数据)

官方文档:

Filebeat:

https://www.elastic.co/cn/products/beats/filebeat
https://www.elastic.co/guide/en/beats/filebeat/5.6/index.html

Logstash:
https://www.elastic.co/cn/products/logstash
https://www.elastic.co/guide/en/logstash/5.6/index.html

Kibana:

https://www.elastic.co/cn/products/kibana

https://www.elastic.co/guide/en/kibana/5.5/index.html

Elasticsearch:
https://www.elastic.co/cn/products/elasticsearch
https://www.elastic.co/guide/en/elasticsearch/reference/5.6/index.html

elasticsearch中文社区:
https://elasticsearch.cn/

ELK架构图:

架构图一:

深入浅析ELK原理与简介

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

此架构由Logstash分布于各个节点上搜集干系 日志 、数据,并颠末 分析、过滤后发送给远端服务器上的Elasticsearch举行 存储。Elasticsearch将数据以分片的情势 压缩存储并提供多种API供用户查询,操作。用户亦可以更直观的通过设置 Kibana Web方便的对日志 查询,并根据数据天生 报表。

架构图二:

深入浅析ELK原理与简介

此种架构引入了消息队列机制,位于各个节点上的Logstash Agent先将数据/日志 传递给Kafka(或者Redis),并将队列中消息或数据间接传递给Logstash,Logstash过滤、分析后将数据传递给Elasticsearch存储。末了 由Kibana将日志 和数据呈现给用户。由于 引入了Kafka(或者Redis),以是 即使远端Logstash server因故障克制 运行,数据将会先被存储下来,从而避免数据丢失。

架构图三:

深入浅析ELK原理与简介

此种架构将网络 端logstash更换 为beats,更机动 ,斲丧 资源更少,扩展性更强。同时可设置 Logstash 和Elasticsearch 集群用于支持大集群体系 的运维日志 数据监控和查询。

Filebeat工作原理:

Filebeat由两个重要 组件构成 :prospectors 和 harvesters。这两个组件协同工作将文件变动发送到指定的输出中。

深入浅析ELK原理与简介

Harvester(收割机):负责读取单个文件内容。每个文件会启动一个Harvester,每个Harvester会逐行读取各个文件,并将文件内容发送到订定 输出中。Harvester负责打开和关闭文件,意味在Harvester运行的时间 ,文件形貌 符处于打开状态,假如 文件在网络 中被重定名 或者被删除,Filebeat会继续读取此文件。以是 在Harvester关闭之前,磁盘不会被开释 。默认环境 filebeat会保持文件打开的状态,直到达到

  1. <a rel="external nofollow" target="_blank" href="https://www.elastic.co/guide/en/beats/filebeat/5.5/configuration-filebeat-options.html"><strong>close_inactive</strong></a>
复制代码
(假如 此选项开启,filebeat会在指定时间内将不再更新的文件句柄关闭,时间从harvester读取末了 一行的时间开始计时。若文件句柄被关闭后,文件发生变化,则会启动一个新的harvester。关闭文件句柄的时间不取决于文件的修改时间,若此参数设置 不当,则大概 发生日志 不及时 的环境 ,由scan_frequency参数决定,默认10s。Harvester使用 内部时间戳来记录文件末了 被网络 的时间。比方 :设置5m,则在Harvester读取文件的末了 一行之后,开始倒计时5分钟,若5分钟内文件无变化,则关闭文件句柄。默认5m)。

Prospector(勘探 者):负责管理Harvester并找到全部 读取源。

Prospector会找到/apps/logs/*目次 下的全部 info.log文件,并为每个文件启动一个Harvester。Prospector会检查每个文件,看Harvester是否已经启动,是否必要 启动,或者文件是否可以忽略。若Harvester关闭,只有在文件大小发生变化的时间 Prospector才会实行 检查。只能检测本地的文件。

Filebeat怎样 记录文件状态:

将文件状态记录在文件中(默认在/var/lib/filebeat/registry)。此状态可以记住Harvester网络 文件的偏移量。若毗连 不上输出装备 ,如ES等,filebeat会记录发送前的末了 一行,并再可以毗连 的时间 继续发送。Filebeat在运行的时间 ,Prospector状态会被记录在内存中。Filebeat重启的时间 ,使用 registry记录的状态来举行 重修 ,用来还原到重启之前的状态。每个Prospector会为每个找到的文件记录一个状态,对于每个文件,Filebeat存储唯一标识符以检测文件是否先前被网络 。

Filebeat怎样 保证变乱 至少被输出一次:

Filebeat之以是 能保证变乱 至少被传递到设置 的输出一次,没有数据丢失,是由于 filebeat将每个变乱 的传递状态保存在文件中。在未得到输出方确认时,filebeat会尝试不停 发送,直到得到回应。若filebeat在传输过程中被关闭,则不会再关闭之前确认所偶尔 变乱 。任何在filebeat关闭之前为确认的时间,都会在filebeat重启之后重新发送。这可确保至少发送一次,但有大概 会重复。可通过设置shutdown_timeout 参数来设置关闭之前的等待变乱 回应的时间(默认禁用)。

Logstash工作原理:

Logstash变乱 处理有三个阶段:inputs → filters → outputs。是一个吸收 ,处理,转发日志 的工具。支持体系 日志 ,webserver日志 ,错误日志 ,应用日志 ,总之包括全部 可以抛出来的日志 范例 。

深入浅析ELK原理与简介

Input:输入数据到logstash。

一些常用的输入为:

file:从文件体系 的文件中读取,雷同 于tail -f下令

syslog:在514端口上监听体系 日志 消息,并根据RFC3164标准举行 分析

redis:从redis service中读取

beats:从filebeat中读取

Filters:数据中心 处理,对数据举行 操作

一些常用的过滤器为:

grok:分析 恣意 文本数据,Grok 是 Logstash 最告急 的插件。它的重要 作用就是将文本格式的字符串,转换成为具体 的布局 化的数据,共同 正则表达式使用 。内置120多个分析 语法。

官方提供的grok表达式:https://github.com/logstash-plugins/logstash-patterns-core/tree/master/patterns
grok在线调试:https://grokdebug.herokuapp.com/

mutate:对字段举行 转换。比方 对字段举行 删除、更换 、修改、重定名 等。

drop:丢弃一部分events不举行 处理。

clone:拷贝 event,这个过程中也可以添加或移除字段。

geoip:添加地理信息(为前台kibana图形化展示使用 )

Outputs:outputs是logstash处理管道的最末了 组件。一个event可以在处理过程中颠末 多重输出,但是一旦全部 的outputs都实行 竣事 ,这个event也就完成生命周期。

一些常见的outputs为:

elasticsearch:可以高效的保存数据,并且可以或许 方便和简单的举行 查询。

file:将event数据保存到文件中。

graphite:将event数据发送到图形化组件中,一个很盛行 的开源存储图形化展示的组件。

Codecs:codecs 是基于数据流的过滤器,它可以作为input,output的一部分设置 。Codecs可以帮助你轻松的分割发送过来已经被序列化的数据。

一些常见的codecs:

json:使用 json格式对数据举行 编码/解码。

multiline:将汇多个变乱 中数据汇总为一个单一的行。比如:java非常 信息和堆栈信息。

到此这篇关于ELK原理与先容 的文章就先容 到这了,更多干系 ELK原理内容请搜索 脚本之家从前 的文章或继续欣赏 下面的干系 文章盼望 大家以后多多支持脚本之家!


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

avatar 付佳琦 | 2021-9-12 23:14:56 | 显示全部楼层
这么经典的话只有admin楼主能想到!
回复

使用道具 举报

avatar 淡淡清水1314 | 2021-9-18 08:08:22 | 显示全部楼层
这么版块的帖子越来越有深度了!
回复

使用道具 举报

avatar 石头剪子布854 | 2021-9-19 11:54:05 | 显示全部楼层
没人理我,好伤心啊!
回复

使用道具 举报

avatar 李亚兵 | 2021-9-19 16:32:36 | 显示全部楼层
禽兽不如应该不是说admin楼主的的吧?
回复

使用道具 举报

avatar Jacqueline季 | 2021-10-2 13:22:59 | 显示全部楼层
大神就是大神,这么经典!
回复

使用道具 举报

avatar 阿威来自山西 | 2021-10-4 09:44:49 | 显示全部楼层
admin楼主的文笔不错!
回复

使用道具 举报

avatar 杨俊语语il | 2021-10-12 14:49:55 | 显示全部楼层
admin楼主,您忘记吃药了吧?
回复

使用道具 举报

avatar 零度2017 | 2021-10-13 13:40:57 | 显示全部楼层
admin楼主英明!
回复

使用道具 举报

avatar 巴拿巴 | 2021-10-15 14:37:06 | 显示全部楼层
admin楼主看起来很有学问!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则