Elasticsearch系列组件:Beats高效的日志收集和传输解决方案

Elasticsearch 是一个开源的、基于 Lucene 的分布式搜索和分析引擎,设计用于云计算环境中,能够实现实时的、可扩展的搜索、分析和探索全文和结构化数据。它具有高度的可扩展性,可以在短时间内搜索和分析大量数据。

Elasticsearch 不仅仅是一个全文搜索引擎,它还提供了分布式的多用户能力,实时的分析,以及对复杂搜索语句的处理能力,使其在众多场景下,如企业搜索,日志和事件数据分析等,都有广泛的应用。

本文将介绍 Elastic Stack 组件 Beats 的介绍、原理、安装与简单使用。


文章目录

        • 1、Beats介绍
          • 1.1、Beats简介
          • 1.2、Beats系列组件
          • 1.3、Beats组件安装
        • 2、使用FileBeat对接ES,监控logback日志
          • 2.1、使用FileBeat对接ES,监控logback日志
          • 2.2、测试查看效果
          • 2.3、查看效果
        • 3、Beats数据处理原理
          • 3.1、Beats数据处理原理
          • 3.2、Beats和Logstash


1、Beats介绍
1.1、Beats简介

Beats 是 Elastic Stack 的一部分,它是一系列轻量级的数据采集器。Beats 可以在你的服务器上采集各种类型的数据,并将这些数据发送到 Elasticsearch 或者 Logstash 进行后续处理。

主要功能和用途:

  1. 数据采集:Beats 可以采集各种类型的数据,包括日志文件(Filebeat)、网络数据(Packetbeat)、系统和服务的运行指标(Metricbeat)、Windows 事件日志(Winlogbeat)等。
  2. 数据转发:Beats 可以将采集到的数据发送到 Elasticsearch 进行索引,也可以发送到 Logstash 进行更复杂的处理。
  3. 轻量级:Beats 设计的目标是轻量级和低资源占用,因此它可以在所有类型的服务器上运行,甚至包括在 IoT 设备上。
  4. 易于扩展:Beats 提供了开发者指南,用户可以根据自己的需求编写自定义的 Beats。

总的来说,Beats 是 Elastic Stack 中负责数据采集的组件,它可以帮助用户轻松地从各种源头采集数据,并将数据发送到 Elasticsearch 或 Logstash 进行后续的处理和分析。

image-20231018111226546

1.2、Beats系列组件

Beats 不是一个单独的软件,而是一系列的数据采集器。每一个 Beat 都是一个独立的组件,负责采集特定类型的数据,并将这些数据发送到 Elasticsearch 或者 Logstash 进行后续处理。例如,Filebeat 专门用于收集和转发日志文件,Metricbeat 用于收集系统和服务的运行指标,Packetbeat 用于收集网络流量数据等。

  1. Filebeat:主要用于收集和转发日志文件。它可以监控指定的日志目录或文件,当日志更新时,Filebeat 就会读取更新的内容并发送到 Elasticsearch 或 Logstash。使用场景包括日志分析、故障排查等。

  2. Metricbeat:用于收集系统和服务的运行指标,如 CPU 使用率、内存使用量、网络流量、磁盘 I/O 等。它可以定期收集这些指标并发送到 Elasticsearch 或 Logstash。使用场景包括系统监控、性能分析等。

  3. Packetbeat:用于收集网络流量数据。它可以实时捕获网络流量,然后解析出各种协议的信息(如 HTTP、MySQL、Redis 等),并将这些信息发送到 Elasticsearch 或 Logstash。使用场景包括网络监控、安全分析等。

  4. Winlogbeat:专门用于收集 Windows 事件日志。它可以读取 Windows 事件日志,然后将日志数据发送到 Elasticsearch 或 Logstash。使用场景包括 Windows 系统监控、安全分析等。

  5. Auditbeat:用于收集 Linux 审计框架的数据,以及文件的改变数据。它可以帮助你了解在系统上发生了什么,包括哪些文件被改变,以及系统调用等。使用场景包括系统审计、文件完整性检查等。

  6. Heartbeat:用于定期检查你的服务是否可用。它可以定期发送请求到你的服务,然后收集响应时间等信息,并将这些信息发送到 Elasticsearch 或 Logstash。使用场景包括服务监控、可用性检查等。

1.3、Beats组件安装

我们这里以安装 Beats 系列组件之一的 Filebeat 为例

Elastic 公司的官方下载页面的链接。在这个页面上,你可以下载 Elastic Stack 的各个组件,包括 Elasticsearch、Kibana、Logstash、Beats 等。这个页面提供了各个组件的最新版本下载链接,以及历史版本的下载链接:Past Releases of Elastic Stack Software | Elastic

在这里,我们将选择 filebeat,并确保所选的 filebeat 版本与我们正在使用的 Elasticsearch 版本一致:

image-20231018112106768

选择后选择「Download」开始下载,并在下载成功后解压到指定位置即可。


2、使用FileBeat对接ES,监控logback日志
2.1、使用FileBeat对接ES,监控logback日志

使用 Filebeat 对接 Elasticsearch 监控 logback 日志,可以按照以下步骤进行:

  1. 安装 Filebeat:根据你的操作系统,从 Elastic 官网下载并安装 Filebeat;
  2. 配置 Filebeat:在 Filebeat 的配置文件(通常是 filebeat.yml)中,需要配置两个主要部分,一是输入(input),二是输出(output)。

输入:指定 Filebeat 需要收集的日志文件的位置。如果你的 logback 日志文件位于 /var/log/app/*.log,那么可以这样配置:

filebeat.inputs:
- type: logenabled: truepaths:- /var/log/app/*.log

输出:指定 Filebeat 将数据发送到哪里。如果你的 Elasticsearch 服务运行在 localhost:9200,那么可以这样配置:

output.elasticsearch:hosts: ["localhost:9200"]
  1. 启动 Filebeat:保存并关闭配置文件后,运行 Filebeat。在命令行中,可以使用以下命令启动 Filebeat:
./filebeat -e
  1. 验证数据是否已经发送到 Elasticsearch:你可以查询 Elasticsearch 来验证是否已经接收到来自 Filebeat 的数据。例如,你可以在 Kibana 中查看这些数据,或者直接查询 Elasticsearch 的 API。

以上就是使用 Filebeat 对接 Elasticsearch 监控 logback 日志的基本步骤。在实际操作中,可能还需要根据你的具体需求进行一些额外的配置,例如设置多个输入源、配置日志旋转、添加字段等。

2.2、测试查看效果

我们使用 Python 实现一个生成日志文件的简单脚本

import time
import random
import osdef generate_log():log_file = os.path.expanduser('~/test.log')# 如果文件不存在,则创建文件if not os.path.exists(log_file):with open(log_file, 'w') as file:passwhile True:current_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())operation = random.choice(["操作1", "操作2", "操作3"])  # 随机选择操作信息log = f"{current_time} - {operation}\n"with open(log_file, 'a') as file:file.write(log)print(log)  # 在控制台打印日志信息time.sleep(60)  # 暂停60秒,即每分钟插入一条日志if __name__ == '__main__':generate_log()

这个脚本使用了timerandom模块。在generate_log函数中,通过time.strftime函数获取当前时间,并使用random.choice函数随机选择操作信息。然后将时间和操作信息拼接成一条日志,并使用with open语句打开/var/log/test.log文件,以追加模式写入日志。最后使用time.sleep函数暂停60秒,即每分钟插入一条日志。

2.3、查看效果

可以通过 kinada 查看效果:

image-20231018142208302


3、Beats数据处理原理
3.1、Beats数据处理原理

Beats 是 Elastic Stack(以前称为 ELK Stack)的一部分,主要负责数据收集。它包括多种类型的 Beat,如 Filebeat、Metricbeat、Packetbeat、Auditbeat 等,每种 Beat 都负责收集一种特定类型的数据。

以下是 Beats 数据收集的基本原理:

  1. 数据收集:每种 Beat 都会在运行的主机上收集特定类型的数据。例如,Filebeat 会收集日志文件,Metricbeat 会收集系统和服务的指标,Packetbeat 会收集网络流量数据,Auditbeat 会收集审计数据。

  2. 数据处理:在收集数据之后,Beat 可以对数据进行一些处理,如解析、归一化、丰富等。这是通过配置文件中的处理器(processor)来完成的。

  3. 数据输出:处理过的数据会被发送到配置的输出目标。Beat 支持多种类型的输出,如 Elasticsearch、Logstash、Kafka、Redis 等。最常见的配置是将数据发送到 Elasticsearch,以便在 Kibana 中进行搜索和可视化。

  4. 数据转发:在某些情况下,Beat 可以将数据发送到 Logstash 进行更复杂的处理,然后再由 Logstash 将数据发送到 Elasticsearch。

  5. 模块和集成:为了简化配置和使用,Beat 提供了一系列的模块和集成,可以方便地收集、解析和可视化特定服务(如 Nginx、MySQL、Docker 等)的数据。

总的来说,Beats 的工作原理就是在主机上收集数据,处理数据,然后将数据发送到输出目标。

3.2、Beats和Logstash

Beats 和 Logstash 都是 Elastic Stack 的组件,主要负责数据的收集和处理,但它们的功能和使用场景有所不同。

Beats 是一系列轻量级的数据收集器,每种 Beat 都负责收集一种特定类型的数据。例如,Filebeat 用于收集日志文件,Metricbeat 用于收集系统和服务的指标。Beats 的主要优点是轻量级和低资源消耗,可以直接在数据源(如服务器或容器)上运行。

Logstash 是一个强大的数据处理管道工具,可以接收来自多种源的数据,对数据进行复杂的转换和处理,然后将数据发送到多种目标。Logstash 的主要优点是功能强大和灵活,可以处理各种格式的数据,并支持多种输入、过滤器和输出插件。

以下是 Beats 和 Logstash 的一些主要区别:

  • 资源消耗:Beats 是轻量级的,通常在数据源上运行,占用的资源较少。Logstash 功能更强大,但占用的资源也更多,通常在单独的服务器或容器上运行。

  • 数据处理能力:Beats 的数据处理能力较弱,主要进行简单的数据解析和丰富。Logstash 的数据处理能力强,可以进行复杂的数据转换和处理。

  • 使用场景:如果你只需要收集特定类型的数据,并且数据处理需求较简单,那么使用 Beats 可能更合适。如果你需要处理各种格式的数据,或者需要进行复杂的数据处理,那么使用 Logstash 可能更合适。

在实际使用中,Beats 和 Logstash 通常会一起使用。例如,你可以使用 Beats 在服务器上收集数据,然后将数据发送到 Logstash 进行处理,最后由 Logstash 将处理过的数据发送到 Elasticsearch。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/110201.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

接口自动化测试持续集成,Soapui接口功能测试参数化

按照自动化测试分层实现的原理,每一层的脚本实现都要进行参数化,自动化的目标就是要实现脚本代码与测试数据分离。当测试数据进行调整的时候不会对脚本的实现带来震荡,从而提高脚本的稳定性与灵活度,降低脚本的维护成本。Soapui最…

C#,数值计算——KMeans分类的计算方法与源程序

1 文本格式 using System; namespace Legalsoft.Truffer { /// <summary> /// K-Means classification /// </summary> public class Kmeans { private int nn { get; set; } private int mm { get; set; } private …

优维低代码实践:片段

优维低代码技术专栏&#xff0c;是一个全新的、技术为主的专栏&#xff0c;由优维技术委员会成员执笔&#xff0c;基于优维7年低代码技术研发及运维成果&#xff0c;主要介绍低代码相关的技术原理及架构逻辑&#xff0c;目的是给广大运维人提供一个技术交流与学习的平台。 优维…

5.12.webrtc接口调用过程

嗨&#xff0c;大家好&#xff0c;我是李超&#xff0c;在上节课中呢&#xff0c;我向你介绍了外接口的设计以及我们红接口展开之后的样子&#xff0c;对吧&#xff1f;那今天呢&#xff1f;我们再来看看整个接口调用过程。那整个这个调用过程啊&#xff0c;非常的复杂&#xf…

QCustomPlot实现曲线拖拽

本文内容目录 需求场景&#xff1a;一、选择控件二、将QCustomPlot库整合到你的Qt项目中1、下载源代码2、创建.pri 三、鼠标框选&#xff0c;实现坐标缩放四、曲线拖动1、定位曲线2、移动时改变曲线 五、问题的产生与解决1、查看源码2、修改本项目代码 需求场景&#xff1a; 曲…

excel 日期与时间戳的相互转换

1、日期转时间戳&#xff1a;B1INT((A1-70*365-19)*86400-8*3600)*1000 2、时间戳转日期&#xff1a;A1TEXT((B1/10008*3600)/8640070*36519,"yyyy-mm-dd hh:mm:ss") 以上为精确到毫秒&#xff0c;只精确到秒不需要乘或除1000。 使用以上方法可以进行excel中日期…

行业追踪,2023-10-18

自动复盘 2023-10-18 凡所有相&#xff0c;皆是虚妄。若见诸相非相&#xff0c;即见如来。 k 线图是最好的老师&#xff0c;每天持续发布板块的rps排名&#xff0c;追踪板块&#xff0c;板块来开仓&#xff0c;板块去清仓&#xff0c;丢弃自以为是的想法&#xff0c;板块去留让…

Redis LFU缓存淘汰算法

前言 Redis 在 4.0 版本之前的缓存淘汰算法&#xff0c;只支持 random 和 lru。random 太简单粗暴了&#xff0c;可能把热点数据给淘汰掉&#xff0c;一般不会使用。lru 比 random 好一点&#xff0c;会优先淘汰最久没被访问的数据&#xff0c;但是它也有一个缺点&#xff0c;…

英语——分享篇——每日200词——1001-1200

1001——responsibility——[rɪˌspɒnsəbɪlətɪ]——n.责任——responsibility——res热死(拼音)ponsi胖子(谐音)bili比利(拼音)ty题(谐音)——热死的胖子比利做题时很有责任心——The responsibility for her family bears down on a young woman.——家庭的责任沉重地落…

攻防世界web篇-PHP2

直接点击进入到http网页中&#xff0c;会得到这样一个界面 这里&#xff0c;我最开始使用了burp什么包也没有抓到&#xff0c;然后接着又用nikto进行探测&#xff0c;得到的只有两个目录&#xff0c;当时两个目录打开后&#xff0c;一个是fond界面&#xff0c;一个是这个网页的…

【QT】常用控件——按钮组

继承Widget PushButton 设置图片&#xff0c;先导入图片资源&#xff0c;见&#xff1a;【QT】资源文件导入_复制其他项目中的文件到qt项目中_StudyWinter的博客-CSDN博客 在布局中添加图片 调整尺寸 toolButton 显示图片、文本 显示图片&#xff08;图片和文字都有时&#…

使用Python+selenium实现第一个自动化测试脚本

这篇文章主要介绍了使用Pythonselenium实现第一个自动化测试脚本&#xff0c;文中通过示例代码介绍的非常详细&#xff0c;对大家的学习或者工作具有一定的参考学习价值&#xff0c;需要的朋友们下面随着小编来一起学习学习吧 最近在学web自动化&#xff0c;记录一下学习过程。…

快速解决 Resource not accessible by integration

简介 最近好久没有写博客了&#xff0c;今天在写开源项目 python-package-template 的时候&#xff0c;正好遇到一个问题&#xff0c;记录一下吧。本文将介绍 Resource not accessible by integration 的几种解决方案。 也欢迎大家体验一下 python-package-template 这个项目&…

黑白棋(Othello, ACM/ICPC World Finals 1992, UVa220)rust解法

你的任务是模拟黑白棋游戏的进程。黑白棋的规则为&#xff1a;黑白双方轮流放棋子&#xff0c;每次必须让新放的棋子“夹住”至少一枚对方棋子&#xff0c;然后把所有被新放棋子“夹住”的对方棋子替换成己方棋子。一段连续&#xff08;横、竖或者斜向&#xff09;的同色棋子被…

SpringCloud: sentinel热点参数限制

一、定义controller package cn.edu.tju.controller;import com.alibaba.csp.sentinel.annotation.SentinelResource; import com.alibaba.csp.sentinel.slots.block.BlockException; import org.springframework.web.bind.annotation.PathVariable; import org.springframewo…

Unity笔记--渲染顺序

目录 Unity中的渲染顺序一、Camera层二、透明类型&#xff08;先渲染不透明&#xff09;三、物体的SortingLayer&#xff08;越小越先渲染&#xff09;四、sorting order&#xff08;越小越先渲染&#xff09;五、RenderQueue &#xff08;越小越优先&#xff09;六、距离相机z…

【算法设计zxd】第6章 回溯法

目录 6.1 回溯法的设计技术 &#xff1a; 四皇后问题 回溯法&#xff1a; 算法框架&#xff1a; 思考题&#xff1a; 回溯算法的适用条件 【例6-1】求满足下列不等式的所有整数解&#xff1a; 6.2回溯算法的经典例题 【例6-2】装载问题  问题分析 计算模型  算法设计与描…

BookStack 详解及 Docker-Compose 部署

BookStack 是一款用于创建文档和文档管理的开源平台。它提供了一个直观且功能丰富的界面&#xff0c;可用于组织和管理各种文档&#xff0c;包括文档编写、编辑和共享。本文将介绍 BookStack 的核心功能&#xff0c;并展示如何使用 Docker-Compose 快速部署 BookStack。 BookS…

Pika v3.5.1发布!

Pika 社区很高兴宣布&#xff0c;我们今天发布已经过我们生产环境验证 v3.5.1 版本&#xff0c;https://github.com/OpenAtomFoundation/pika/releases/tag/v3.5.1 。 该版本不仅做了很多优化工作&#xff0c;还引入了多项新功能。这些新功能包括 动态关闭 WAL、ReplicationID…

BI零售数据分析,当代零售企业的核心竞争力

在数字化转型中&#xff0c;BI智能零售数据分析成为了极其重要的核心竞争力之一。通过对大数据的采集和分析&#xff0c;零售企业可以更好地了解消费者的需求和行为模式&#xff0c;从而做出更准确的决策。例如&#xff0c;通过分析消费者的购物历史、浏览记录等数据&#xff0…