Beats:安装及配置 Metricbeat (一)- 8.x

在我之前的文章:

我详细描述了如何在 Elastic Stack 7.x 安装及配置 Beats。在那里的安装,它通常不带有安全及 Elasticsearch 在默认的情况下,不含有 HTTPS 访问。在最新的 Elastic Stack 8.x 中,Elasticsearch 集群在默认的情况下是带有安全访问的。这样针对 Metricbeat 访问 Elasticsearch 它和之前的情形是不同的。我在之前文章 "Elastic Stack 8.0 安装 - 保护你的 Elastic Stack 现在比以往任何时候都简单" 有描述 Beats 如何连接到 Elasticsearch。在今天的文章里,我们来详细地 Beats 描述如何安全地连接到 Elasticsearch。

在今天的展示中,我将使用最新的 Elastic Stack 8.9.0 来进行展示。我将使用如下的架构:

安装

Elasticsearch 及 Kibana

如果你还没有安装好自己的 Elasticsearch 及 Kibana,请参考我之前的文章:

在安装的时候,请选择使用 Elastic Stack 8.x 的安装指南来进行安装。在安装的时候,我们需要记录下它的 elastic 超级用户的密码,fingerprint 信息,以备后面的配置所使用:

复制代码
✅ Elasticsearch security features have been automatically configured!
✅ Authentication is enabled and cluster connections are encrypted.

ℹ️  Password for the elastic user (reset with `bin/elasticsearch-reset-password -u elastic`):
  p1k6cT4a4bF+pFYf37Xx

ℹ️  HTTP CA certificate SHA-256 fingerprint:
  633bf7f6e4bf264e6a05d488af3c686b858fa63592dc83999a0d77f7e9fe5940

ℹ️  Configure Kibana to use this cluster:
• Run Kibana and click the configuration link in the terminal when Kibana starts.
• Copy the following enrollment token and paste it into Kibana in your browser (valid for the next 30 minutes):
  eyJ2ZXIiOiI4LjkuMCIsImFkciI6WyIxOTIuMTY4LjAuMzo5MjAwIl0sImZnciI6IjYzM2JmN2Y2ZTRiZjI2NGU2YTA1ZDQ4OGFmM2M2ODZiODU4ZmE2MzU5MmRjODM5OTlhMGQ3N2Y3ZTlmZTU5NDAiLCJrZXkiOiJ3WEE3MDRrQkxxWTFWWGY0QWRHbDpCa0VZVXZmaFFidWNPOFUxdXJwXzZnIn0=

ℹ️  Configure other nodes to join this cluster:
• On this node:
  ⁃ Create an enrollment token with `bin/elasticsearch-create-enrollment-token -s node`.
  ⁃ Uncomment the transport.host setting at the end of config/elasticsearch.yml.
  ⁃ Restart Elasticsearch.
• On other nodes:
  ⁃ Start Elasticsearch with `bin/elasticsearch --enrollment-token <token>`, using the enrollment token that you generated.

为了能够使得我们的 Kibana 能被其他的电脑所访问,我们必须针对 kibana.yml 文件进行一项配置:

复制代码
server.host: "0.0.0.0"

修改完毕后,我们必须重新启动 Kibana。

Metricbeat

有关 Metricbeat 的安装,我们可以参考官方文档 Metricbeat quick start: installation and configuration | Metricbeat Reference [8.9] | Elastic 来进行安装。针对大多数的应用场景,我们可以使用仓库进行安装。我们可以参考链接 Repositories for APT and YUM | Metricbeat Reference [8.9] | Elastic 来进行安装。首先,我们创建如下的一个文档:

install.sh

复制代码
#!/bin/bash
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -;
sudo apt-get -y install apt-transport-https;
echo "deb https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-8.x.list;
apt-get update;
apt-get install -y metricbeat;

chmod +x install.sh

我们打入上面的命令来把上面的脚步变为可执行文件,并打入如下的命令:

复制代码
sudo ./install.sh

这样我们就完成了我们的 Metricbeat 的安装。

配置 Metricbeat

在完成 Metricbeat 的配置后,我们进入到 Metricbeat 的配置目录中,并对它的配置文件 metricbeat.yml 进行配置:

/etc/metricbeat/metricbeat.yml

复制代码
parallels@ubuntu2004:/etc/metricbeat$ pwd
/etc/metricbeat
parallels@ubuntu2004:/etc/metricbeat$ ls
fields.yml  http_ca.crt  metricbeat.reference.yml  metricbeat.yml  modules.d

我们需要针对 metricbeat.yml 文件做如下的修改:

/etc/metricbeat/metricbeat.yml

把上面的标志设置为 true,那么每次修改 metricbeat.yml 后,会自动装载 metricbeat.yml 而不用重新启动 metricbeat。

我们需要把 Elasticsearch 的证书拷贝到当前的 Metricbeat 配置目录下。我们可以在 macOS 机器的 Elasticsearch 的安装目录中找到这个证书文件 http_ca.crt 文件:

复制代码
$ pwd
/Users/liuxg/elastic/elasticsearch-8.9.0/config/certs
$ ls
http.p12      http_ca.crt   transport.p12

我们把上面的证书拷贝到 Metricbeat 的安装目录中:

复制代码
root@ubuntu2004:/etc/metricbeat# pwd
/etc/metricbeat
root@ubuntu2004:/etc/metricbeat# ls
fields.yml  http_ca.crt  metricbeat.reference.yml  metricbeat.yml  modules.d

我们接下来继续配置 metricbeat.ym 文件:

我们需要手动修改上面的部分。把 elastic 超级用户的密码填入,并配置证书。

为了验证我们的配置是否有语法错误,我们可以使用如下的命令来进行检测:

复制代码
metricbeat test config

root@ubuntu2004:~# metricbeat test config
Config OK

我们接下来测试 output。这个部分是为了测试能够正确地连接到 Elasticsearch。我们使用如下的命令:

复制代码
metricbeat test output

root@ubuntu2004:~# metricbeat test output
elasticsearch: https://192.168.0.3:9200...
  parse url... OK
  connection...
    parse host... OK
    dns lookup... OK
    addresses: 192.168.0.3
    dial up... OK
  TLS...
    security: server's certificate chain verification is enabled
    handshake... OK
    TLS version: TLSv1.3
    dial up... OK
  talk to server... OK
  version: 8.9.0

很显然,我们的测试是成功的。它能够正确地连接到 Elasticsearch。这样我们的配置是完全成功的。

在上面,我们发现在 metricbeat 里使用硬编码把用户名及密码写入到文件中,这个是一个不好的习惯,因为有人可以查看这个文件就会发现你使用的密码等信息。我们可以使用 keystore 来保护这些信息。

复制代码
root@ubuntu2004:/etc/metricbeat# metricbeat keystore create
Created metricbeat keystore
root@ubuntu2004:/etc/metricbeat# metricbeat keystore add ES_USER
Enter value for ES_USER: 
Successfully updated the keystore
root@ubuntu2004:/etc/metricbeat# metricbeat keystore add ES_PASSWORD
Enter value for ES_PASSWORD: 
Successfully updated the keystore
root@ubuntu2004:/etc/metricbeat# metricbeat keystore list
ES_PASSWORD
ES_USER

有了这些配置过后,我们可以重新来修改 metricbeat.yml 文件:

修改完毕后,我们使用如下的命令重新来验证输出:

复制代码
root@ubuntu2004:/etc/metricbeat# metricbeat test output
elasticsearch: https://192.168.0.3:9200...
  parse url... OK
  connection...
    parse host... OK
    dns lookup... OK
    addresses: 192.168.0.3
    dial up... OK
  TLS...
    security: server's certificate chain verification is enabled
    handshake... OK
    TLS version: TLSv1.3
    dial up... OK
  talk to server... OK
  version: 8.9.0

很显然我们的输出是成功的。这样我们的用户名及密码就可以不暴露了,即便配置文件被别人所看到。

启动模块

在默认的情况下,system 模块是自动启动的。我们可以通过如下的命令来进行查看:

复制代码
metricbeat modules list

root@ubuntu2004:~# metricbeat modules list
Enabled:
system

Disabled:
activemq
aerospike
airflow
apache
aws
awsfargate
azure
beat
beat-xpack
ceph
ceph-mgr
cloudfoundry
cockroachdb
...

从上面的显示结果中,我们可以看出来 system 模块是被启动的。我们也可以通过查看当前 metricbeat 下的 modules.d 目录来看出来:

从上面的输出中,我们可以看出来,只有 system.yml 文件的后缀不含有 disabled。它表明这个模块是被启动的。事实上,我们可以在这个目录下直接把某个模块的扩展名 disabled 去掉,就可以启动该模块。我们也可以通过如下的命令来禁止模块,比如:

复制代码
metricbeat modules disable system

上面的命令禁止 system 模块。我们可以通过如下的命令来进行查看:

复制代码
metricbeat modules list

我们可以使用如下的命令来重新启动 system 模块:

复制代码
metricbeat modules enable system

root@ubuntu2004:/etc/metricbeat# metricbeat modules enable system
Enabled system

启动 Metricbeat

在上面,我们已经成功地配置了 Metricbeat。我们接下来运行如下的 setup 命令来加载 Dashboards 及创建相应的 pipeline,index template 等:

复制代码
metricbeat setup

上述命令将运行一会儿时间。我们可以看到:

复制代码
root@ubuntu2004:~# metricbeat setup
Overwriting ILM policy is disabled. Set `setup.ilm.overwrite: true` for enabling.

Index setup finished.
Loading dashboards (Kibana must be running and reachable)
Loaded dashboards

针对所有的 Metricbeat 模块来说,我们只需要运行上面的命令一次就够了,即便当前的模块没有被启动。等上面的命令完成后,我们可以到 Kibana 中进行查看:

我们接下来运行如下的命令来采集数据:

复制代码
service metricbeat start

从上面,我们可以看出来运行状态正常。我们到 Kibana 中去查看数据:

我们可以在 index management 里查看到:

显然这个数据是以 data stream 的形式采集进来的。

好了,今天的文章就先介绍到这里。在后面的文章里,我将继续介绍如何创建一个具有较少权限的用户来配置 Metricbeat。目前的 elastic 用户被用来配置,在很少的情况会这么做。另外,我还将探讨使用其他形式的证书来配置 output。

相关推荐
fo安方3 分钟前
运维的利器–监控–zabbix–第三步:配置zabbix–中间件–Tomcat–步骤+验证
运维·中间件·zabbix
超喜欢下雨天42 分钟前
服务器安装 ros2时遇到底层库依赖冲突的问题
linux·运维·服务器·ros2
搬码临时工1 小时前
小企业如何搭建本地私有云服务器,并设置内部网络地址提供互联网访问
运维·服务器
Codebee1 小时前
OneCode图表配置速查手册
大数据·前端·数据可视化
HGW6892 小时前
基于 Elasticsearch 实现地图点聚合
java·elasticsearch·高德地图
18你磊哥2 小时前
Windows 本地安装部署 Apache Druid
运维·debian
Jamie201901062 小时前
高档宠物食品对宠物的健康益处有哪些?
大数据·人工智能
陈敬雷-充电了么-CEO兼CTO2 小时前
推荐算法系统系列>推荐数据仓库集市的ETL数据处理
大数据·数据库·数据仓库·数据挖掘·数据分析·etl·推荐算法
IT成长日记2 小时前
【Docker基础】Docker数据卷管理:docker volume inspect及其参数详解
运维·docker·容器·volume·inspect
ldj20202 小时前
Jenkins 构建过程常见错误
运维·jenkins