Beats:Elastic Beats 介绍

458 阅读5分钟

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

 

一点点历史

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

 

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”:

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

更多阅读: