教程 1:安装自管理的 Elastic Stack
编辑教程 1:安装自管理的 Elastic Stack编辑
本教程演示了如何在自管理环境中安装和配置 Elastic Stack。按照以下步骤,您将设置一个包含三个节点的 Elasticsearch 集群,分别在单独的主机上安装 Kibana、Fleet Server 和 Elastic Agent。Elastic Agent 将配置为使用 System 集成,使其能够收集本地系统日志和指标并将它们交付到 Elasticsearch 集群。最后,您将学习如何在 Kibana 中查看系统数据。
完成这些步骤大约需要 1 到 2 个小时。
如果您使用这些步骤来配置使用受信任的 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.3-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.3-x86_64.rpm wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.14.3-x86_64.rpm.sha512
-
通过将下载的 RPM 的 SHA 与已发布的校验和进行比较来确认下载的包的有效性
shasum -a 512 -c elasticsearch-8.14.3-x86_64.rpm.sha512
该命令应返回:
elasticsearch-{version}-x86_64.rpm: OK
。 -
运行 Elasticsearch 安装命令
sudo rpm --install elasticsearch-8.14.3-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.3-x86_64.rpm wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.14.3-x86_64.rpm.sha512
-
检查下载的 RPM 的 SHA
shasum -a 512 -c elasticsearch-8.14.3-x86_64.rpm.sha512
-
运行 Elasticsearch 安装命令
sudo rpm --install elasticsearch-8.14.3-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
请注意,在日志文件中,有一些有用的诊断信息,例如:
-
已启用安全性
-
已启用分析
-
使用发现类型 [multi-node]
-
已初始化
-
正在启动...
大约一分钟后,日志应该显示类似以下的消息:
[<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.3-x86_64.rpm wget https://artifacts.elastic.co/downloads/kibana/kibana-8.14.3-x86_64.rpm.sha512
-
通过将下载的 RPM 的 SHA 与已发布的校验和进行比较来确认下载的包的有效性
shasum -a 512 -c kibana-8.14.3-x86_64.rpm.sha512
该命令应返回:
kibana-{version}-x86_64.rpm: OK
。 -
运行 Kibana 安装命令。
sudo rpm --install kibana-8.14.3-x86_64.rpm
-
与您添加的每个额外的 Elasticsearch 节点一样,要使此 Kibana 实例能够连接到第一个 Elasticsearch 节点,您需要配置一个注册令牌。
返回到您在第一个 Elasticsearch 节点上的终端外壳。
-
运行
elasticsearch-create-enrollment-token
命令,并使用-s kibana
选项生成 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 Agentedit
接下来,您将在另一台主机上安装 Elastic Agent,并使用系统集成来监控系统日志和指标。
- 登录到您要设置 Elastic Agent 的主机。
-
为安装包创建一个工作目录
mkdir agent-install-files
-
更改到新目录
cd agent-install-files
- 打开 Kibana 并转到 管理 → Fleet。
- 在 Agent 选项卡上,您应该看到新的 Fleet Server 策略正在运行,状态为正常。
- 打开 设置 选项卡。
- 重新打开 Agent 选项卡,然后选择 添加 Agent。 添加 Agent 侧边栏将打开。
- 在侧边栏中,选择一个策略名称,例如
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 仪表盘
链接。Kibana 仪表盘将打开,显示 Syslog 事件、主机名和进程等的可视化效果。
查看您的系统指标数据
- 打开 Kibana 菜单,返回 分析 → 仪表盘。
- 在查询字段中,搜索
Metrics System
。 -
选择
[Metrics System] 主机概述
链接。Kibana 仪表盘将打开,显示主机指标的可视化效果,包括 CPU 使用率、内存使用率、正在运行的进程等。
恭喜!您已成功设置了一个包含 Kibana、Fleet Server 和 Elastic Agent 的三个节点的 Elasticsearch 集群。
下一步编辑
现在您已成功配置了本地 Elastic Stack,您可以学习如何使用受信任的 CA 签署证书在生产环境中配置 Elastic Stack。请参考 教程 2:保护自托管的 Elastic Stack 了解详情。
您也可以立即开始使用新设置的 Elastic Stack
- 您是否有准备好的数据要摄取?了解如何 将数据添加到 Elasticsearch。
- 使用 Elastic 可观测性 来统一您的日志、基础设施指标、正常运行时间和应用程序性能数据。
- 想要保护您的端点免受安全威胁吗?试试 Elastic 安全。添加端点保护只是您添加到代理策略的另一个集成!