Beats:Elastic Beats 介绍 及和 Logstash 的比较

本文详细介绍了Elastic Stack的核心组件Elasticsearch、Logstash、Kibana和Beats的使用场景与配置方法,特别是对Beats家族进行了全面的介绍,包括Filebeat、Packetbeat、Metricbeat等,并提供了详细的配置与使用教程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Elastic Stack 传统上由三个主要组件(Elasticsearch,Logstash 和 Kibana)组成,早已脱离了这种组合,现在也可以与名为 “Beats” 的第四个元素结合使用--一个针对不同用例的日志运送者系列。 现在网上有一种说法叫做 ELKB,这里的 B 就是指的 Beats。本教程为刚刚熟悉堆栈的用户提供了指南,并提供了开始使用不同节奏的信息 - FilebeatPacketbeatMetricbeatAuditbeatHeartbeatWinlogbeatFunctionbeat

一点点历史

在集中式日志记录中,数据管道包括三个主要阶段:聚合,处理和存储。 在 ELK 堆栈中,传统上,前两个阶段是堆栈工作量 Logstash 的职责。执行这些任务需要付出一定的代价。 由于与 Logstash 的设计有关的内在问题,性能问题变得经常发生,尤其是在复杂的管道需要大量处理的情况下。将 Logstash 的部分职责外包的想法也应运而生,尤其是将数据提取任务转移到其他工具上。 正如我在本文中所描述的,这个想法首先在 Lumberjack 中体现出来,然后在 Logstash 转发器中体现出来。 最终,在随后的几个开发周期中,引入了新的改进协议,该协议成为现在所谓的 “Beats” 家族的骨干。

虽然 Beats 使载入新数据源变得非常方便,但它们的设计在性能占用方面是轻量级的。 因此,Beats 没有提供大量繁重的处理、转换和丰富功能。 这就是 Logstash 帮助你的摄取架构的地方。如果你想了解更多的关于 Logstash 对数据的处理的能力,请参阅文章 “Logstash:Data 转换,分析,提取,丰富及核心操作”。Logstash 是一种通用 ETL 工具,旨在从任意数量的源系统/通信协议输入数据。 然后通过一组过滤器处理数据,你可以在其中根据需要更改、添加、丰富或删除字段。 最后,可以将事件发送到多个目标系统。 此配置被定义为 Logstash 解析器。

如何选择 Beats 和 Logstash?

Beats 和 Logstash 旨在满足收集和摄取数据时的特定要求。 在加入新数据源时,用户在选择 Beats 还是 Logstash 时经常会感到困惑。 以下列表旨在使这一点更清楚。

何时使用 Beats?

当以下几点适用于你的用例时,应使用 Beats:

  • 当你需要从整个环境中的大量主机或系统收集数据时。 一些例子如下:

         (a) 从数百个 Web 服务器的动态组中收集 Web 日志
         (b) 从 Kubernetes 等容器编排平台上运行的大量微服务收集日志
         (c) 从云/本地位置的一组 MySQL 实例中收集指标

  • 当有支持的 Beats 模块可用时。
  • 当你在使用 Elasticsearch 上的数据之前不需要执行大量的转换/处理时。
  • 从Web 源消费时,你不需要为单个节拍实例考虑缩放/吞吐量问题。

何时使用 Logstash

当你有以下要求时,应使用 Logstash:

  • 当从集中位置(例如文件共享、AWS S3、Kafka 和 AWS Kinesis)消耗大量数据时,你需要能够扩展提取吞吐量。
  • 当你需要大量转换数据或解析复杂的模式/编解码器时,尤其是使用正则表达式或 Grok 时。
  • 当您需要能够跨多个Logstash 实例对摄取进行负载平衡时。
  • 当支持的 Beats 模块不可用时。

值得注意的是,Beats 代理在每个版本中都会不断更新和增强。 在过去的几个版本中,Logstash 和 Beats 的功能之间的差距已经大大缩小。

Beats 和 Logstash 一起使用

组织通过同时利用 Beats 和 Logstash 来获得两全其美是很常见的。 这允许从一系列来源收集数据,同时实现事件的集中处理和转换。
现在我们了解了如何将数据引入 Elastic Stack,让我们看看运行堆栈时可用的选项。

 

Beats 到底是什么呢?

Beats 是轻量级(资源高效,无依赖性,小型)和开放源代码日志发送程序的集合,这些日志发送程序充当安装在基础结构中不同服务器上的代理,用于收集日志或指标(metrics)。这些可以是日志文件(Filebeat),网络数据(Packetbeat),服务器指标(Metricbeat)或 Elastic 和社区开发的越来越多的 Beats 可以收集的任何其他类型的数据。 收集后,数据将直接发送到 Elasticsearch 或 Logstash 中进行其他处理。Beats 建立在名为 libbeat 的 Go 框架之上,该框架用于数据转发,这意味着社区一直在开发和贡献新的 Beats。

Filebeat

顾名思义,Filebeat 用于收集和传送日志文件,它也是最常用的 Beat。 Filebeat 如此高效的事实之一就是它处理背压的方式-因此,如果 Logstash 繁忙,Filebeat 会减慢其读取速率,并在减速结束后加快节奏。
Filebeat 几乎可以安装在任何操作系统上,包括作为 Docker 容器安装,还随附用于特定平台(例如 Apache,MySQL,Docker 等)的内部模块,其中包含这些平台的默认配置和 Kibana 对象。

在我之前的几篇文章中,我已经给出来好几个例子关于如何使用 Filebeat。

Packetbeat

网络数据包分析器 Packetbeat 是第一个引入的 Beat。 Packetbeat 捕获服务器之间的网络流量,因此可用于应用程序和性能监视。
Packetbeat 可以安装在受监视的服务器上,也可以安装在其专用服务器上。 Packetbeat 跟踪网络流量,解码协议并记录每笔交易的数据。 Packetbeat 支持的协议包括:DNS,HTTP,ICMP,Redis,MySQL,MongoDB,Cassandra 等。

Metricbeat

Metricbeat 是一种非常受欢迎的 Beat,它收集并报告各种系统和平台的各种系统级度量。 Metricbeat 还支持用于从特定平台收集统计信息的内部模块。你可以使用这些模块和称为指标集的 metricsets 来配置 Metricbeat 收集指标的频率以及要收集哪些特定指标。更多关于 Metricbeat 可参照链接

Heartbeat

Heartbeat是用于“uptime monitoring”的。本质上,Heartbeat是探测服务以检查它们是否可访问的功能,例如,它可以用来验证服务的正常运行时间是否符合你的 SLA。 你要做的就是为Heartbeat提供URL和正常运行时间指标的列表,以直接发送到Elasticsearch或Logstash以便在建立索引之前发送到你的堆栈。

Auditbeat

Auditbeat 可用于审核 Linux 服务器上的用户和进程活动。 与其他传统的系统审核工具(systemd,auditd)类似,Auditbeat可用于识别安全漏洞-文件更改,配置更改,恶意行为等。

Winlogbeat

Winlogbeat 仅会引起 Windows 系统管理员或工程师的兴趣,因为它是专门为收集 Windows 事件日志而设计的节拍。 它可用于分析安全事件,已安装的更新等。

Functionbeat

Functionbeat 被定义为 “serverless” 的发件人,可以将其部署为收集数据并将其发送到 ELK 堆栈的功能。 Functionbeat 专为监视云环境而设计,目前已针对 Amazon 设置量身定制,可以部署为 Amazon Lambda 函数,以从 Amazon CloudWatch,Kinesis 和 SQS 收集数据。

如何使用 Beats

现在我们来用 Metricbeat 展示如何使用 Beats。其他的可以仿照这个方法来做。

安装 Metricbeat

deb:

curl -L -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-7.3.2-amd64.deb
sudo dpkg -i metricbeat-7.3.2-amd64.deb

rpm:

curl -L -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-7.3.2-x86_64.rpm
sudo rpm -vi metricbeat-7.3.2-x86_64.rpm

mac:

curl -L -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-7.3.2-darwin-x86_64.tar.gz
tar xzvf metricbeat-7.3.2-darwin-x86_64.tar.gz

brew:

brew tap elastic/tap
brew install elastic/tap/metricbeat-full

linux:

curl -L -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-7.3.2-linux-x86_64.tar.gz
tar xzvf metricbeat-7.3.2-linux-x86_64.tar.gz

Metricbeat 配置文件

等我们安装完 Metricbeat 后,我们可以在安装目录的根目录下看到如下的所有文件:

$ ls -F
LICENSE.txt			metricbeat*
NOTICE.txt			metricbeat.reference.yml
README.md			metricbeat.yml
data/				metricbeat.yml.org
fields.yml			module/
kibana/				modules.d/
logs/

在这个字母下,我们可以看到有两个文件配置文件:

  • metricbeat.yml:这是一个默认的配置文件
  • metricbeat.reference.yml:这是一个完整的样本配置文件

在今天的练习中,我们将只使用第一个配置文件。

配置 Metricbeat 时,需要指定要运行的模块。 Metricbeat 使用模块来收集指标。 每个模块都定义了从特定服务(例如 Redis 或 MySQL)收集数据的基本逻辑。 一个模块由获取和构造数据的 metricsets 组成。比如针对 Redis 模块,在这个模块中使用了 Info Metricset 及 Keyspace Metricset。它们会共用一个和 host 相连接的通道。

要配置 Metricbeat:

1)启用要运行的模块

如果你接受默认配置而不启用其他模块,则 Metricbeat 仅收集 System 指标。

$ pwd
/Users/liuxg/elastic/metricbeat-7.3.2-darwin-x86_64/modules.d

$ ls -a
.					kibana-xpack.yml.disabled
..					kibana.yml.disabled
aerospike.yml.disabled			kubernetes.yml.disabled
apache.yml.disabled			kvm.yml.disabled
aws.yml.disabled			logstash-xpack.yml.disabled
beat-xpack.yml.disabled			logstash.yml.disabled
beat.yml.disabled			memcached.yml.disabled
ceph.yml.disabled			mongodb.yml.disabled
cockroachdb.yml.disabled		mssql.yml.disabled
consul.yml.disabled			munin.yml.disabled
coredns.yml.disabled			mysql.yml.disabled
couchbase.yml.disabled			nats.yml.disabled
couchdb.yml.disabled			nginx.yml.disabled
docker.yml.disabled			oracle.yml.disabled
dropwizard.yml.disabled			php_fpm.yml.disabled
elasticsearch-xpack.yml.disabled	postgresql.yml.disabled
elasticsearch.yml.disabled		prometheus.yml.disabled
envoyproxy.yml.disabled			rabbitmq.yml.disabled
etcd.yml.disabled			redis.yml.disabled
golang.yml.disabled			system.yml
graphite.yml.disabled			traefik.yml.disabled
haproxy.yml.disabled			uwsgi.yml.disabled
http.yml.disabled			vsphere.yml.disabled
jolokia.yml.disabled			windows.yml.disabled
kafka.yml.disabled			zookeeper.yml.disabled

在 Metricbeat 下的子目录下有一个叫做 modules.d 的。它里面显示所有默认的 metricbeat 能支持的所有的模块就如上图所示,在默认的情况下,只有 system.yml 是 enabled 的状态。其它的都是在 disabled 的状态。

我们可以通过在 metricbeat 安装目录下打入如下的命令来获得当前所有被支持的模块:

./metricbeat modules list

如果我们想打开某个模块,我们可以这么做:

./metricbeat modules enable apache mysql

这样我们就打开了 apache 及 mysql 的模块。如果我们想关闭模块的话,可以采用如下的命令:

./metricbeat modules disable apache mysql

更多关于 modules 的命令,可以参阅链接

2) 配置 output

Metricbeat 支持多种输出,但是通常你将事件直接发送到 Elasticsearch 或 Logstash 进行其他处理。如果你在自己的硬件上运行 Elasticsearch,请设置 Metricbeat 可以找到 Elasticsearch 安装的主机和端口。 例如:

output.elasticsearch
  # Array of hosts to connect to.
  hosts: ["127.0.0.1:9200"]

3)如果你打算使用 Metricbeat 随附的示例 Kibana 仪表板,请配置 Kibana 端点。 如果 Kibana 与 Elasticsearch 在同一主机上运行,则可以跳过此步骤。

setup.kibana:
  host: "127.0.0.1:5601"

4)如果 Elasticsearch 和 Kibana 受保护,请在运行设置和启动 Metricbeat 的命令之前在 metricbeat.yml 配置文件中设置证书。

output.elasticsearch:
  hosts: ["myEShost:9200"]
  username: "filebeat_internal"
  password: "YOUR_PASSWORD" 
setup.kibana:
  host: "mykibanahost:5601"
  username: "my_kibana_user"  
  password: "YOUR_PASSWORD"

5)运行测试指令:

./metricbeat test config -e

如果你看到如下类似的输出:

表明你的设置是成功的。目前我只设置了 system 模块。

6)设置 Kibana 模块

我们运行如下的命令来配置 Kibana 仪表盘:

./metricbeat setup

显示结果:

$ ./metricbeat setup
Index setup finished.
Loading dashboards (Kibana must be running and reachable)


Loaded dashboards

这个操作将在 Kibana 中为我们生产相应的 index pattern,并生产相应的示例模板 dashboard 供我们使用。

运行 Metricbeat

在上一步我们已经配置好我们的 Metricbeat 了,我们现在可以开始运行 Metricbeat 了。在 Mac 机器上,我们打入如下的命令:

 ./metricbeat -e

我们可以到我们的Kibana上去看一下数据。我选择以metricbeat为开头的index:

我们可以看见数据是在不断地增长,表明我们的 metricbeat 是在不断地收集数据。

我们点击 Discover 图标,然后选择 metricbeat 的 Index pattern,我们可以看到一件收集到的数据。

我们点击 Dashboard 图标,然后搜索 Metricbeat 的 System 显示仪表盘:

我们可以看到如下写的显示:

上面显示的是 System Overview,我们也可以点击 “Host Overview”:

通过这样简单的配置,我们就可以了解我们系统的整个使用情况。

更多阅读:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值