教程 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.17.0-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.17.0-x86_64.rpm wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.17.0-x86_64.rpm.sha512
-
通过将下载的 RPM 的 SHA 与已发布的校验和进行比较,确认下载包的有效性
shasum -a 512 -c elasticsearch-8.17.0-x86_64.rpm.sha512
该命令应返回:
elasticsearch-{版本}-x86_64.rpm: OK
。 -
运行 Elasticsearch 安装命令
sudo rpm --install elasticsearch-8.17.0-x86_64.rpm
Elasticsearch 安装过程默认启用某些安全功能,包括以下内容
- 启用身份验证和授权,包括内置的
elastic
超级用户帐户。 - 为传输和 HTTP 层生成 TLS 证书和密钥,并使用这些密钥和证书启用和配置 TLS。
- 启用身份验证和授权,包括内置的
- 将安装命令的终端输出复制到本地文件。特别是,您需要内置
elastic
超级用户帐户的密码。输出还包含使 Elasticsearch 作为服务运行的命令,您将在下一步中使用这些命令。 -
运行以下两个命令,使 Elasticsearch 可以使用
systemd
作为服务运行。这使 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.17.0-x86_64.rpm wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.17.0-x86_64.rpm.sha512
-
检查下载的 RPM 的 SHA
shasum -a 512 -c elasticsearch-8.17.0-x86_64.rpm.sha512
-
运行 Elasticsearch 安装命令
sudo rpm --install elasticsearch-8.17.0-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
命令返回无效注册令牌
错误,请尝试生成新令牌。 - 请务必不要混淆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
生成的令牌。 - 使用
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
设置将包含一个 IP 地址和端口号数组,用于连接到之前添加到集群的每个 Elasticsearch 节点。
-
在配置文件中,取消注释
#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 节点
编辑要设置您的下一个 Elasticsearch 节点,请完全按照您之前在 步骤 4:设置第二个 Elasticsearch 节点 中所做的步骤进行操作。对于您想要添加到集群的每个其他 Elasticsearch 节点,该过程都是相同的。作为推荐的最佳实践,为每个您添加的新节点创建一个新的注册令牌。
步骤 6:安装 Kibana
编辑与 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.17.0-x86_64.rpm wget https://artifacts.elastic.co/downloads/kibana/kibana-8.17.0-x86_64.rpm.sha512
-
通过将下载的 RPM 的 SHA 与已发布的校验和进行比较,确认下载包的有效性
shasum -a 512 -c kibana-8.17.0-x86_64.rpm.sha512
该命令应返回:
kibana-{version}-x86_64.rpm: OK
。 -
运行 Kibana 安装命令
sudo rpm --install kibana-8.17.0-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 主机,运行以下两个命令以使用
systemd
启用 Kibana 作为服务运行,从而使 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 中从install
命令输出复制的密码,该密码是您在设置第一个 Elasticsearch 节点时使用的。 - 单击 登录。
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 Server
编辑现在 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 的主机操作系统的选项卡。
请注意,与 RPM/DEB 系统包相比,建议使用 TAR/ZIP 包,因为只有前者支持使用 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,并使用 System 集成来监视系统日志和指标。
- 登录到您想要设置 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 使用率、内存使用率、运行进程等。
恭喜!您已成功设置包含 Kibana、Fleet Server 和 Elastic Agent 的三节点 Elasticsearch 集群。
下一步
编辑既然您已成功配置本地部署的 Elastic Stack,您可以了解如何使用受信任的 CA 签名证书在生产环境中配置 Elastic Stack。请参阅 教程 2:保护自托管的 Elastic Stack 以了解更多信息。
您也可以立即开始使用新设置的 Elastic Stack
- 您是否有准备好摄取的数据?了解如何 将数据添加到 Elasticsearch。
- 使用 Elastic 可观测性 来统一您的日志、基础设施指标、正常运行时间和应用程序性能数据。
- 想保护您的端点免受安全威胁吗?试试 Elastic 安全。添加端点保护只是添加到代理策略的另一个集成!