曾几何时,Beats 是我们作为 Elastic Stack 重要的数据摄入方式。我们在 Kibana 的界面中经常看到的是这样的界面:
详细描述,可以参阅之前的文章 “Beats:Beats 入门教程 (二)”。 我们可以看到在 Kibana 的界面中,有一个常见的 “Add log data” 等之类的链接,或者如下的 “Add your data”:
从上面的截图中,我们可以看出来,我们可以使用 Beats 来进行我们的日志及指标的摄入。
最近,我安装了最新的 7.16.3,打开 Kibana,我们可以看到:
上面再也没有之前的 “Add data” 之类的按钮,取而代之的是 “Add integration”。这说明在现在的 Elastic Stack 发行版中,官方推荐的方法是使用 integration 而不是以前的 Beats。随着未来 Elastic Stack 8.0 的推出,Fleet 是被推荐来摄入数据的方法,尽管 Beats 的方法还是适用的,特别是针对和 Logstash 组成 pipeline 的情况。
在今天的文章中,我们来介绍如何是使用 integration 的方法来摄入 system 日志及指标。在今天的展示中,我将使用 Elastic Stack 7.16.3,并在一个 Ubuntu 机器上安装 Elasticsearch 及 Kibana。 Ubuntu 机器的 IP 地址为 192.168.0.4。
如何在最新的 Elastic Stack 中使用 Fleet 摄入 system 日志及指标
如何在最新的 Elastic Stack 中使用 Fleet 摄入 system 日志及指标_哔哩哔哩_bilibili
安装
我们首先按照我之前的文章 “Security:如何安装 Elastic SIEM 和 EDR” 来安装一个带有 HTTPS 安全的 Elasticsearch 集群(你不必要安装 Filebeat 及 Zeek)。接下来,
或者,我们按照文章 “如何在 Linux,MacOS 及 Windows 上进行安装 Elasticsearch” 来安装 Elasticsearch。我们需要对 config/elasticsearch.yml 做如下的配置:
config/elasticsearch.yml
network.host: 0.0.0.0 discovery.type: single-node xpack.security.enabled: true xpack.security.authc.api_key.enabled: true
我们安装 “Kibana:如何在 Linux,MacOS 及 Windows上安装 Elastic 栈中的 Kibana” 来安装 Kibana。我们需要根据文章 “Elasticsearch:设置 Elastic 账户安全” 来配置集群的安全。我们需要针对 config/kibana.yml 做如下的配置:
config/kibana.yml
server.host: "0.0.0.0" elasticsearch.username: "kibana_system" elasticsearch.password: "password" xpack.encryptedSavedObjects.encryptionKey: 'fhjskloppd678ehkdfdlliverpoolfcr'
这里的 password 是我们在之前的安全设置中为 kibana_system 设置的密码,而 xpack.encryptedSavedObjects.encryptionKey 的值是一个32位的随机字符串。我们可以通过如下的方式来获得:
./bin/kibana-encryption-keys generate
我们来参照我之前的文章 “Observability:运用 Fleet 来轻松地导入 Nginx 日志及指标” 来进行操作。
动手实践
我打开 Kibana:
从上面,我们可以看出来没有任何的 integrations 被安装。 由于还没有安装 Fleet Server。
我们先来创建一个 policy:
依赖于你的网络,上面的屏幕需要等待一些时间。
我们想把 Fleet Server 配置到和 Elasticsearch 同一个机器上:
我们点击上面的链接去下载 Elastic Agent:
我们可以按照如下的方式来进行下载:
curl -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-7.16.3-linux-x86_64.tar.gz
我使用如下的命令来进行安装:
tar xzf elastic-agent-7.16.3-linux-x86_64.tar.gz
拷贝上面的 token,并同时拷贝上面的命令。我们在 Elastic Agent 的安装目录中运行:
sudo ./elastic-agent install \ --fleet-server-es=http://localhost:9200 \ --fleet-server-service-token=AAEAAWVsYXN0aWMvZmxlZXQtc2VydmVyL3Rva2VuLTE2NDMwOTU5NTcwMDI6dndfMkUzUTVUMUtwS1FOSzA0Nld0Zw \ --fleet-server-policy=499b5aa7-d214-5b5d-838b-3cd76469844e \ --fleet-server-insecure-http
上面表明我们的安装是成功的。
上面的状态为 Updating。我们需要等一段时间:
上面表明我们的 Fleet Server 的安装是成功的。我们选择 Agent policies:
我们可以看有一个叫做 system-1 的 integration:
从这里我们可以针对不同的平台进行配置。针对我们的 Linux 情况,我不做任何的修改。
我们可以把目前的这个唯一的 agent 赋予给 Default policy:
这是因为 system-1 这个 integration 是在 Default policy 里的:
这个时候,我们可以看到不同的 data streams:
我们可以看不同的数据,只要我们选择好时间范围。
我们可以选择一下指标来进行查看:
我们再次回到之前的画面:
好了,今天我的演示就到这里。从上面的步骤中我们可以看出来,在最新的版本中,收集日志及指标和我们以前的是完全不一样的。这里面可能还有些概念的问题。希望大家多练习!