教程 1:安装自管理的 Elastic Stack
编辑教程 1:安装自管理的 Elastic Stack编辑
本教程演示如何在自管理环境中安装和配置 Elastic Stack。按照这些步骤,您将设置一个包含三个节点的 Elasticsearch 集群,其中 Kibana、Fleet Server 和 Elastic Agent 分别位于不同的主机上。Elastic Agent 将配置为使用系统集成,使其能够收集本地系统日志和指标并将它们发送到 Elasticsearch 集群。最后,您将学习如何在 Kibana 中查看系统数据。
完成这些步骤大约需要一到两个小时。
如果您使用这些步骤来配置一个生产集群,该集群使用受信任的 CA 签名的证书进行安全通信,那么在完成步骤 6 安装 Kibana 后,我们建议您直接跳到 教程 2:保护自管理的 Elastic Stack。
第二个教程包括在整个 Elastic Stack 中配置安全性的步骤,然后在启用 SSL 证书的情况下设置 Fleet Server 和 Elastic Agent。
先决条件和假设编辑
要开始,您需要以下内容
- 一组虚拟或物理主机,用于安装每个堆栈组件。
- 在每台主机上,一个具有
sudo
权限的超级用户帐户。
本指南中的示例使用 RPM 包在运行 Red Hat Enterprise Linux 8 的主机上安装 Elastic Stack 组件。其他安装方法和操作系统的步骤类似,可以在每个部分链接的文档中找到。您将安装的软件包是
对于 Elastic Agent 和 Fleet Server(两者都使用 elastic-agent-8.14.2-linux-x86_64.tar.gz 包),我们建议使用 TAR/ZIP 包而不是 RPM/DEB 系统包,因为只有前者支持使用 Fleet 升级。
本指南不涵盖防火墙和代理服务器等特殊注意事项。
有关安装正常工作所需的端口和协议,请参阅以下概述部分。
Elastic Stack 概述编辑
在开始之前,请花点时间熟悉 Elastic Stack 组件。
要了解有关 Elastic Stack 以及这些组件之间关系的更多信息,请参阅 Elastic Stack 概述。
步骤 1:设置第一个 Elasticsearch 节点编辑
首先,使用 RPM 在第一台主机上安装 Elasticsearch。此初始 Elasticsearch 实例将用作主节点。
- 登录到您要设置第一个 Elasticsearch 节点的主机。
-
为安装包创建一个工作目录
mkdir elastic-install-files
-
更改到新目录
cd elastic-install-files
-
从 Elastic Artifact Registry 下载 Elasticsearch RPM 和校验和文件。您可以在 手动下载和安装 RPM 部分找到有关这些步骤的详细信息。
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.14.2-x86_64.rpm wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.14.2-x86_64.rpm.sha512
-
通过将下载的 RPM 的 SHA 与发布的校验和进行比较,确认下载的包的有效性
shasum -a 512 -c elasticsearch-8.14.2-x86_64.rpm.sha512
该命令应返回:
elasticsearch-{version}-x86_64.rpm: OK
。 -
运行 Elasticsearch 安装命令
sudo rpm --install elasticsearch-8.14.2-x86_64.rpm
Elasticsearch 安装过程默认情况下会启用某些安全功能,包括以下功能
- 启用身份验证和授权,包括内置的
elastic
超级用户帐户。 - 为传输层和 HTTP 层生成 TLS 证书和密钥,并使用这些密钥和证书启用和配置 TLS。
- 启用身份验证和授权,包括内置的
- 将安装命令的终端输出复制到本地文件。特别是,您需要内置的
elastic
超级用户帐户的密码。输出还包含启用 Elasticsearch 作为服务运行的命令,您将在下一步中使用这些命令。 -
运行以下两个命令以使用
systemd
启用 Elasticsearch 作为服务运行。这使 Elasticsearch 能够在主机系统重新启动时自动启动。您可以在 使用systemd
运行 Elasticsearch 中找到有关此步骤和后续步骤的详细信息。sudo systemctl daemon-reload sudo systemctl enable elasticsearch.service
步骤 2:配置第一个 Elasticsearch 节点以实现连接编辑
在继续配置其他 Elasticsearch 节点之前,您需要更新此第一个节点上的 Elasticsearch 配置,以便其他主机能够连接到它。这是通过更新 elasticsearch.yml
文件中的设置来完成的。有关所有可用设置的详细信息,请参阅 配置 Elasticsearch。
- 在终端中,运行
ifconfig
命令并复制主机 inet IP 地址的值(例如,10.128.0.84
)。您稍后将需要此值。 -
在文本编辑器(例如
vim
)中打开 Elasticsearch 配置文件sudo vim /etc/elasticsearch/elasticsearch.yml
-
在多节点 Elasticsearch 集群中,所有 Elasticsearch 实例都需要具有相同的名称。
在配置文件中,取消注释行
#cluster.name: my-application
并为 Elasticsearch 实例指定您喜欢的任何名称cluster.name: elasticsearch-demo
-
默认情况下,Elasticsearch 在
localhost
上运行。为了使其他节点上的 Elasticsearch 实例能够加入集群,您需要将 Elasticsearch 设置为在可路由的外部 IP 地址上运行。取消注释行
#network.host: 192.168.0.1
并将默认地址替换为您从ifconfig
命令输出中复制的值。例如network.host: 10.128.0.84
-
需要启用 Elasticsearch 以监听来自其他外部主机的连接。
取消注释行
#transport.host: 0.0.0.0
。0.0.0.0
设置使 Elasticsearch 能够监听所有可用网络接口上的连接。请注意,在生产环境中,您可能希望通过将此值设置为与network.host
设置的值匹配来限制此值。transport.host: 0.0.0.0
您可以在 Elasticsearch 网络 文档中找到有关
network.host
和transport.host
设置的详细信息。 - 保存更改并关闭编辑器。
步骤 3:启动 Elasticsearch编辑
-
现在,是时候启动 Elasticsearch 服务了
sudo systemctl start elasticsearch.service
如果需要,您可以通过运行
sudo systemctl stop elasticsearch.service
来停止服务。 -
确保 Elasticsearch 正常运行。
sudo curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic:$ELASTIC_PASSWORD https://127.0.0.1:9200
在命令中,将
$ELASTIC_PASSWORD
替换为您从安装命令输出中复制的elastic
超级用户密码。如果一切顺利,该命令将返回类似于以下内容的响应
{ "name" : "Cp9oae6", "cluster_name" : "elasticsearch", "cluster_uuid" : "AT69_C_DTp-1qgIJlatQqA", "version" : { "number" : "{version_qualified}", "build_type" : "{build_type}", "build_hash" : "f27399d", "build_flavor" : "default", "build_date" : "2016-03-30T09:51:41.449Z", "build_snapshot" : false, "lucene_version" : "{lucene_version}", "minimum_wire_compatibility_version" : "1.2.3", "minimum_index_compatibility_version" : "1.2.3" }, "tagline" : "You Know, for Search" }
-
最后,检查 Elasticsearch 的状态
sudo systemctl status elasticsearch
与之前的
curl
命令一样,输出应确认 Elasticsearch 已成功启动。键入q
以退出status
命令结果。
步骤 4:设置第二个 Elasticsearch 节点编辑
要设置第二个 Elasticsearch 节点,初始步骤与您为 步骤 1:设置第一个 Elasticsearch 节点 所执行的步骤类似。
- 登录到您要设置第二个 Elasticsearch 实例的主机。
-
为安装包创建一个工作目录
mkdir elastic-install-files
-
更改到新目录
cd elastic-install-files
-
下载 Elasticsearch RPM 和校验和文件
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.14.2-x86_64.rpm wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.14.2-x86_64.rpm.sha512
-
检查下载的 RPM 的 SHA
shasum -a 512 -c elasticsearch-8.14.2-x86_64.rpm.sha512
-
运行 Elasticsearch 安装命令
sudo rpm --install elasticsearch-8.14.2-x86_64.rpm
与第一个 Elasticsearch 节点的设置不同,在这种情况下,您不需要复制安装命令的输出,因为这些设置将在后面的步骤中更新。
-
启用 Elasticsearch 作为服务运行
sudo systemctl daemon-reload sudo systemctl enable elasticsearch.service
现在不要启动 Elasticsearch 服务!在重新启动之前,还需要执行一些配置步骤。
-
要启用此第二个 Elasticsearch 节点连接到第一个节点,您需要配置一个注册令牌。
请确保在启动 Elasticsearch 服务之前运行所有这些配置步骤。
您可以在 重新配置节点以加入现有集群 以及 在现有集群中注册节点 中找到有关这些步骤的更多详细信息。
返回到第一个 Elasticsearch 节点上的终端 shell 并生成一个节点注册令牌
sudo /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s node
-
从命令输出中复制生成的注册令牌。
请注意以下有关注册令牌的提示
- 注册令牌的有效期为 30 分钟。如果
elasticsearch-reconfigure-node
命令返回Invalid enrollment token
错误,请尝试生成一个新令牌。 - 请确保不要将 Elasticsearch 注册令牌(用于将 Elasticsearch 节点注册到现有集群中)与 Kibana 注册令牌(用于将 Kibana 实例注册到 Elasticsearch,如下一节所述)混淆。这两个令牌不可互换。
- 注册令牌的有效期为 30 分钟。如果
-
在第二个 Elasticsearch 节点的终端 shell 中,将注册令牌作为参数传递给
elasticsearch-reconfigure-node
工具sudo /usr/share/elasticsearch/bin/elasticsearch-reconfigure-node --enrollment-token <enrollment-token>
在命令中,将
<enrollment-token
替换为复制的elastic
生成的令牌。 - 在
Do you want to continue
提示符中输入yes
(y
)。新的 Elasticsearch 节点将被重新配置。 - 在终端中,运行
ifconfig
并复制主机 inet IP 地址的值。您稍后将需要此值。 -
在文本编辑器中打开第二个 Elasticsearch 实例配置文件
sudo vim /etc/elasticsearch/elasticsearch.yml
请注意,由于运行了
elasticsearch-reconfigure-node
工具,某些设置已更新。例如transport.host: 0.0.0.0
设置已取消注释。discovery_seed.hosts
设置具有您在第一个 Elasticsearch 节点上为network_host
添加的值。随着您将每个新的 Elasticsearch 节点添加到集群中,discovery_seed.hosts
设置将包含一个数组,其中包含连接到之前添加到集群中的每个 Elasticsearch 节点的 IP 地址和端口号。
-
在配置文件中,取消注释行
#cluster.name: my-application
并将其设置为与您为第一个 Elasticsearch 节点指定的名称匹配cluster.name: elasticsearch-demo
-
与第一个 Elasticsearch 节点一样,您需要将 Elasticsearch 设置为在可路由的外部 IP 地址上运行。取消注释行
#network.host: 92.168.0.1
并将默认地址替换为您复制的值。例如network.host: 10.128.0.132
- 保存更改并关闭编辑器。
-
在第二个节点上启动 Elasticsearch
sudo systemctl start elasticsearch.service
-
可选,要查看第二个 Elasticsearch 节点启动并连接到第一个 Elasticsearch 节点的进度,请在第二个节点中打开一个新的终端并
tail
Elasticsearch 日志文件sudo tail -f /var/log/elasticsearch/elasticsearch-demo.log
请注意日志文件中的一些有用的诊断信息,例如
-
已启用安全性
-
已启用分析
-
使用发现类型 [多节点]
-
已初始化
-
正在启动...
大约一分钟后,日志应显示类似以下的消息
[<hostname2>] master node changed {previous [], current [<hostname1>...]}
这里,
hostname1
是您的第一个 Elasticsearch 实例节点,hostname2
是您的第二个 Elasticsearch 实例节点。此消息表明第二个 Elasticsearch 节点已成功联系初始 Elasticsearch 节点并加入集群。
-
-
作为最终检查,在新节点上运行以下
curl
请求以确认 Elasticsearch 仍在正常运行并在新节点的localhost
IP 地址处可见。请注意,您需要将$ELASTIC_PASSWORD
替换为在第一个 Elasticsearch 节点上使用的相同elastic
超级用户密码。sudo curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic:$ELASTIC_PASSWORD https://127.0.0.1:9200
{ "name" : "Cp9oae6", "cluster_name" : "elasticsearch", "cluster_uuid" : "AT69_C_DTp-1qgIJlatQqA", "version" : { "number" : "{version_qualified}", "build_type" : "{build_type}", "build_hash" : "f27399d", "build_flavor" : "default", "build_date" : "2016-03-30T09:51:41.449Z", "build_snapshot" : false, "lucene_version" : "{lucene_version}", "minimum_wire_compatibility_version" : "1.2.3", "minimum_index_compatibility_version" : "1.2.3" }, "tagline" : "You Know, for Search" }
步骤 5:设置其他 Elasticsearch 节点edit
要设置下一个 Elasticsearch 节点,请按照您之前在 步骤 4:设置第二个 Elasticsearch 节点 中执行的相同步骤操作。对于要添加到集群中的每个其他 Elasticsearch 节点,该过程都相同。作为推荐的最佳实践,为添加的每个新节点创建一个新的注册令牌。
步骤 6:安装 Kibanaedit
与 Elasticsearch 一样,您可以使用 RPM 在另一台主机上安装 Kibana。您可以在 使用 RPM 安装 Kibana 部分找到有关以下所有步骤的详细信息。
-
登录到您要安装 Kibana 的主机,并为安装包创建一个工作目录
mkdir kibana-install-files
-
更改到新目录
cd kibana-install-files
-
从 Elastic 网站下载 Kibana RPM 和校验和文件。
wget https://artifacts.elastic.co/downloads/kibana/kibana-8.14.2-x86_64.rpm wget https://artifacts.elastic.co/downloads/kibana/kibana-8.14.2-x86_64.rpm.sha512
-
通过将下载的 RPM 的 SHA 与发布的校验和进行比较,确认下载的包的有效性
shasum -a 512 -c kibana-8.14.2-x86_64.rpm.sha512
该命令应返回:
kibana-{version}-x86_64.rpm: OK
。 -
运行 Kibana 安装命令
sudo rpm --install kibana-8.14.2-x86_64.rpm
-
与您添加的每个其他 Elasticsearch 节点一样,要使此 Kibana 实例能够连接到第一个 Elasticsearch 节点,您需要配置一个注册令牌。
返回到第一个 Elasticsearch 节点的终端 shell 中。
-
使用
-s kibana
选项运行elasticsearch-create-enrollment-token
命令以生成 Kibana 注册令牌sudo /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana
- 从命令输出中复制生成的注册令牌。
-
回到 Kibana 主机,运行以下两个命令以使 Kibana 能够使用
systemd
作为服务运行,从而使 Kibana 能够在主机系统重新启动时自动启动。sudo systemctl daemon-reload sudo systemctl enable kibana.service
- 在启动 Kibana 服务之前,需要进行一项配置更改,以将 Kibana 设置为在 Elasticsearch 主机 IP 地址上运行。这可以通过更新
kibana.yml
文件中的设置来完成。有关所有可用设置的详细信息,请参阅 配置 Kibana。 - 在终端中,运行
ifconfig
命令并复制主机 inet IP 地址的值。 -
打开 Kibana 配置文件进行编辑
sudo vim /etc/kibana/kibana.yml
-
取消注释行
#server.host: localhost
并将默认地址替换为您从ifconfig
命令复制的 inet 值。例如server.host: 10.128.0.28
- 保存更改并关闭编辑器。
-
启动 Kibana 服务
sudo systemctl start kibana.service
如果需要,您可以通过运行
sudo systemctl stop kibana.service
来停止服务。 -
运行
status
命令以获取有关 Kibana 服务的详细信息。sudo systemctl status kibana
-
在
status
命令输出中,将显示一个 URL,其中包含- 访问 Kibana 的主机地址
-
六位验证代码
例如
Kibana has not been configured. Go to http://10.128.0.28:5601/?code=<code> to get started.
记下验证代码。
-
在 Web 浏览器中打开 Kibana 主机机器的外部 IP 地址,例如:
http://<kibana-host-address>:5601
。Kibana 可能需要一两分钟才能启动,因此如果立即没有看到提示,请刷新页面。
- Kibana 启动后,系统会提示您提供注册令牌。粘贴您之前生成的 Kibana 注册令牌。
- 单击 配置 Elastic。
- 如果系统提示您提供验证代码,请复制并粘贴
status
命令返回的六位代码。然后,等待设置完成。 - 当您看到 欢迎使用 Elastic 页面时,请提供
elastic
作为用户名,并提供您在步骤 1 中从设置第一个 Elasticsearch 节点时的install
命令输出中复制的密码。 - 单击 登录。
Kibana 现在已完全设置并与您的 Elasticsearch 集群通信!
重要提示:如果您打算配置 SSL 证书,请在此处停止。
为简单起见,在本教程中,我们正在设置所有 Elastic Stack 组件,而无需配置安全证书。您可以继续配置 Fleet、Elastic Agent,然后确认您的系统数据是否出现在 Kibana 中。
但是,在生产环境中,在继续安装 Fleet Server 和 Elastic Agent 之前,建议您更新安全设置以使用受信任的 CA 签署的证书,如 教程 2:保护自管理的 Elastic Stack 中所述。
配置新的安全证书后,任何 Elastic Agent 都需要重新安装。如果您当前正在设置生产环境,我们建议您直接跳到教程 2,其中包括使用证书保护 Elastic Stack 的步骤,然后使用这些证书设置 Fleet 和 Elastic Agent。
步骤 7:安装 Fleet Serveredit
现在 Kibana 已启动并运行,您可以安装 Fleet Server,它将管理您将在后续步骤中设置的 Elastic Agent。如果您需要有关这些步骤的更多详细信息,请参阅 Fleet 和 Elastic Agent 指南中的 在本地部署和自管理。
- 登录到您要设置 Fleet Server 的主机。
-
为安装包创建一个工作目录
mkdir fleet-install-files
-
更改到新目录
cd fleet-install-files
- 在终端中,运行
ifconfig
并复制主机 inet IP 地址的值(例如,10.128.0.84
)。您稍后将需要此值。 - 回到您的 Web 浏览器,打开 Kibana 菜单并转到 管理 → Fleet。Fleet 将打开,并显示一条消息,提示您需要添加 Fleet Server。
- 单击 添加 Fleet Server。添加 Fleet Server 侧边栏将打开。
- 在侧边栏中,选择 快速入门 选项卡。
- 为您的 Fleet Server 主机指定一个名称,例如
Fleet Server
。 -
指定 Elastic Agent 将访问 Fleet Server 的主机 URL,例如:
http://10.128.0.203:8220
。这是您从ifconfig
输出中复制的 inet 值。请务必包含端口号。端口
8220
是 Fleet Server 在本地环境中使用的默认端口。有关端口分配列表,请参阅本地 Fleet Server 安装文档中的 默认端口分配。 - 单击 生成 Fleet Server 策略。将创建一个包含 Fleet Server 实例的所有配置设置的策略。
-
在 将 Fleet Server 安装到集中式主机步骤中,在本示例中,我们选择 Linux Tar 选项卡,但您也可以选择与您设置 Fleet Server 的主机操作系统相对应的选项卡。
请注意,TAR/ZIP 包比 RPM/DEB 系统包更推荐,因为只有前者支持使用 Fleet 升级 Fleet Server。
-
复制生成的命令,然后在 Fleet Server 主机的终端中逐个运行它们。
这些命令将分别
- 从 Elastic Artifact Registry 下载 Fleet Server 包。
- 解压缩包存档。
- 更改到包含安装二进制文件的目录。
-
安装 Fleet Server。
如果您想了解安装命令选项,请参阅 Elastic Agent 命令参考中的
elastic-agent install
。
- 在提示符下,输入
Y
以安装 Elastic Agent 并将其作为服务运行。等待安装完成。 - 在 Kibana 添加 Fleet Server 侧边栏中,等待确认 Fleet Server 已连接。
- 目前,请忽略 继续注册 Elastic Agent 选项并关闭侧边栏。
Fleet Server 现在已完全设置!
步骤 8:安装 Elastic Agent编辑
接下来,您将在另一台主机上安装 Elastic Agent,并使用系统集成来监控系统日志和指标。
- 登录到您要设置 Elastic Agent 的主机。
-
为安装包创建一个工作目录
mkdir agent-install-files
-
更改到新目录
cd agent-install-files
- 打开 Kibana 并转到 管理 → Fleet。
- 在 代理 选项卡上,您应该看到新的 Fleet Server 策略正在运行,状态良好。
- 打开 设置 选项卡。
- 重新打开 代理 选项卡并选择 添加代理。 添加代理 侧边栏将打开。
- 在侧边栏中,选择一个策略名称,例如
Demo Agent Policy
。 - 保持 收集系统日志和指标 启用。这将向 Elastic Agent 策略添加 系统集成。
- 单击 创建策略。
- 对于 注册到 Fleet?步骤,请保持 注册到 Fleet 选择。
-
在 在您的主机上安装 Elastic Agent 步骤中,在本示例中,我们选择 Linux Tar 选项卡,但您也可以选择与您设置 Fleet Server 的主机操作系统相对应的选项卡。
与 Fleet Server 一样,请注意,TAR/ZIP 包比 RPM/DEB 系统包更推荐,因为只有前者支持使用 Fleet 升级 Elastic Agent。
- 复制生成的命令。
-
在
sudo ./elastic-agent install
命令中,进行两个更改- 对于
--url
参数,请检查端口号是否设置为8220
(用于本地 Fleet Server)。 -
在末尾追加一个
--insecure
标志。如果您想使用 SSL 证书设置安全通信,请参阅 教程 2:保护自管理的 Elastic Stack。
结果应如下所示
sudo ./elastic-agent install --url=https://10.128.0.203:8220 --enrollment-token=VWCobFhKd0JuUnppVYQxX0VKV5E6UmU3BGk0ck9RM2HzbWEmcS4Bc1YUUM==
- 对于
-
在 Elastic Agent 主机的终端中逐个运行这些命令。这些命令将分别
- 从 Elastic Artifact Registry 下载 Elastic Agent 包。
- 解压缩包存档。
- 更改到包含安装二进制文件的目录。
- 安装 Elastic Agent。
-
在提示符下,输入
Y
以安装 Elastic Agent 并将其作为服务运行。等待安装完成。如果一切顺利,安装将成功完成
Elastic Agent has been successfully installed.
- 在 Kibana 添加代理 侧边栏中,等待确认 Elastic Agent 已连接。
- 关闭侧边栏。
您的新 Elastic Agent 现在已安装并注册到 Fleet Server。
步骤 9:查看您的系统数据编辑
现在所有组件都已安装,是时候查看您的系统数据了。
查看您的系统日志数据
- 打开 Kibana 菜单并转到 分析 → 仪表板。
- 在查询字段中,搜索
Logs System
。 - 选择
[Logs System] Syslog dashboard
链接。Kibana 仪表板将打开,其中包含 Syslog 事件、主机名和进程等的可视化。
查看您的系统指标数据
- 打开 Kibana 菜单并返回到 分析 → 仪表板。
- 在查询字段中,搜索
Metrics System
。 -
选择
[Metrics System] Host overview
链接。Kibana 仪表板将打开,其中包含主机指标的可视化,包括 CPU 使用率、内存使用率、正在运行的进程等。
恭喜!您已成功设置了一个包含三个节点的 Elasticsearch 集群,其中包括 Kibana、Fleet Server 和 Elastic Agent。
后续步骤编辑
现在您已成功配置了一个本地 Elastic Stack,您可以学习如何在生产环境中使用受信任的 CA 签署证书配置 Elastic Stack。请参阅 教程 2:保护自管理的 Elastic Stack 以了解更多信息。
您也可以立即开始使用新设置的 Elastic Stack
- 您是否有要摄取的数据?了解如何 将数据添加到 Elasticsearch。
- 使用 Elastic Observability 来统一您的日志、基础设施指标、正常运行时间和应用程序性能数据。
- 想要保护您的端点免受安全威胁?试试 Elastic Security。添加端点保护只是您添加到代理策略的另一个集成!