Elasticsearch:安装自行管理的 Elastic Stack 集群

本教程演示如何在自行管理的环境中安装和配置最新的 Elastic Stack 9.5.5 版本。按照这些步骤,你将搭建一个包含三个节点的 Elasticsearch 集群,并部署 Kibana、Fleet Server 和 Elastic Agent ,各组件分别运行在独立主机上。Elastic Agent 配置了 System 集成,可采集本地系统日志和指标,并将其发送到 Elasticsearch 集群。最后,本教程将介绍如何在 Kibana 中查看这些系统数据。

注意

此安装流程依赖 Elasticsearch 的自动安全设置,该功能会在首次安装时默认启用安全保护。

如果你计划使用自定义证书(例如企业提供的证书或受公共信任的证书),或者需要为浏览器与 Kibana 之间的通信配置 HTTPS,可以结合为自行管理的 Elastic Stack 自定义 TLS 证书教程进行操作。

有关更多详细信息,请参阅安全概述。

前提条件与假设

开始之前,你需要准备以下资源:

  • 一组用于安装各个 Elastic Stack 组件的虚拟或物理主机。
  • 每台主机上均有一个具备 sudo 权限的用户账户,并已安装 curl。

本指南中的示例使用 RPM 软件包,在运行 Red Hat Enterprise Linux 或兼容发行版(例如 Rocky Linux)的主机上安装 Elastic Stack 9.5.5 组件。有关其他安装方式的说明,请参阅安装 Elasticsearch。

有关受支持操作系统和平台的完整列表,请参阅 Elastic 支持矩阵。

本教程需要以下软件包:

注意

对于 Elastic Agent 和 Fleet Server(两者均使用 elastic-agent-9.5.5-linux-x86_64.tar.gz 软件包),我们建议使用 TAR/ZIP 软件包,而非 RPM/DEB 系统软件包,因为只有前者支持通过 Fleet 进行升级。

本教程不涉及防火墙、代理服务器等特殊配置。

有关正常完成安装所需的基本端口和协议,请参阅下一节概述。

Elastic Stack 概述

开始之前,请先花一点时间了解 Elastic Stack 的各个组件。

如需进一步了解 Elastic Stack 及其各组件之间的关系,请参阅 Elastic Stack 概述。

本教程中的示例使用以下主机地址:

组件 示例主机名 示例 IP 地址
Elasticsearch 节点 1 es-node1 203.0.113.21
Elasticsearch 节点 2 es-node2 203.0.113.22
Elasticsearch 节点 3 es-node3 203.0.113.23
Kibana kibana-host 203.0.113.31
Fleet Server fleet-server-host 203.0.113.41

这些地址仅用于文档示例。请将其替换为你所在环境中的实际值。

安全概述

本教程将搭建一个默认启用安全保护的环境,但并非所有连接都采用相同的证书模式。开始之前,了解以下步骤所形成的安全配置会有所帮助:

  • Elasticsearch 在首次安装过程中使用自动安全设置。此过程会生成证书,并为传输层和 HTTP 层启用 TLS。
  • Kibana 使用 Elasticsearch 初始设置中的注册流程连接到 Elasticsearch。
  • 本教程不配置 浏览器与 Kibana 之间通信所用的 HTTPS,但强烈建议在生产环境中启用。有关此配置的说明,请参阅为自行管理的 Elastic Stack 自定义 TLS 证书。
  • Fleet Server 使用快速入门流程安装,该流程为其 HTTPS 端点使用自签名证书。
  • Elastic Agent 使用上述快速入门流程进行注册,因此安装命令中需要包含 --insecure 标志。

注意

如果你计划使用由组织内部证书颁发机构(CA)或公共 CA 签发的证书,请先完成本教程至第 7 步(安装 Kibana),然后在安装 Fleet Server 和 Elastic Agent 之前,继续按照为自行管理的 Elastic Stack 自定义 TLS 证书教程进行操作。

第 1 步:设置第一个 Elasticsearch 节点

首先,使用 RPM 在第一台主机上安装 Elasticsearch。这个初始 Elasticsearch 节点将引导创建一个新集群。有关以下所有步骤的详细说明,请参阅使用 RPM 安装 Elasticsearch。

注意

有关其他受支持安装方式的操作步骤,请参阅安装 Elasticsearch。

1)登录你计划设置第一个 Elasticsearch 节点的主机。

2)为安装包创建一个工作目录:

arduino 复制代码
`mkdir elastic-install-files`AI代码解释

3)进入新建的目录:

bash 复制代码
`cd elastic-install-files`AI代码解释

4)从 Elastic 制品仓库下载 Elasticsearch RPM 软件包及校验和文件:

arduino 复制代码
`

1.  curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-9.5.5-x86_64.rpm
2.  curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-9.5.5-x86_64.rpm.sha512

`AI代码解释

5)(可选)将下载的 RPM 软件包的 SHA 哈希值与发布的校验和进行比对,以验证软件包的完整性:

bash 复制代码
`sha512sum -c elasticsearch-9.5.5-x86_64.rpm.sha512`AI代码解释

该命令应返回以下结果:

go 复制代码
`elasticsearch-9.5.5-x86_64.rpm: OK.`AI代码解释

6)(可选)导入用于验证 RPM 软件包签名的 Elasticsearch GPG 密钥 :

arduino 复制代码
`sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch`AI代码解释

7)运行 Elasticsearch 安装命令:

css 复制代码
`sudo rpm --install elasticsearch-9.5.5-x86_64.rpm`AI代码解释

Elasticsearch 安装过程会默认启用部分安全功能,包括:

  • 身份验证和授权,包括内置的 elastic 超级用户账户。
  • 传输层和 HTTP 层的 TLS 证书及密钥,存储在 /etc/elasticsearch/certs 中,并自动配置为供 Elasticsearch 使用。
  • 传输接口绑定到回环接口(localhost),阻止其他节点加入集群;HTTP 接口则监听所有网络接口(http.host: 0.0.0.0)。

8)将安装命令的终端输出复制到本地文件中。尤其需要保存内置 elastic 超级用户账户的密码。输出还包含将 Elasticsearch 配置为服务运行的命令,下一步将用到这些命令。

9)运行以下两条命令,使 Elasticsearch 能够通过 systemd 作为服务运行,并在主机系统重启时自动启动。有关更多详细信息,请参阅使用 systemd 运行 Elasticsearch:

markdown 复制代码
`

1.  sudo systemctl daemon-reload
2.  sudo systemctl enable elasticsearch.service

`AI代码解释

第 2 步:配置第一个 Elasticsearch 节点的网络连接

在继续配置其他 Elasticsearch 节点之前,需要先更新第一个节点的 Elasticsearch 配置,以便其他主机能够连接到它。具体方法是修改 elasticsearch.yml 文件中的设置。有关 Elasticsearch 配置及常用设置的更多详细信息,请参阅配置 Elasticsearch和重要设置配置。

go 复制代码
`node.name: es-node1`AI代码解释

1)获取主机的 IP 地址(例如,运行 ifconfig)。稍后会用到该地址。

2)使用文本编辑器(例如 vim)打开 Elasticsearch 配置文件:

bash 复制代码
`sudo vim /etc/elasticsearch/elasticsearch.yml`AI代码解释

3)在多节点 Elasticsearch 集群中,所有 Elasticsearch 节点必须使用相同的集群名称。

在配置文件中,取消 #cluster.name: my-application 这一行的注释,并为 Elasticsearch 集群指定你喜欢的名称:

go 复制代码
`cluster.name: elasticsearch-demo`AI代码解释

4)(可选)为此节点设置名称。如果不设置,Elasticsearch 默认使用主机名。

在配置文件中,取消 #node.name: node-1 这一行的注释,并为 Elasticsearch 节点指定你喜欢的名称:

go 复制代码
`node.name: es-node1`AI代码解释

重要

如果修改了第一个 Elasticsearch 节点的 node.name,请确保 cluster.initial_master_nodes 设置中的对应节点名称与其一致,以便集群能够完成引导初始化。

5)配置网络设置。

  • 取消 #transport.host: 0.0.0.0 这一行的注释,以接受所有可用网络接口上的连接。

    默认情况下,Elasticsearch 在 localhost 上监听传输流量,这会阻止其他 Elasticsearch 节点加入集群。要允许节点间通信,需要将传输接口绑定到非回环地址:

bash 复制代码
`transport.host: 0.0.0.0  # 1`AI代码解释
  1. 如果希望 Elasticsearch 仅监听某个特定接口,请将此设置的值改为主机的 IP 地址。
  • 确保已配置 http.host。

    自动设置过程应该已将 Elasticsearch 配置为在所有网络接口上监听 HTTP 流量。

    检查配置文件中是否存在此设置。如果不存在,请添加:

bash 复制代码
`http.host: 0.0.0.0  # 1`AI代码解释
  1. 如果希望 Elasticsearch 仅监听某个特定接口,请将此设置的值改为主机的 IP 地址。

提示

除了分别设置 transport.host 和 http.host,你也可以使用 network.host 同时配置这两个接口。有关详细信息,请参阅 Elasticsearch 网络设置文档。

6)保存更改并关闭编辑器。

重要

将 Elasticsearch 配置为使用非回环地址后,它会强制执行引导检查。如果 Elasticsearch 在下一步中未能成功启动,请查阅重要系统配置文档。

第 3 步:启动 Elasticsearch 并引导初始化集群

go 复制代码
`sudo systemctl start elasticsearch.service`AI代码解释

如有需要,可以运行 sudo systemctl stop elasticsearch.service 停止该服务。

提示

如果 Elasticsearch 未能成功启动,请检查位于 /var/log/elasticsearch/<cluster-name>.log 的 Elasticsearch 日志文件,以了解详细信息。例如,如果集群名称为 elasticsearch-demo,则日志文件为 /var/log/elasticsearch/elasticsearch-demo.log。

确认 Elasticsearch 正常运行:

bash 复制代码
`sudo curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic:$ELASTIC_PASSWORD https://localhost:9200`AI代码解释

在命令中,将 $ELASTIC_PASSWORD 替换为你从安装命令输出中复制的 elastic 超级用户密码。

如果一切正常,该命令将返回类似以下内容的响应:

bash 复制代码
`

1.  {
2.   "name" : "es-node1",
3.    "cluster_name" : "elasticsearch-demo",
4.    "cluster_uuid" : "<cluster-uuid>",
5.    "version" : {
6.      "number" : "9.5.5",
7.      "build_flavor" : "default",
8.      "build_type" : "rpm",
9.      ...
10.    },
11.    "tagline" : "You Know, for Search"
12.  }

`AI代码解释![](https://csdnimg.cn/release/blogv2/dist/pc/img/runCode/icon-arrowwhite.png)

6)最后,检查 Elasticsearch 的状态:

go 复制代码
`sudo systemctl status elasticsearch`AI代码解释

与前面的 curl 命令一样,输出应确认 Elasticsearch 已成功启动。按 q 退出 status 命令的结果界面。

第 4 步:设置第二个 Elasticsearch 节点

要设置第二个 Elasticsearch 节点,首先安装 Elasticsearch RPM 软件包,然后采用不同的配置流程,使该节点加入现有集群,而不是创建新集群。有关更多详细信息,请参阅重新配置节点以加入现有集群。

1)登录你计划设置第二个 Elasticsearch 节点的主机。

2)为安装包创建一个工作目录:

arduino 复制代码
`mkdir elastic-install-files`AI代码解释

3)进入新建的目录:

bash 复制代码
`cd elastic-install-files`AI代码解释

4)下载 Elasticsearch RPM 软件包及校验和文件:

arduino 复制代码
`

1.  curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-9.5.5-x86_64.rpm
2.  curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-9.5.5-x86_64.rpm.sha512

`AI代码解释

5)检查下载的 RPM 软件包的 SHA 哈希值:

bash 复制代码
`sha512sum -c elasticsearch-9.5.5-x86_64.rpm.sha512`AI代码解释

6)(可选)导入用于验证 RPM 软件包签名的 Elasticsearch GPG 密钥:

arduino 复制代码
`sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch`AI代码解释

7)运行 Elasticsearch 安装命令:

css 复制代码
`sudo rpm --install elasticsearch-9.5.5-x86_64.rpm`AI代码解释

与设置第一个 Elasticsearch 节点不同,此处无须复制安装命令的输出。默认情况下,安装过程会将该节点配置为单节点集群,但在后续步骤中,elasticsearch-reconfigure-node 工具会更新此配置,使节点能够加入现有集群。

8)将 Elasticsearch 配置为服务运行:

markdown 复制代码
`

1.  sudo systemctl daemon-reload
2.  sudo systemctl enable elasticsearch.service

`AI代码解释

重要

暂时不要启动 Elasticsearch 服务。请先完成其余配置步骤。

9)要使新的 Elasticsearch 节点能够连接到集群,需要在已属于该集群的任意节点上创建注册令牌。

返回第一个 Elasticsearch 节点的终端,生成节点注册令牌:

bash 复制代码
`sudo /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s node`AI代码解释

10)从命令输出中复制生成的注册令牌。

提示

注册令牌的有效期为 30 分钟。如果 elasticsearch-reconfigure-node 命令返回 Invalid enrollment token(注册令牌无效)错误,请尝试生成新令牌。
请勿混淆 Elasticsearch 注册令牌与 Kibana 注册令牌。前者用于将 Elasticsearch 节点注册到现有集群,后者用于将 Kibana 实例注册到 Elasticsearch,下一节将对此进行介绍。这两种令牌不能互换使用。

11)在第二个 Elasticsearch 节点的终端中,将注册令牌作为参数传递给 elasticsearch-reconfigure-node 工具:

bash 复制代码
`sudo /usr/share/elasticsearch/bin/elasticsearch-reconfigure-node --enrollment-token <enrollment-token>`AI代码解释
  • 将 <enrollment-token> 替换为上一步复制的令牌。

注意

如果 elasticsearch-reconfigure-node 执行失败,并提示节点已经启动或初始化,请参阅"跳过安全自动配置的情况",了解可能的原因。

例如,如果此前启动过 Elasticsearch,就会创建数据目录,从而阻止自动配置过程再次运行。

12)当出现 Do you want to continue with the reconfiguration process(是否继续重新配置过程)提示时,输入 y 确认。新的 Elasticsearch 节点将完成重新配置。

13)获取主机的 IP 地址(例如,运行 ifconfig)。稍后会用到该地址。

14)使用文本编辑器打开新 Elasticsearch 节点的配置文件:

bash 复制代码
`sudo vim /etc/elasticsearch/elasticsearch.yml`AI代码解释

运行 elasticsearch-reconfigure-node 工具后,部分设置已更新。例如:

  • transport.host: 0.0.0.0 和 http.host: 0.0.0.0 设置已取消注释。
  • discovery_seed.hosts 设置中包含第一个 Elasticsearch 节点的主机 IP 地址。随着新 Elasticsearch 节点逐一加入集群,discovery_seed.hosts 设置会包含一个数组,列出用于连接此前已加入集群的各个 Elasticsearch 节点的 IP 地址和端口号。

15)在配置文件中,取消 #cluster.name: my-application 这一行的注释,并将其设置为与第一个 Elasticsearch 节点上指定的集群名称一致:

go 复制代码
`cluster.name: elasticsearch-demo`AI代码解释

16)(可选)为此节点设置名称。如果不设置,Elasticsearch 默认使用主机名。

在配置文件中,取消 #node.name: node-1 这一行的注释,并为 Elasticsearch 节点指定你喜欢的名称:

go 复制代码
`node.name: es-node2`AI代码解释

17)(可选)检查网络设置。

运行 elasticsearch-reconfigure-node 后,Elasticsearch 已配置为使用非回环地址处理传输流量和 HTTP 流量,因此通常无须修改。你可以在配置文件中确认以下设置:

markdown 复制代码
`

1.  transport.host: 0.0.0.0
2.  http.host: 0.0.0.0

`AI代码解释

注意

如果修改网络设置,请确保所有节点的网络配置保持一致。例如,所有节点应采用相同的绑定方式(指定 IP 地址或 0.0.0.0),并使用相同的设置项(transport.host、http.host 或 network.host)。有关详细信息,请参阅 Elasticsearch 网络设置文档。

18)保存更改并关闭编辑器。

19)在第二个节点上启动 Elasticsearch:

go 复制代码
`sudo systemctl start elasticsearch.service`AI代码解释

提示

如果 Elasticsearch 未能成功启动,请检查位于 /var/log/elasticsearch/<cluster-name>.log 的 Elasticsearch 日志文件,以了解详细信息。例如,如果集群名称为 elasticsearch-demo,则日志文件为 /var/log/elasticsearch/elasticsearch-demo.log。

20)(可选)要监控第二个 Elasticsearch 节点的启动和加入集群过程,请打开一个连接到该节点的新终端,并实时查看 Elasticsearch 日志文件:

bash 复制代码
`sudo tail -f /var/log/elasticsearch/elasticsearch-demo.log`AI代码解释
  • 如有需要,请将 elasticsearch-demo 替换为你的集群名称。

在节点初始化、启动传输服务并等待加入集群时,日志输出中应出现类似以下内容的条目:

css 复制代码
`

1.  [<es-node2>] Security is enabled
2.  [<es-node2>] Profiling is enabled
3.  [<es-node2>] using discovery type [multi-node] and seed hosts providers [settings]
4.  [<es-node2>] initialized
5.  [<es-node2>] starting ...
6.  [<es-node2>] publish_address {<node-ip>:9300}, bound_addresses {[::]:9300}
7.  [<es-node2>] master not discovered or elected yet ...

`AI代码解释

大约一分钟后,日志中应出现类似以下内容的消息:

css 复制代码
`[<es-node2>] master node changed {previous [], current [<es-node1>...]}`AI代码解释

这里,es-node2 是正在启动的 Elasticsearch 节点,es-node1 表示被选举为主节点的节点。随后不久,你还应看到:

xml 复制代码
`[<es-node2>] started {<es-node2>}...`AI代码解释

这些消息表明,第二个 Elasticsearch 节点已成功初始化,发现了已选出的主节点,并加入了集群。

21)最后,验证新节点是否可访问、能否正常响应,以及是否已出现在集群中。在以下命令中,将 $ELASTIC_PASSWORD 替换为你在第一个 Elasticsearch 节点上使用的同一个 elastic 超级用户密码。

  • 要确认新节点上的 Elasticsearch 正常运行,请执行:
bash 复制代码
`sudo curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic:$ELASTIC_PASSWORD https://localhost:9200`AI代码解释
  1. 如需更全面地检查,请将 localhost 替换为新节点的 IP 地址,以验证是否能够通过网络访问该节点。

响应示例:

bash 复制代码
`

1.  {
2.      "name" : "es-node2",
3.      "cluster_name" : "elasticsearch-demo",
4.      "cluster_uuid" : "<cluster-uuid>",
5.      "version" : {
6.      "number" : "9.5.5",
7.      "build_flavor" : "default",
8.      "build_type" : "rpm",
9.      ...
10.      },
11.      "tagline" : "You Know, for Search"
12.  }

`AI代码解释![](https://csdnimg.cn/release/blogv2/dist/pc/img/runCode/icon-arrowwhite.png)
  • 要确认节点已加入集群,请在任意 Elasticsearch 节点上运行以下命令:
bash 复制代码
`sudo curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic:$ELASTIC_PASSWORD https://localhost:9200/_cat/nodes?v`AI代码解释
  • 你可以将 localhost 替换为任意节点的 IP 地址。

输出应包含新节点以及集群中已有的节点,例如:

markdown 复制代码
`

1.  203.0.113.22 46 97 18 0.21 0.23 0.10 cdfhilmrstw - es-node2
2.  203.0.113.21 31 96  1 0.04 0.03 0.01 cdfhilmrstw * es-node1

`AI代码解释

第 5 步:设置更多 Elasticsearch 节点

要设置更多 Elasticsearch 节点,请对每个要加入集群的新节点,重复第 4 步:设置第二个 Elasticsearch 节点中的操作。作为推荐的最佳实践,应为每个新节点创建一个新的注册令牌。

对于生产工作负载,应至少运行三个 Elasticsearch 节点,以便集群能够容忍任意单个节点故障。有关指导,请参阅小型集群的弹性。

第 6 步:统一整理 Elasticsearch 配置

将所有 Elasticsearch 节点加入集群后,需要统一整理所有节点上的 elasticsearch.yml 配置,以便它们今后能够顺利重启并重新加入集群。

1)在每个 Elasticsearch 节点上,使用文本编辑器打开 /etc/elasticsearch/elasticsearch.yml。

2)如果仍存在 cluster.initial_master_nodes 设置,请将其注释掉或删除。此设置仅在引导初始化新集群时需要。

3)更新 discovery.seed_hosts,使其包含集群中每个具备主节点资格的 Elasticsearch 节点的 IP 地址和传输端口。

在集群的第一个节点上,需要手动添加 discovery.seed_hosts 设置。例如,如果集群包含三个节点:

go 复制代码
`

1.  discovery.seed_hosts:
2.    - 203.0.113.21:9300
3.    - 203.0.113.22:9300
4.    - 203.0.113.23:9300

`AI代码解释

注意

如果未配置节点角色,则每个节点的 discovery.seed_hosts 列表都应包含所有 Elasticsearch 节点。

4)保存每个节点上的更改。

5)(可选)重启每个节点上的 Elasticsearch 服务,以验证更新后的配置。

如果不执行这些步骤,一个或多个节点可能会在重启时无法通过发现配置引导检查。

有关更多信息,请参阅更新配置文件和发现与集群形成。

第 7 步:安装 Kibana

与 Elasticsearch 一样,你可以使用 RPM 在另一台主机上安装 Kibana。有关以下所有步骤的详细说明,请参阅使用 RPM 安装 Kibana。

注意

有关其他受支持安装方式的操作步骤,请参阅安装 Kibana。

安装 Kibana 软件包

1)登录你计划安装 Kibana 的主机,并为安装包创建一个工作目录:

arduino 复制代码
`mkdir kibana-install-files`AI代码解释

2)进入新建的目录:

bash 复制代码
`cd kibana-install-files`AI代码解释

3)从 Elastic 网站下载 Kibana RPM 软件包及校验和文件:

arduino 复制代码
`

1.  curl -L -O https://artifacts.elastic.co/downloads/kibana/kibana-9.5.5-x86_64.rpm
2.  curl -L -O https://artifacts.elastic.co/downloads/kibana/kibana-9.5.5-x86_64.rpm.sha512

`AI代码解释

4)将下载的 RPM 软件包的 SHA 哈希值与发布的校验和进行比对,以验证软件包的完整性:

bash 复制代码
`sha512sum -c kibana-9.5.5-x86_64.rpm.sha512`AI代码解释

该命令应返回以下结果:

go 复制代码
`kibana-9.5.5-x86_64.rpm: OK`AI代码解释

5)(可选)导入用于验证 RPM 软件包签名的 Elasticsearch GPG 密钥:

arduino 复制代码
`sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch`AI代码解释
  • Kibana 和 Elasticsearch RPM 软件包使用同一个 GPG 密钥进行签名。

6)运行 Kibana 安装命令:

css 复制代码
`sudo rpm --install kibana-9.5.5-x86_64.rpm`AI代码解释

7)运行以下两条命令,使 Kibana 能够通过 systemd 作为服务运行,并在主机系统重启时自动启动:

markdown 复制代码
`

1.  sudo systemctl daemon-reload
2.  sudo systemctl enable kibana.service

`AI代码解释

配置 Kibana

启动 Kibana 服务之前,请在 kibana.yml 中更新以下设置:

  • 网络绑定地址,使 Kibana 监听其主机的 IP 地址。
  • Fleet 等功能所需的已保存对象加密密钥。

有关 Kibana 配置的更多详细信息,请参阅配置 Kibana。

1)获取 Kibana 主机的 IP 地址(例如,运行 ifconfig),并将其记录下来。

2)在 Kibana 主机上生成已保存对象加密密钥:

bash 复制代码
`sudo /usr/share/kibana/bin/kibana-encryption-keys generate`AI代码解释

命令输出包含多个与加密相关的设置。在本教程中,只需复制 Fleet 功能所需的 xpack.encryptedSavedObjects.encryptionKey 的值。暂时可以忽略其他生成的密钥。

3)打开 Kibana 配置文件进行编辑:

bash 复制代码
`sudo vim /etc/kibana/kibana.yml`AI代码解释

4)取消 #server.host: localhost 这一行的注释,并将默认地址替换为你复制的主机 IP 地址。例如:

go 复制代码
`server.host: 203.0.113.31`AI代码解释
  • 如果希望 Kibana 监听所有可用网络接口,可以改用 0.0.0.0。

5)添加 xpack.encryptedSavedObjects.encryptionKey 设置,其值使用 kibana-encryption-keys generate 命令返回的密钥:

arduino 复制代码
`xpack.encryptedSavedObjects.encryptionKey: "min-32-byte-long-strong-encryption-key"`AI代码解释
  • 请将示例值替换为实际密钥。

重要

在生产环境中,请考虑将此设置存储在 Kibana 密钥库中,而不是 kibana.yml 中。有关指导,请参阅 Kibana 安全设置。

加密密钥轮换应仅作为有计划的流程的一部分进行,以帮助确保现有的加密已保存对象仍然可读。有关轮换的指导,请参阅加密密钥轮换。

6)保存更改并关闭编辑器。

现在,Kibana 已准备就绪,可以启动并注册到 Elasticsearch 集群。

启动并注册 Kibana

在本节中,你将首次启动 Kibana,并完成向 Elasticsearch 集群的注册。首次启动时,系统会提供验证码和注册提示,并自动应用所需的连接设置,完成 Kibana 配置。

1)启动 Kibana 服务:

go 复制代码
`sudo systemctl start kibana.service`AI代码解释

如有需要,可以运行 sudo systemctl stop kibana.service 停止该服务。

2)运行 status 命令,查看 Kibana 服务的详细信息:

go 复制代码
`sudo systemctl status kibana`AI代码解释

3)status 命令的输出中会显示一个 URL,其中包含:

例如:

vbnet 复制代码
`

1.  Kibana has not been configured.
2.  Go to http://203.0.113.31:5601/?code=<code> to get started.

`AI代码解释

如果 URL 中显示的是 0.0.0.0,请在下一步连接 Kibana 时使用主机的 IP 地址。

记下该验证码。

  • 用于访问 Kibana 的主机地址
  • 一个六位数验证码

4)打开浏览器,访问 Kibana 主机的外部 IP 地址,例如:http://203.0.113.31:5601。

Kibana 启动可能需要一两分钟。如果没有立即看到提示,请刷新页面。

注意

本教程使用的自动设置流程不会为通过浏览器访问 Kibana 配置 TLS 证书,但强烈建议在生产环境中进行此配置。

要为 Kibana 配置 HTTPS,请参阅加密浏览器与 Kibana 之间的流量。为自行管理的 Elastic Stack 自定义 TLS 证书教程也涵盖了此配置。

5)Kibana 启动后,会提示你输入注册令牌。你必须在 Elasticsearch 中生成此令牌:

  • 返回第一个 Elasticsearch 节点的终端会话。

  • 运行带有 -s kibana 选项的 elasticsearch-create-enrollment-token 命令,生成 Kibana 注册令牌:

    bash 复制代码
    `sudo /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana`AI代码解释
  • 从命令输出中复制生成的注册令牌,并将其粘贴到浏览器中的注册提示框内。

6)点击 Configure Elastic(配置 Elastic)。

7)如果系统提示输入验证码,请复制并粘贴 status 命令返回的六位数验证码,然后等待设置完成。

8)出现 Welcome to Elastic(欢迎使用 Elastic) 页面后,使用 elastic 超级用户账户,以及安装第一个 Elasticsearch 节点时生成的密码登录。

9)点击 Log in(登录)。

现在,Kibana 已完成全部设置,并已与 Elasticsearch 集群建立通信。

第 8 步:安装 Fleet Server

现在 Kibana 已启动并正常运行,你可以安装 Fleet Server。Fleet Server 将 Elastic Agent 实例连接到 Fleet,并作为控制平面,负责更新 Agent 策略和收集 Agent 状态信息。

注意

本教程采用 **Quick Start(快速入门)**安装流程,默认会为 Fleet Server 生成自签名证书。有关 **Quick Start(快速入门)**和 **Advanced(高级)**设置选项的更多详细信息,请参阅部署本地和自行管理的 Fleet Server。

如果希望使用自定义 SSL/TLS 证书,请转而按照为自行管理的 Elastic Stack 自定义 TLS 证书教程操作,无须继续执行以下步骤。

继续之前,请确认满足以下前提条件:

  • 如果未使用内置的 elastic 超级用户,请确保你的 Kibana 用户拥有 Fleet 和 Integrations(集成)**的 **All(全部)**权限。
  • Elastic Agent 主机能够通过网络直接连接到 Fleet Server 和 Elasticsearch 集群。
  • Kibana 主机能够通过端口 443 连接到 https://epr.elastic.co,以下载集成软件包。

1)登录你计划设置 Fleet Server 的主机。

2)为安装包创建一个工作目录:

arduino 复制代码
`mkdir fleet-install-files`AI代码解释

3)进入新建的目录:

bash 复制代码
`cd fleet-install-files`AI代码解释

4)获取 Fleet Server 主机的 IP 地址(例如,运行 ifconfig)。稍后会用到该地址。

5)返回浏览器。打开 Kibana 菜单,进入 Management → Fleet(管理 → Fleet)。Fleet 页面会提示你需要添加 Fleet Server。

6)点击 Add Fleet Server(添加 Fleet Server) ,打开 Add a Fleet Server(添加 Fleet Server)侧边面板。

7)在侧边面板中,选择 Quick Start(快速入门)选项卡。

8)为 Fleet Server 主机指定名称,例如 Fleet Server。

9)指定 Elastic Agent 连接 Fleet Server 时需要使用的主机 URL,例如:https://203.0.113.41:8220。其中的 IP 地址就是你之前记录的 Fleet Server 主机 IP 地址。

请务必包含端口号。8220 是 Fleet Server 在本地部署环境中使用的默认端口。有关端口分配列表,请参阅本地 Fleet Server 安装文档中的默认端口分配。

10)点击 Generate Fleet Server policy(生成 Fleet Server 策略)。系统将创建一个策略,其中包含该 Fleet Server 实例的全部配置设置。

11)在 nstall Fleet Server to a centralized host (将 Fleet Server 安装到集中式主机)步骤中,本示例选择 Linux 选项卡。请务必选择与你的操作系统和架构(例如 aarch64 或 x64)均匹配的选项卡。建议使用 TAR/ZIP 软件包,而非 RPM/DEB 系统软件包,因为只有前者支持通过 Fleet 升级 Fleet Server。

12)复制生成的命令,然后在 Fleet Server 主机的终端中逐条运行。这些命令会执行以下操作:

如需了解安装命令的选项,请参阅 Elastic Agent 命令参考中的 elastic-agent install。

  • 从 Elastic 制品仓库下载 Fleet Server 软件包
  • 解压软件包归档文件
  • 进入包含安装二进制文件的目录
  • 安装 Fleet Server

13)出现提示时,输入 Y,安装 Elastic Agent 并将其作为服务运行。等待安装完成。

14)在 Kibana 的 **Add a Fleet Server(添加 Fleet Server)**侧边面板中,等待系统确认 Fleet Server 已连接。

15)暂时忽略 ** Continue enrolling Elastic Agent(继续注册 Elastic Agent)**选项,并关闭侧边面板。

现在,Fleet Server 已完成全部设置。

第 9 步:安装 Elastic Agent

接下来,在另一台主机上安装 Elastic Agent,并使用 System 集成监控系统日志和指标。

注意

每台主机只能安装一个 Elastic Agent。

1)登录你计划设置 Elastic Agent 的主机。

2)为安装包创建一个工作目录:

arduino 复制代码
`mkdir agent-install-files`AI代码解释

3)进入新建的目录:

bash 复制代码
`cd agent-install-files`AI代码解释

4)打开 Kibana,进入 Management → Fleet(管理 → Fleet)。

5)在 Agents 选项卡中,你应该能看到新的 Fleet Server 策略正在运行,且状态为健康。

6)打开 Settings (设置)选项卡,检查 Fleet Server hosts (Fleet Server 主机)和 Outputs(输出)中的 URL。确保这些 URL 和 IP 地址能够用于访问 Fleet Server 和 Elasticsearch 集群,并且使用 HTTPS 协议。

7)返回 Agents (选项卡,选择 Add agent(添加 Agent) ,打开 Add agent(添加 Agent*侧边面板。

8)在侧边面板中,指定策略名称,例如 Demo Agent Policy。

9)保持 Collect system logs and metrics(采集系统日志和指标)选项启用。这会将 System 集成添加到 Elastic Agent 策略中。

10)点击 Create policy(创建策略)。

11)在 Enroll in Fleet?(是否注册到 Fleet?)步骤中,保持选中 Enroll in Fleet(注册到 Fleet)。

12)在 Install Elastic Agent on your host(在主机上安装 Elastic Agent)步骤中,本示例选择 Linux 选项卡。请务必选择与你的操作系统和架构(例如 aarch64 或 x64)均匹配的选项卡。

与 Fleet Server 一样,建议使用 TAR/ZIP 软件包,而非 RPM/DEB 系统软件包,因为只有前者支持通过 Fleet 升级 Elastic Agent。

13)将生成的命令复制到文本编辑器中。暂时不要运行,因为下一步需要修改其中一条命令。

14)对 sudo ./elastic-agent install 命令进行两处修改:

本教程需要使用 --insecure 标志,以允许连接到使用自签名证书的 Fleet Server 端点。有关指导,请参阅安装由 Fleet 管理的 Elastic Agent。

提示

如果希望使用自定义 SSL 证书建立安全通信,请参阅为自行管理的 Elastic Stack 自定义 TLS 证书。

修改后的命令应类似如下:

ini 复制代码
`sudo ./elastic-agent install --url=https://203.0.113.41:8220 --enrollment-token=VWCobFhKd0JuUnppVYQxX0VKV5E6UmU3BGk0ck9RM2HzbWEmcS4Bc1YUUM== --insecure`AI代码解释
  • 检查 --url 参数中的端口号,确保其为 8220(用于本地部署的 Fleet Server)。
  • 在命令末尾添加 --insecure 标志。

15)在 Elastic Agent 主机的终端中逐条运行这些命令。它们会执行以下操作:

  • 从 Elastic 制品仓库下载 Elastic Agent 软件包。
  • 解压软件包归档文件。
  • 进入包含安装二进制文件的目录。
  • 安装 Elastic Agent。

16)出现提示时,输入 Y,安装 Elastic Agent 并将其作为服务运行。等待安装完成:

go 复制代码
`Elastic Agent has been successfully installed.`AI代码解释

17)在 Kibana 的 Add agent(添加 Agent)侧边面板中,等待系统确认 Elastic Agent 已连接。

18)关闭侧边面板。

现在,新的 Elastic Agent 已安装完成,并已注册到 Fleet Server。

第 10 步:查看系统数据

现在所有组件均已安装完成,你可以通过多种方式查看数据。Elastic Observability 提供用于探索主机活动的解决方案视图,各个集成也可以提供专用的仪表板和可视化。本教程将先查看 Observability 中的主机视图,再打开 System 集成提供的日志和指标示例仪表板。

将 System 集成添加到 Elastic Agent 策略时,其相关资源(包括仪表板)会自动安装。

在 Observability 中查看主机数据:

  1. 打开 Kibana 菜单,进入 Observability → Infrastructure → Hosts(可观测性 → 基础设施 → 主机)。
  2. 确认你的主机已显示在列表中,并且正在上报数据。

查看系统日志数据:

  1. 打开 Kibana 菜单,进入 Analytics → Dashboard(分析 → 仪表板)。
  2. 在查询框中搜索 Logs System。
  3. 选择 [Logs System] Syslog dashboard 链接。Kibana 仪表板随即打开,展示 Syslog 事件、主机名、进程等信息的可视化。

查看系统指标数据:

  1. 打开 Kibana 菜单,返回 Analytics → Dashboard(分析 → 仪表板)。
  2. 在查询框中搜索 Metrics System。
  3. 选择 [Metrics System] Host overview 链接。Kibana 仪表板随即打开,展示 CPU 使用率、内存使用率、运行中的进程等主机指标的可视化。

你已成功搭建一个包含三个节点的 Elasticsearch 集群,并部署了 Kibana、Fleet Server 和 Elastic Agent。

后续步骤

现在,你已成功配置本地部署的 Elastic Stack,接下来可以了解如何在生产环境中使用受信任 CA 签发的证书,自定义 Elastic Stack 的证书配置。有关详细信息,请参阅为自行管理的 Elastic Stack 自定义 TLS 证书。

你也可以立即开始使用刚刚搭建好的 Elastic Stack:

  • 已有准备好摄取的数据?了解如何将数据导入 Elastic。
  • 使用 Elastic Observability 统一管理日志、基础设施指标、可用性和应用性能数据。
  • 希望保护端点免受安全威胁?试试 Elastic Security。只需向 Agent 策略再添加一项集成,即可启用端点保护!
相关推荐
程序员差不多先生1 小时前
Anthropic 用 5 个月重写了 Git:当 AI Agent 把版本控制系统逼到墙角
人工智能·git·elasticsearch·deepseek v4 pro·kimi k3·glm 5.3·qwen3.7 max
Elastic 中国社区官方博客2 小时前
Jina AI:Elasticsearch 集成
大数据·运维·人工智能·elasticsearch·搜索引擎·全文检索·jina
草莓熊Lotso2 小时前
【C++ 基于微服务的即时通讯系统】Elasticsearch 从安装到 C++ 客户端二次封装全落地
linux·网络·数据库·c++·elasticsearch·微服务
.冰块.12 小时前
ELK 日志分析系统实验:部署 Elasticsearch 双节点集群实现 Apache 日志采集与 Kibana 可视化
elk·elasticsearch·apache·日志
顧棟18 小时前
Elasticsearch Scroll :分页进度到底记在哪?
大数据·elasticsearch·搜索引擎
一枕槐安4871 天前
线上检索延迟 2 秒,我把向量库从 ES 换成了 Chroma
大数据·elasticsearch·搜索引擎
Rock Chin6971 天前
把 Claude Code 和 Codex 接进微信、飞书、钉钉:LangBot Runner 插件实战
elasticsearch·钉钉·飞书
Elasticsearch1 天前
Jina AI:Elasticsearch 集成
elasticsearch
吃饱了得干活2 天前
用 PageHelper 同步数据到 ES:能跑,但这几个坑得先知道
后端·elasticsearch