Observability:使用 Elastic Agent 来摄入日志及指标

如果你已经安装过最近的Stack 的话,你可能已经发现 Beats 已经不是推荐的数据摄入方式 , 取而代之的是Agent 。我们可以看一下如下的图:
上图展示的是Stack 整体的栈的结构图 。我们会发现其中最重要的一个变化是使用了而不是之前的 Beats 和  , 尽管它们仍然适用 。也就是推荐的办法是使用来摄入数据 。我们之前使用 Beats 来采集数据的架构是这样的:
所有的 Beats 的数据都可以发送至。它们都分别进行配置,但是不能在中进行集中管理和配置 。
什么是 (集成)?
集成是一组资产,定义了如何使用Stack 观察特定产品或服务:
集成具有严格、定义明确的结构,并提供许多优于其他摄取选项的优势:
使用Agent 来采集数据可以给我带来如下的好处:
我们使用一个Agent,但是它可以代替我们在之前的许多的 Beats:
以Agent 为基础的数据摄入架构如下:
在今天的文章中,我们将介绍如何使用 Fleet 来设置Agent 并摄入需要的数据 。你将了解:
我们可以通过 Fleet 来对进行集中管理和配置 。在每一个Agent 中 , 它是实现了如下的功能:
它通过 Agent的使用来配置相应的 Beats 来收集数据 。
在实际的使用中 , 我们需要把Agent 部署到一个单独的服务器中 。它可以被用来收集该服务器的指标,日志等信息 。我们甚至也可以使用Agent 来从一些服务或各种 API 中收集数据并传入到中:
Agent 是一种向主机添加日志、指标和其他类型数据的监控的单一、统一的方法 。它还可以保护主机免受安全威胁、从操作系统查询数据、从远程服务或硬件转发数据等等 。单个代理可以更轻松、更快速地在您的基础架构中部署监控 。每个代理都有一个可以更新的策略,以添加新数据源、安全保护等的集成 。
如下图所示 ,  Agent 可以监控部署它的主机 , 并且可以从无法直接部署的远程服务和硬件收集和转发数据 。
在今天的练习中 , 我将使用Stack 8.0 来进行展示 。我使用的测试环境如下:
我在 macOS 上安装Stack 8.0,而在OS 的机器上安装 Fleet及Agent 。
在Stack 8.0 中使用Agent 来摄入日志及指标
在Stack 8.0 中使用Agent 来摄入日志及指标_哔哩哔哩
安装
在进行下面的练习之前,我们必须安装好及。我们可以参考之前的文章:
我们按照上面的要求进行安装及。为了能够让 fleet 正常工作,内置的 API 必须启动 。我们必须为的配置文件 /.yml 文件配置:
xpack.security.authc.api_key.enabled: true
配置完后,我们再重新启动。针对,我们也需要做一个额外的配置 。我们需要修改 /.yml 文件 。在这个文件的最后面,添加如下的一行:
xpack.encryptedSavedObjects.encryptionKey: 'fhjskloppd678ehkdfdlliverpoolfcr'
如果你不想使用上面的这个设置,你可以使用如下的方式来获得:
./bin/kibana-encryption-keys generate
从上面的输出中,我们可以看出来,有三个输出的 key 。我们可以把这三个同时拷贝,并添加到 /.yml 文件的后面 。当然,我们也可以只拷贝其中的一个也可 。我们再重新启动。
这样我们对及的配置就完成 。针对Stack 8.0 以前的版本安装 , 请阅读我之前的文章 “:如何在最新的Stack 中使用 Fleet 摄入日志及指标” 。
除此之外,需要连接才能从下载集成包 。确保服务器可以连接到 的端口 443 上 。如果你的环境有网络流量限制 , 有一些方法可以解决此要求 。有关详细信息 , 请参阅气隙环境 。
目前,Fleet 只能被具有role 的用户所使用 。
配置 Fleet
使用中的 Fleet 将日志、指标和安全数据导入Stack 。第一次使用 Fleet 时,你可能需要对其进行设置并添加 Fleet。在做配置之前,我们首先来查看一下有没有任何的被安装:
我们打开 Fleet 页面:
由于我们还没有指定 Fleet的地址,所以我们点击 Edit hosts:
在我们的配置中,我们想把 Fleet安装到OS 的机器上,所以在上面的输入框中,我们输入OS 的地址 192.168.0.4 。端口地址 8220 是默认的地址 。点击上面的 Save and apply :
在上面,我们查看的地址也是对的 。
点击选项卡:
对于我们自管型的不是中 , 有一个默认的Fleet。我们也可以创建一个自己的。
Fleet到底是什么呢?
它是包含 Fleet集成的 agent。在自管型的集群中,第一次运行 Fleet 时会自动创建默认的 Fleet策略 。如果你要部署一个自我管理的 Fleet以使用我们托管的服务,你必须明确创建一个包含 Fleet集成的新代理策略 。
由于我们的OS 系统是 Linux 64-bit,我们选择上面的选项进行下载 。我们在机器的中打入如下的命令:
curl -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-8.0.0-linux-x86_64.tar.gz
liuxg@liuxgu:~/fleet$ curl -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-8.0.0-linux-x86_64.tar.gz% Total% Received % XferdAverage SpeedTimeTimeTimeCurrentDloadUploadTotalSpentLeftSpeed100256M100256M009775k00:00:260:00:26 --:--:-- 9257k
我们使用如下的命令来进行安装:
tar xzf elastic-agent-8.0.0-linux-x86_64.tar.gz
在上面 , 我选择 “Quick Start” 来进行部署 。在实际的生产环境中,被推荐的办法是使用 “” 选项来部署以确保 Fleet和Agent 之间的安全连接 。详细阅读请参阅文章 “:在生产环境中配置 Fleet和Agent 之间的安全” 。点击上面的token:
在上面的界面中,我们可以看到它一直显示for Fleetto... 。我们点击上面的两个文档按钮以拷贝并保存token 。我们在机器下运行上面的命令:
我们再次回到的界面:
上面显示 Fleet。它清楚地表明我们的 Fleet 已经成功地连接起来了 。我们点击上面的 :
上面显示我们的已经成功地部署 , 并且它的状态是的 。
如果你有多个 Fleet,建议你为每个 Fleet创建一个唯一的token 。你可以参考链接 --来生成token 。有关 Fleet的更多信息,请参考链接 。
在上面 , 我们已经成功地为Fleet创建了一个 Agent 。它安装了 Fleet。这个是必须的步骤,一个 Fleet可以管理许多的。有关 Fleet 的架构更多信息 , 请参阅文章 “:运用 Fleet 来轻松地导入 Nginx 日志及指标” 。
添加Agent 到 Fleet
Agent 是一个单一的统一代理,你可以将其部署到主机或容器以收集数据并将其发送到Stack 。在后台, Agent 运行你的配置所需的 Beats或。
要将日志和指标发送到Stack 。你首先要在那个机器上下载Agent,并解压缩:
curl -L -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-8.0.0-darwin-x86_64.tar.gztar xzvf elastic-agent-8.0.0-darwin-x86_64.tar.gz
curl -L -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-8.0.0-linux-x86_64.tar.gztar xzvf elastic-agent-8.0.0-linux-x86_64.tar.gz
# PowerShell 5.0+wget https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-8.0.0-windows-x86_64.zip -OutFile elastic-agent-8.0.0-windows-x86_64.zipExpand-Archive .\elastic-agent-8.0.0-windows-x86_64.zip
curl -L -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-8.0.0-amd64.debsudo dpkg -i elastic-agent-8.0.0-amd64.deb
curl -L -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-8.0.0-x86_64.rpmsudo rpm -vi elastic-agent-8.0.0-x86_64.rpm
更多关于Agent 的下载信息,请参阅官方链接Agent 。
针对我们的情况 , 我们需要手机的是OS 上的日志及指标,所以我们下载的是 Linux 的版本 。在我们之前安装 Fleet时已经解压缩 , 并运行了,所以我们并不需要做任何其它特别的 。
我们接下来添加 Agent:
在上面 , 我们选择,它目前含有一个叫做的。你也可以创建自己的。选择会让我们的练习进展更快 。我们按照 Go topage 去下载相应的 Agent 。这个和我们之前的 Fleet是一样的页面 。这里就不再累述了 。
我们点击上面的文档按钮来进行注册:
sudo ./elastic-agent install --url=http://192.168.0.4:8220 --enrollment-token=amw2a0FIOEJnUDdoZ29vRmJBVkY6TDRCZ3liNnpTSFNZdENnLXFrOExSZw==
请注意,在上面:8220是我们的 Fleet的地址,也就是说 Agent 的注册是直接发向 Fleet的 。当然如果你是其它的平台,你需要在上面的页面进行选择 。
运行上面的命令:
因为之前 , 我们在安装 Fleet的时候,已经按照好Agent 了,所以会出现上面的错误信息 。如果你还有其它的 Linux 机器,你可以通过上面的方法来注册你的Agent 。
现在,我把我的一台树莓派的OS 机器开起来,我们使用如下的方法来进行注册:
liuxg@liuxgarm:~/fleet$ curl -L -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-8.0.0-linux-arm64.tar.gz% Total% Received % XferdAverage SpeedTimeTimeTimeCurrentDloadUploadTotalSpentLeftSpeed100241M100241M005615k00:00:440:00:44 --:--:-- 5953kliuxg@liuxgarm:~/fleet$ lselastic-agent-8.0.0-linux-arm64.tar.gzliuxg@liuxgarm:~/fleet$ tar xzf elastic-agent-8.0.0-linux-arm64.tar.gz liuxg@liuxgarm:~/fleet$ cd elastic-agent-8.0.0-linux-arm64/liuxg@liuxgarm:~/fleet/elastic-agent-8.0.0-linux-arm64$ sudo ./elastic-agent install --url=http://192.168.0.4:8220 --enrollment-token=amw2a0FIOEJnUDdoZ29vRmJBVkY6TDRCZ3liNnpTSFNZdENnLXFrOExSZw==[sudo] password for liuxg: Elastic Agent will be installed at /opt/Elastic/Agent and will run as a service. Do you want to continue? [Y/n]:YError: Error: connection to fleet-server is insecure, strongly recommended to use a secure connection (override with --insecure)For help, please see our troubleshooting guide at https://www.elastic.co/guide/en/fleet/8.0/fleet-troubleshooting.htmlError: enroll command failed with exit code: 1For help, please see our troubleshooting guide at https://www.elastic.co/guide/en/fleet/8.0/fleet-troubleshooting.htmlliuxg@liuxgarm:~/fleet/elastic-agent-8.0.0-linux-arm64$ sudo ./elastic-agent install --url=http://192.168.0.4:8220 --enrollment-token=amw2a0FIOEJnUDdoZ29vRmJBVkY6TDRCZ3liNnpTSFNZdENnLXFrOExSZw== --insecureElastic Agent will be installed at /opt/Elastic/Agent and will run as a service. Do you want to continue? [Y/n]:Y{"log.level":"warn","@timestamp":"2022-02-16T16:34:20.428+0800","log.logger":"tls","log.origin":{"file.name":"tlscommon/tls_config.go","file.line":105},"message":"SSL/TLS verifications disabled.","ecs.version":"1.6.0"}{"log.level":"info","@timestamp":"2022-02-16T16:34:20.544+0800","log.origin":{"file.name":"cmd/enroll_cmd.go","file.line":456},"message":"Starting enrollment to URL: http://192.168.0.4:8220/","ecs.version":"1.6.0"}{"log.level":"info","@timestamp":"2022-02-16T16:34:21.501+0800","log.origin":{"file.name":"cmd/enroll_cmd.go","file.line":256},"message":"Successfully triggered restart on running Elastic Agent.","ecs.version":"1.6.0"}Successfully enrolled the Elastic Agent.Elastic Agent has been successfully installed.
如上所示,因为我们尝试去注册一个使用自签名证书的 Fleet ,在上面我们出现了一个错误 。我在上面的命令后面添加一个选项 --:
sudo ./elastic-agent install --url=http://192.168.0.4:8220 --enrollment-token=amw2a0FIOEJnUDdoZ29vRmJBVkY6TDRCZ3liNnpTSFNZdENnLXFrOExSZw== --insecure
那么我们这次运行是成功的 。我们回到的界面:
这个时候,我们看到了一个新增加的叫做的 agent 。在上面的两个 agent 中,Fleet是运行于机器上的 。如过我们想收集这个机器的日志及指标的话,我们需要在Fleet中去添加。
这我们的agent 就可以收集指标及日志了 。
我们点击 Data :
【Observability:使用 Elastic Agent 来摄入日志及指标】我们可以看到两个机器都有日志信息 。