Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,同时是可扩展的数据存储和矢量数据库,能够应对日益增多的各种用例。作为 Elastic Stack 的核心,Elasticsearch 能够集中存储您的数据,实现闪电般的搜索速度、精细的相关性调整以及强大的分析能力,并且能够轻松地进行规模扩展。
安装自托管的Elastic Stack 编辑 本教程演示了如何在自托管环境中安装和配置Elastic Stack。按照这些步骤,您将设置一个由三个节点组成的Elasticsearch集群,Kibana、Fleet Server和Elastic Agent各自部署在不同的主机上。Elastic Agent将配置系统集成,使其能够收集本地系统日志和指标,并将它们传输到Elasticsearch集群中。最后,您将学习如何在Kibana中查看系统数据。 完成这些步骤大约需要一到两个小时。
先决条件和假设 Elastic Stack概览 步骤1:设置第一个Elasticsearch节点 步骤2:配置第一个Elasticsearch节点以连接 步骤3:启动Elasticsearch 步骤4:设置第二个Elasticsearch节点 步骤5:设置额外的Elasticsearch节点 步骤6:安装Kibana 步骤7:安装Fleet Server 步骤8:安装Elastic Agent 步骤9:查看您的系统数据 后续步骤 如果您使用这些步骤来配置一个使用受信任的CA签名证书进行安全通信的生产集群,在完成步骤6安装Kibana后,我们建议您直接跳转到教程2:保护自托管的Elastic Stack。
第二个教程包括了配置Elastic Stack安全措施的步骤,然后设置带有SSL证书启用的Fleet Server和Elastic Agent。
先决条件和假设 编辑 要开始,您需要以下条件:
一组虚拟或物理主机,用于安装每个堆栈组件。 在每个主机上,拥有sudo权限的超级用户账户。 本指南中的示例使用RPM包在运行Red Hat Enterprise Linux 8的主机上安装Elastic Stack组件。其他安装方法和操作系统的步骤类似,可以在每个部分链接的文档中找到。您将安装的包如下:
Elasticsearch RPM下载链接 Kibana RPM下载链接 Elastic Agent TAR/ZIP包下载链接 对于Elastic Agent和Fleet Server(两者都使用elastic-agent-8.15.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.15.3-x86_64.rpm
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.15.3-x86_64.rpm.sha512
通过检查下载的RPM的SHA与发布的校验和来确认下载包的有效性:
shasum -a 512 -c elasticsearch-8.15.3-x86_64.rpm.sha512
命令应该返回:elasticsearch-{version}-x86_64.rpm: OK
。
运行Elasticsearch安装命令:
sudo rpm --install elasticsearch-8.15.3-x86_64.rpm
Elasticsearch安装过程默认启用了某些安全特性,包括以下内容:
启用了认证和授权,包括内置的elastic超级用户账户。 为传输层和HTTP层生成了TLS的证书和密钥,并使用这些密钥和证书启用并配置了TLS。 将安装命令的终端输出复制到本地文件中。特别是,您将需要内置elastic超级用户账户的密码。输出还包含启用Elasticsearch作为服务运行的命令,您将在下一步中使用。 运行以下两个命令,使用systemd使Elasticsearch能够作为服务运行。这使得Elasticsearch能够在主机系统重新启动时自动启动。您可以在运行Elasticsearch与systemd部分找到关于此及后续步骤的详细信息。
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch.service
步骤2:
配置第一个Elasticsearch节点以连接 编辑 在配置额外的Elasticsearch节点之前,您需要更新这个第一个节点上的Elasticsearch配置,以便其他主机能够连接到它。这是通过更新elasticsearch.yml
文件中的设置来完成的。有关所有可用设置的详细信息,请参考配置Elasticsearch。
在终端中,运行ifconfig
命令并复制主机inet IP地址的值(例如,10.128.0.84)。您稍后将需要这个值。 使用文本编辑器打开Elasticsearch配置文件,例如vim:
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://localhost: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退出状态命令结果。
步骤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.15.3-x86_64.rpm
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.15.3-x86_64.rpm.sha512
检查下载的RPM的SHA:
shasum -a 512 -c elasticsearch-8.15.3-x86_64.rpm.sha512
运行Elasticsearch安装命令:
`sudo rpm --install elasticsearch-8.15.3-x86
.sha512` 检查下载的RPM的SHA:
shasum -a 512 -c elasticsearch-8.15.3-x86_64.rpm.sha512
运行Elasticsearch安装命令:
sudo rpm --install elasticsearch-8.15.3-x86_64.rpm
与第一个Elasticsearch节点的设置不同,这次您不需要复制安装命令的输出,因为这些设置将在后续步骤中更新。
使Elasticsearch能够作为服务运行:
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch.service
尚未启动Elasticsearch服务!在重启之前还有一些配置步骤要做。
为了使这个第二个Elasticsearch节点能够连接到第一个节点,您需要配置一个注册令牌。
确保在启动Elasticsearch服务之前完成所有这些配置步骤。
您可以在为现有集群重新配置节点和在现有集群中注册节点中找到关于这些步骤的更多详细信息。
返回到第一个Elasticsearch节点的终端,并生成一个节点注册令牌:
sudo /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s node
从命令输出中复制生成的注册令牌。
关于注册令牌的一些提示:
注册令牌的有效期为30分钟。如果elasticsearch-reconfigure-node
命令返回"无效的注册令牌"错误,请尝试生成一个新的令牌。 确保不要将Elasticsearch注册令牌(用于在现有集群中注册Elasticsearch节点)与Kibana注册令牌(用于将您的Kibana实例与Elasticsearch注册,如下一节所述)混淆。这两个令牌不能互换。 在第二个Elasticsearch节点的终端中,将注册令牌作为参数传递给elasticsearch-reconfigure-node
工具:
sudo /usr/share/elasticsearch/bin/elasticsearch-reconfigure-node --enrollment-token <enrollment-token>
在命令中,将<enrollment-token>
替换为您复制的elastic生成的令牌。
在提示"是否继续"时回答"是"(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节点连接的进度,打开第二个节点的新终端并跟踪Elasticsearch日志文件:
sudo tail -f /var/log/elasticsearch/elasticsearch-demo.log
注意日志文件中的一些有用的诊断信息,例如:
已启用安全功能 已启用分析 使用发现类型[多节点] 初始化完成 启动中...
大约一分钟后,日志应该显示如下消息:
[<hostname2>] 主节点已更改{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://localhost: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.15.3-x86_64.rpm
wget https://artifacts.elastic.co/downloads/kibana/kibana-8.15.3-x86_64.rpm.sha512
通过检查下载的RPM的SHA与发布的校验和来确认下载包的有效性:
shasum -a 512 -c kibana-8.15.3-x86_64.rpm.sha512
命令应该返回:kibana-{version}-x86_64.rpm: OK
。
运行Kibana安装命令:
sudo rpm --install kibana-8.15.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服务之前,有一个配置更改要做,将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
来停止服务。
运行状态命令以获取Kibana服务的详细信息。
sudo systemctl status kibana
在状态命令的输出中,会显示一个URL,其中包含:
一个用于访问Kibana的主机地址 一个六位验证代码
例如:
Kibana尚未配置。 转到http://10.128.0.28:5601/?code=<code> 开始。 记下验证代码。
在Kibana主机机器的外部IP地址上打开
Web浏览器,例如:http://<kibana-host-address>:5601。
Kibana启动可能需要一两分钟,如果您没有立即看到提示,请刷新页面。
当Kibana启动时,系统会提示您提供注册令牌。粘贴您之前生成的Kibana注册令牌。 点击"配置Elastic"。 如果系统提示您提供验证代码,请复制并粘贴状态命令返回的六位代码。然后,等待设置完成。 当您看到"欢迎来到Elastic"页面时,提供elastic
作为用户名,并提供您在第一步中从安装命令输出复制的密码,当您设置第一个Elasticsearch节点时。 点击登录。 现在Kibana已完全设置好并与您的Elasticsearch集群通信!
重要提示:如果您打算配置SSL证书,请在此停止。
为了简单起见,本教程中我们设置所有Elastic Stack组件时没有配置安全证书。您可以继续配置Fleet、Elastic Agent,然后确认您的系统数据出现在Kibana中。
然而,在生产环境中,在进一步安装Fleet Server和Elastic Agent之前,建议更新您的安全设置,使用受信任的CA签名证书,如在教程2:保护自托管的Elastic Stack中所述。
配置了新的安全证书后,任何Elastic Agents都需要重新安装。如果您目前正在设置生产环境,我们建议您直接跳转到教程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菜单,转到Management → Fleet。Fleet打开时会显示一条消息,提示您需要添加一个Fleet Server。 点击添加Fleet Server。打开添加Fleet Server飞出窗口。 在飞出窗口中,选择快速启动标签页。 为您的Fleet Server主机指定一个名称,例如Fleet Server。 指定Elastic Agents将到达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,转到Management → 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。
结果应该如下所示:
shell
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已成功安装。 在Kibana添加代理飞出窗口中,等待确认Elastic Agent已连接。 关闭飞出窗口。 您的新Elastic Agent现已安装并注册到Fleet Server。
步骤9:
查看您的系统数据 编辑 现在所有组件都已安装,是时候查看您的系统数据了。
查看系统日志数据:
打开Kibana菜单,转到Analytics → Dashboard。 在查询字段中,搜索Logs System。 选择[Logs System] Syslog仪表板链接。Kibana Dashboard打开,显示Syslog事件、主机名和进程等的可视化。 查看系统指标数据:
打开Kibana菜单,返回到Analytics → Dashboard。 在查询字段中,搜索Metrics System。 选择[Metrics System] Host overview链接。Kibana Dashboard打开,显示主机指标的可视化,包括CPU使用率、内存使用率、运行中的进程等。
系统指标主机概览显示CPU使用率、内存使用率和其他可视化。
恭喜!您已成功设置一个包含三个节点的Elasticsearch集群,以及Kibana、Fleet Server和Elastic Agent。
后续步骤 编辑 现在您已经成功配置了本地Elastic Stack,您可以学习如何在生产环境中使用受信任的CA签名证书配置Elastic Stack。请参阅教程2:保护自托管的Elastic Stack了解更多。
您也可以立即开始使用您新设置的Elastic Stack:
您有准备好要摄入的数据吗?了解如何将数据添加到Elasticsearch。 使用Elastic Observability统一您的日志、基础设施指标、正常运行时间和应用性能数据。 想保护您的端点免受安全威胁吗?尝试Elastic Security。添加端点保护只是您添加到代理策略中的另一个集成!