对常见问题进行故障排除
编辑对常见问题进行故障排除编辑
我们收集了最常见的已知问题,并在此处列出。如果此处未描述您的问题,请查看以下 GitHub 代码库中的未解决问题
代码库 | 要查看或报告有关以下内容的问题 |
---|---|
舰队和集成 UI |
|
Elastic Agent |
|
Beats 发货商 |
|
Fleet Server |
|
Elastic 软件包注册表 |
|
文档问题 |
有问题?请阅读我们的 常见问题解答,或在 论坛 中联系我们。您的反馈对我们非常宝贵。
是否在独立运行 Elastic Agent?另请参阅 调试独立 Elastic Agent。
故障排除内容编辑
在以下文档中查找舰队、Fleet Server 和 Elastic Agent 的故障排除信息
- Elastic Agent 取消注册失败
- 启用 TSDB 时出现 illegal_argument_exception
-
托管在 Elastic Cloud 上的 Elastic Agent 卡在
正在更新
或离线
状态 - 使用 Elastic Cloud 时,Fleet Server 未在 Kibana 中列出
-
/api/fleet/setup
端点无法访问软件包注册表 - 在气隙环境中,Kibana 无法连接到 Elastic 软件包注册表
- Kibana 中的舰队崩溃
-
Elastic Agent 在主机上注册失败,并显示
x509:证书由未知颁发机构签名
消息 -
Elastic Agent 在主机上注册失败,并显示
x509:无法验证 x.x.x.x 的证书,因为它不包含任何 IP SAN
消息 -
Elastic Agent 在主机上注册失败,并显示
客户端超时
消息 - 许多 Fleet Server 问题可以使用以下技巧进行分类和修复
- 检索 Elastic Agent 版本
- 检查 Elastic Agent 状态
- 收集 Elastic Agent 诊断包
- 有些问题发生得太早,以至于没有足够的日志记录可用
-
Elastic Agent 被认为是
健康
的,但在将数据发送到 Elasticsearch 时仍然存在设置问题 -
Elastic Agent 卡在
正在更新
状态 - Fleet Server 正在运行且数据正常,但其他 Agent 无法使用它连接到 Elasticsearch
-
Elasticsearch 身份验证服务失败,并显示
使用 apikey 进行身份验证失败
消息 -
Elastic Agent 失败,并显示
Agent 进程不是 root/admin 或验证失败
消息 - 集成策略升级存在太多冲突
- Elastic Agent 在取消注册时挂起
-
在 Fleet Server 启动时,出现 ERROR,并显示
状态更改为 CRASHED:退出代码:1
- 卸载 Elastic Endpoint 失败
-
API 密钥无权将遥测数据发送到
.logs-endpoint.diagnostic.collection-*
索引 - 托管 Elastic Agent 处于离线状态
- APM 和舰队无法在 Elastic Cloud 上升级到 8.x
- 由于无法访问 PGP 密钥,气隙 Elastic Agent 升级可能会失败
- 删除 Fleet Server 集成后,Elastic Agent 无法连接
- Kubernetes 上的 Elastic Agent 内存不足错误
Elastic Agent 取消注册失败编辑
在舰队中,如果您删除了与一个或多个非活动已注册 Agent 关联的 Elastic Agent 策略,则当 Agent 返回到 健康
或 离线
状态时,将无法取消注册。尝试取消注册 Agent 会导致 取消注册 Agent 时出错
消息,并且取消注册失败。
要解决此问题,您可以使用 Kibana 舰队 API 强制取消注册 Agent。
要卸载单个 Elastic Agent
POST kbn:/api/fleet/agents/<agent_id>/unenroll { "force": true, "revoke": true }
要批量卸载一组 Elastic Agent
POST kbn:/api/fleet/agents/bulk_unenroll { "agents": ["<agent_id1>", "<agent-id2>"], "force": true, "revoke": true }
我们还将更新舰队 UI,以防止删除当前与任何非活动 Agent 关联的 Elastic Agent 策略。
启用 TSDB 时出现 illegal_argument_exception编辑
当您使用启用了 TSDB(时间序列数据库)的 Elastic Agent 集成时,您可能会在舰队 UI 中遇到 illegal_argument_exception
错误。
如果您定义的组件模板包含 _source
属性,而该属性与启用 TSDB 时使用的 _source: synthetic
设置冲突,则可能会发生这种情况。
有关错误以及如何解决该错误的详细信息,请参阅 Innovation Hub 文章 针对 Elastic Agent 启用了 TSDB 的集成 中的 无法在 TSDB 索引中使用运行时字段
部分。
托管在 Elastic Cloud 上的 Elastic Agent 卡在 正在更新
或 离线
状态编辑
在 Elastic Cloud 中,升级 Fleet Server 及其集成策略后,注册到 Elastic Cloud Agent 策略的 Agent 可能会遇到更新问题。要解决此问题
-
在终端窗口中,运行以下
cURL
请求,提供您的 Kibana 超级用户凭据以重置 Elastic Cloud Agent 策略。-
在 Kibana 8.11 及更高版本上,运行
curl -u <username>:<password> --request POST \ --url <kibana_url>/internal/fleet/reset_preconfigured_agent_policies/policy-elastic-agent-on-cloud \ --header 'content-type: application/json' \ --header 'kbn-xsrf: xyz' \ --header 'elastic-api-version: 1'
-
在 Kibana 8.11 之前的版本上,运行
curl -u <username>:<password> --request POST \ --url <kibana_url>/internal/fleet/reset_preconfigured_agent_policies/policy-elastic-agent-on-cloud \ --header 'content-type: application/json' \ --header 'kbn-xsrf: xyz'
-
-
强制取消注册卡在
正在更新
状态的 Agent- 要查找 Agent 的 ID,请转到 舰队 > Agent 并单击该 Agent 以查看其详细信息。复制 Agent ID。
-
在终端窗口中,运行
curl -u <username>:<password> --request POST \ --url <kibana_url>/api/fleet/agents/<agentID>/unenroll \ --header 'content-type: application/json' \ --header 'kbn-xsrf: xx' \ --data-raw '{"force":true,"revoke":true}' \ --compressed
其中,
<agentID>
是您在上一步中复制的 ID。
-
重新启动集成服务器
在 Elastic Cloud 控制台的“集成服务器”下,单击 强制重启。
使用 Elastic Cloud 时,Fleet Server 未在 Kibana 中列出编辑
如果您无法在 Kibana 中看到 Fleet Server,请确保已将其设置好。
要在 Elastic Cloud 上设置 Fleet Server
- 转到您在 Elastic Cloud 上的部署。
- 按照 Elastic Cloud 提示设置 集成服务器。完成后,Fleet Server Elastic Agent 将显示在舰队中。
要在自管集群上启用舰队并设置 Fleet Server
-
在 Elasticsearch 配置文件
config/elasticsearch.yml
中,设置以下安全设置以启用安全性和 API 密钥xpack.security.enabled: true xpack.security.authc.api_key.enabled: true
-
在 Kibana 配置文件
config/kibana.yml
中,启用舰队并指定您的用户凭据xpack.encryptedSavedObjects.encryptionKey: "something_at_least_32_characters" elasticsearch.username: "my_username" elasticsearch.password: "my_password"
要设置密码,您可以使用记录的 Elasticsearch API 或
elasticsearch-setup-passwords
命令。例如,./bin/elasticsearch-setup-passwords auto
运行命令后
- 将 Elastic 用户名复制到 Kibana 配置文件。
- 重新启动 Kibana。
- 按照记录的步骤设置自管 Fleet Server。有关更多信息,请参阅 什么是 Fleet Server?。
/api/fleet/setup
端点无法访问软件包注册表编辑
要安装集成,舰队应用程序需要连接到名为 Elastic 软件包注册表的外部服务。
为此,Kibana 服务器必须在端口 443
上连接到 https://epr.elastic.co
。
在气隙环境中,Kibana 无法连接到 Elastic 软件包注册表编辑
在气隙环境中,如果您使用的自定义证书颁发机构 (CA) 对 Kibana 不可用,则可能会遇到以下错误
{"type":"log","@timestamp":"2022-03-02T09:58:36-05:00","tags":["error","plugins","fleet"],"pid":58716,"message":"Error connecting to package registry: request to https://customer.server.name:8443/categories?experimental=true&include_policy_templates=true&kibana.version=7.17.0 failed, reason: self signed certificate in certificate chain"}
要解决此问题,请通过定义 NODE_EXTRA_CA_CERTS
环境变量将您的 CA 证书文件路径添加到 Kibana 启动文件。有关此内容的更多信息,请参阅 Elastic 软件包注册表的 TLS 配置 部分。
Kibana 中的舰队崩溃编辑
- 要调查错误,请打开浏览器的开发者控制台。
-
选择 网络 选项卡,然后刷新页面。
对舰队 API 的请求之一很可能返回了错误。如果错误消息没有提供足够的信息来解决问题,请在 论坛 中联系我们。
Elastic Agent 在主机上注册失败,并显示 x509:证书由未知颁发机构签名
消息编辑
为了确保与 Fleet Server 的通信已加密,Fleet Server 要求 Elastic Agent 提供签名的证书。在自管集群中,如果您在设置 Fleet Server 时未指定证书,则会自动生成自签名证书。
如果您尝试将 Elastic Agent 注册到使用自签名证书的 Fleet Server,则会遇到以下错误:
Error: fail to enroll: fail to execute request to fleet-server: x509: certificate signed by unknown authority Error: enroll command failed with exit code: 1
要解决此问题,请在 enroll
或 install
命令中传递 --insecure
标志。例如:
sudo ./elastic-agent install --url=https://<fleet-server-ip>:8220 --enrollment-token=<token> --insecure
Elastic Agent 和 Fleet Server 之间通过 HTTPS 进行的流量将被加密;您只需确认您了解无法验证证书链。
允许 Fleet Server 生成自签名证书对于开发环境来说很有用,但不建议在生产环境中使用。
有关更多信息,请参阅为自管 Fleet Server 配置 SSL/TLS。
Elastic Agent 注册在主机上失败,并显示 x509: cannot validate certificate for x.x.x.x because it doesn't contain any IP SANs
消息编辑
为了确保与 Elasticsearch 的通信已加密,Fleet Server 要求 Elasticsearch 提供签名证书。
当您将自签名证书与使用 IP 作为通用名称 (CN) 的 Elasticsearch 一起使用时,会出现此错误。如果使用 IP 作为 CN,Fleet Server 会查找主题备用名称 (SAN),而该名称为空。要解决此问题,请使用 --fleet-server-es-insecure
标志禁用证书验证。
您还需要在 Fleet 和 Integrations UI 的“输出”设置中设置 ssl.verification_mode: none
。
Elastic Agent 注册在主机上失败,并显示 Client.Timeout exceeded
消息编辑
要注册到 Fleet,Elastic Agent 必须连接到 Fleet Server 实例。如果代理无法连接,您会看到以下错误:
fail to enroll: fail to execute request to {fleet-server}:Post http://fleet-server:8220/api/fleet/agents/enroll?: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
以下步骤可帮助您解决问题。
- 检查网络问题。在主机上,运行
ping
命令以确认它可以访问 Fleet Server 实例。 -
此外,使用
curl
命令访问 Fleet Server 的/status
API:curl -f http://<fleet-server-url>:8220/api/status
-
验证您是否为您的环境指定了正确的 Kibana Fleet 设置 URL 和端口。
默认情况下,Fleet Server 使用 HTTPS 协议和端口 8220 与 Elasticsearch 通信,除非您已明确设置其他协议和端口。
-
检查您在注册期间是否指定了有效的注册密钥。为此,请执行以下操作:
- 在 Fleet 中,选择注册令牌。
- 要查看密钥,请单击眼睛图标。密钥应与您用于在主机上注册 Elastic Agent 的字符串匹配。
- 如果密钥不匹配,请创建新的注册令牌,并在运行
elastic-agent enroll
命令时使用此令牌。
许多 Fleet Server 问题可以使用以下技巧进行分类和修复编辑
创建问题或发送支持论坛通信时,本节可以帮助您确定需要哪些信息。
Fleet Server 允许 Elastic Agent 连接到 Elasticsearch,这与先前版本中连接到 Kibana 的方式相同。但是,由于 Fleet Server 位于边缘主机上,因此可能会导致额外的网络设置和故障排除。
检索 Elastic Agent 版本编辑
-
如果您安装了 Elastic Agent,请运行以下命令(示例适用于基于 POSIX 的系统):
elastic-agent version
-
如果您尚未安装 Elastic Agent 并且将其作为临时进程运行,则可以运行:
./elastic-agent version
以上两个命令都可以通过 Windows 或 macOS 访问,它们的操作系统特定方式略有不同。如果需要,请参阅安装 Elastic Agent,了解如何调整它们。
检查 Elastic Agent 状态编辑
运行以下命令以查看 Elastic Agent 的当前状态。
elastic-agent status
根据返回的信息,您可以采取进一步的措施。
如果 Elastic Agent 正在运行,但您没有看到预期结果,请查看以下项目:
- 在 Fleet 中,单击代理。检查哪个策略与正在运行的 Elastic Agent 关联。如果不是您预期的策略,则可以更改它。
-
在 Fleet 中,单击代理,然后选择 Elastic Agent 策略。检查应包含的集成。
例如,如果要包含系统数据,请确保策略中包含系统集成。
-
确认是否已选择收集代理日志和收集代理指标选项。
- 在 Fleet 中,单击代理,然后选择 Elastic Agent 策略。
-
选择设置选项卡。如果要收集代理日志或指标,请选择这些选项。
Elastic Cloud 代理策略仅在 Elastic Cloud 部署中创建,默认情况下不包括日志指标的收集。
收集 Elastic Agent 诊断包编辑
Elastic Agent 诊断包收集以下信息:
- Elastic Agent 版本号
- Beats(和其他进程)版本号和进程元数据
- 本地配置、elastic-agent 策略以及呈现并传递给 Beats 和其他进程的配置
- Elastic Agent 的本地日志文件
- Elastic Agent 和 Beats pprof 配置文件
请注意,诊断包仅用于调试目的,其结构可能会在不同版本之间发生变化。
Elastic Agent 会尝试在创建诊断时自动编辑凭据和 API 密钥。请在共享之前查看存档的内容,以确保没有明文凭据。
使用 CLI 获取诊断包
运行以下命令以生成一个 zip 存档,其中包含 Elastic 团队可用于调试案例的诊断信息。
elastic-agent diagnostics
通过 Fleet 获取诊断包
Fleet 提供了远程生成和收集 Elastic Agent 诊断包的功能。如果代理处于健康
或不健康
状态,则可以收集并上传诊断信息。诊断信息将发送到 Fleet Server,然后将其添加到 Elasticsearch 中。因此,即使对于未使用 Elasticsearch 输出的 Elastic Agent,此方法也有效。要下载诊断包以供本地查看,请执行以下操作:
- 在 Fleet 中,打开代理选项卡。
- 在主机列中,单击代理的名称。
- 单击诊断选项卡。
-
单击请求诊断 .zip按钮。
此页面上将列出 Elastic Agent 的任何正在进行或以前收集的包。
请注意,这些包存储在 Elasticsearch 中,将在 30 天后删除。
有些问题出现得太早,以至于没有足够的日志可用编辑
如果某些问题出现得很早并且没有足够的日志可用,请运行以下命令:
./elastic-agent install -f
独立安装命令将安装 Elastic Agent,并设置所有服务配置。您现在可以运行注册命令。例如:
elastic-agent enroll --fleet-server-es=https://<es-url>:443 --fleet-server-service-token=<token> --fleet-server-policy=<policy-id>
注意:端口 443
通常在 Elastic Cloud 中使用。但是,对于自管部署,您的 Elasticsearch 可能会在端口 9200
或完全不同的端口上运行。
有关代理日志存储位置的信息,请参阅我们的常见问题解答。
Elastic Agent 的状态为 健康
,但在将数据发送到 Elasticsearch 时仍然存在设置问题编辑
-
要确认 Elastic Agent 正在运行并且其状态为
健康
,请选择代理选项卡。如果您之前选择了收集代理日志选项,则现在可以查看代理日志。
-
单击代理名称,然后选择日志选项卡。
如果没有显示日志,则表明您的主机与 Elasticsearch 之间存在通信问题。可能的原因是端口已被使用。
-
您可以使用 Wireshark 或 netstat 等工具检查端口使用情况。在 POSIX 系统上,您可以运行以下命令:
netstat -nat | grep :8220
任何响应数据都表明该端口正在使用中。如果您打算卸载 Fleet Server,这可能是正确的,也可能不正确。在这种情况下,请重新检查并继续。
Elastic Agent 停留在 正在更新
状态编辑
从 Elastic Stack 8.11 版开始,应该会自动检测到卡住的 Elastic Agent 升级,您可以从 Fleet重新启动升级。
Fleet Server 正在运行且状态良好,但其他代理无法使用它连接到 Elasticsearch编辑
某些设置仅在您有多个 Elastic Agent 时才使用。如果是这种情况,检查主机是否可以与 Fleet Server 通信可能会有所帮助。
在非 Fleet Server 主机上,运行以下命令:
curl -f http://<fleet-server-ip>:8220/api/status
响应可能会产生您可以进一步调试的错误,或者它可能会正常工作并表明通信端口和网络不是问题所在。
一个常见问题是,Fleet Server 主机上用于通信的默认 Fleet Server 端口 8220
未打开。您可以使用与您的任何网络和安全问题相一致的常用工具来查看和更正此问题。
Elasticsearch 身份验证服务失败,并显示 Authentication using apikey failed
消息编辑
为了在 Elasticsearch 中保存和加密 API 密钥,Fleet 需要一个加密密钥。
要提供 API 密钥,请在 kibana.yml
配置文件中设置 xpack.encryptedSavedObjects.encryptionKey
属性。
xpack.encryptedSavedObjects.encryptionKey: "something_at_least_32_characters"
Elastic Agent 失败,并显示 Agent process is not root/admin or validation failed
消息编辑
请确保运行 Elastic Agent 的用户具有 root 权限,因为某些集成需要 root 权限才能收集敏感数据。
如果您在 Linux 或 macOS 上在前台(而不是作为服务)运行 Elastic Agent,请在 root 用户下运行代理:sudo
或 su
。
如果您正在使用 Elastic Defend 集成,请确保您在 SYSTEM 帐户下运行 Elastic Agent。
如果您按照 安装 Elastic Agent 中的说明将 Elastic Agent 安装为服务,则 Elastic Agent 默认在 SYSTEM 帐户下运行。
要在 SYSTEM 帐户下运行 Elastic Agent,您可以执行以下操作
- 下载 PsExec 并将内容解压缩到一个文件夹中。例如,
d:\tools
。 - 以管理员身份打开命令提示符(右键单击命令提示符图标,然后选择 以管理员身份运行)。
-
在命令提示符下,在 SYSTEM 帐户下运行 Elastic Agent
d:\tools\psexec.exe -sid "C:\Program Files\Elastic-Agent\elastic-agent.exe" run
集成策略升级存在太多冲突编辑
如果您尝试升级已过时多个版本的集成策略,则可能会出现大量冲突或配置问题。与其尝试解决这些问题,不如创建一个新策略、对其进行测试并将集成升级推广到其他主机,这样可能会更快。
在 升级集成 后
- 创建一个新策略.
- 将集成添加到策略。将自动使用较新版本。
-
将策略应用 到 Elastic Agent。
在较大的部署中,您应该在示例 Elastic Agent 上测试集成升级,然后再进行更大规模的升级计划。只有在小型试用被认为成功后,才应将更新后的策略推广到所有主机。
-
将集成更新推广到其他主机
- 在 Fleet 中,单击 Agent 策略。单击要编辑的策略的名称。
- 搜索或滚动到特定集成。打开 操作 菜单,然后选择 删除集成。
- 单击 添加集成 并重新添加刚删除的集成。将使用更新后的版本并将其应用于所有 Elastic Agent。
-
对具有过时集成的每个策略重复此过程。
在某些情况下,例如,当有数百或数千个不同的 Elastic Agent 和策略需要更新时,此升级路径是不可行的。在这种情况下,请更新一个策略并使用 复制策略 操作将更新后的策略版本应用于其他策略。此方法的缺点是无法再单独评估各个策略中各个集成版本的变化。
Elastic Agent 在取消注册时挂起编辑
取消注册 Elastic Agent 时,Fleet 会等待代理的确认,然后才会完成取消注册过程。如果 Fleet 未收到确认,则状态将挂起在 正在取消注册
。
您可以取消注册代理以使与该代理相关的所有 API 密钥失效,并将状态更改为 inactive
,以便该代理不再出现在 Fleet 中。
- 在 Fleet 中,选择 Agent。
- 在“Agent”下,从要取消注册的代理旁边的 操作 菜单中选择 取消注册代理。
- 单击 强制取消注册。
Fleet Server 启动时,出现错误,并显示 State changed to CRASHED: exited with code: 1
编辑
您可能会由于多种不同原因而看到此错误消息。一个常见原因是,在尝试进行类似生产的使用时,找不到传入的 ca.crt 文件。要验证这是否是问题所在,请在不传递 ca.crt 文件的情况下引导 Fleet Server。这意味着您将使用 {fleet-sever} 自己的自签名证书临时测试任何后续 Elastic Agent 安装。
请确保传入 ca.crt 文件的完整路径。相对路径不可行。
当您在 Elastic Agent 安装过程中看到以下错误时,您就会知道您的 Fleet Server 是否已设置为使用面向测试的自签名证书。
Error: fail to enroll: fail to execute request to fleet-server: x509: certificate signed by unknown authority Error: enroll command failed with exit code: 1
要针对自签名证书 Fleet Server Elastic Agent 进行安装或注册,请在命令中添加 --insecure
选项
sudo ./elastic-agent install --url=https://<fleet-server-ip>:8220 --enrollment-token=<token> --insecure
有关更多信息,请参阅 Elastic Agent 在主机上注册失败,并显示 x509: certificate signed by unknown authority
消息。
卸载 Elastic Endpoint 失败编辑
卸载 Elastic Agent 时,也会删除 Elastic Agent 管理的所有程序,例如 Elastic Endpoint。如果卸载失败,Elastic Endpoint 可能会保留在您的系统上。
要删除 Elastic Endpoint,请运行以下命令
cd /tmp cp /Library/Elastic/Endpoint/elastic-endpoint elastic-endpoint sudo ./elastic-endpoint uninstall rm elastic-endpoint
cd /tmp cp /opt/Elastic/Endpoint/elastic-endpoint elastic-endpoint sudo ./elastic-endpoint uninstall rm elastic-endpoint
cd %TEMP% copy "c:\Program Files\Elastic\Endpoint\elastic-endpoint.exe" elastic-endpoint.exe .\elastic-endpoint.exe uninstall del .\elastic-endpoint.exe
API 密钥无权将遥测数据发送到 .logs-endpoint.diagnostic.collection-*
索引编辑
默认情况下,Elastic Stack 中的遥测功能处于启用状态,以帮助我们了解用户最感兴趣的功能。这有助于我们集中精力使功能变得更好。
如果您最近从版本 7.10
升级到 7.11
,则在查看 Elastic Defend 日志时可能会看到以下消息
action [indices:admin/auto_create] is unauthorized for API key id [KbvCi3YB96EBa6C9k2Cm] of user [fleet_enroll] on indices [.logs-endpoint.diagnostic.collection-default]
以上消息表明 Elastic Endpoint 没有发送遥测数据的正确权限。这是 7.11 中的一个已知问题,将在即将发布的补丁版本中修复。
要从日志中删除此消息,您可以关闭 Elastic Defend 集成的遥测功能,直到下一个补丁版本可用。
- 在 Kibana 中,单击 集成,然后选择 管理 选项卡。
- 单击 Elastic Defend,然后选择 策略 选项卡以查看所有已安装的集成。
- 单击要编辑的集成。
- 在高级设置下,将
windows.advanced.diagnostic.enabled
设置为false
,然后保存集成。
托管 Elastic Agent 处于离线状态编辑
为了扩展 Fleet Server 部署,当需要或不再需要托管 Elastic Agent 时,Elastic Cloud 会启动新容器或关闭旧容器。旧的 Elastic Agent 将在“Agent”列表中显示 24 小时,然后自动消失。
Elastic Agent 无法注册到在 localhost 上运行的 Fleet Server。编辑
如果您在使用 localhost (https://127.0.0.1:8220
) 作为主机 URL 的 macOS 系统上本地测试 Fleet Server,则可能会遇到此错误
Error: fail to enroll: fail to execute request to fleet-server: lookup My-MacBook-Pro.local: no such host
这可能发生在较新的 macOS 软件上。要解决此问题,请 确保在您的本地系统上启用了文件共享。
APM 和 Fleet 无法在 Elastic Cloud 上升级到 8.x编辑
在某些情况下,如果手动修改了 Elastic Cloud 代理策略,则 APM 和 Fleet 可能无法升级到 8.x。Kibana 中的 Fleet 应用可能会显示如下消息
Unable to create package policy. Package 'apm' already exists on this agent policy
要解决此问题,您可以使用 API 调用重置 Elastic Cloud 代理策略。请注意,这将删除您添加到策略中的任何自定义集成策略,例如 Synthetics 监视器。
curl -u elastic:<password> --request POST \ --url <kibana_url>/internal/fleet/reset_preconfigured_agent_policies/policy-elastic-agent-on-cloud \ --header 'Content-Type: application/json' \ --header 'kbn-xsrf: xyz'
由于无法访问 PGP 密钥,离线 Elastic Agent 升级可能会失败编辑
在 8.9 及更高版本中,当升级程序无法访问验证二进制签名所需的 PGP 密钥时,Elastic Agent 升级可能会失败。有关详细信息和解决方法,请参阅 8.9.0 版本说明中的 PGP 密钥下载在离线环境中失败 已知问题,或参阅 elastic-agent GitHub 存储库中的 解决方法文档。
删除 Fleet Server 集成后,Elastic Agent 无法连接编辑
当您使用 Fleet 管理的 Elastic Agent 时,至少需要有一个 Elastic Agent 运行 Fleet Server 集成。如果包含此集成的策略意外从 Elastic Agent 中移除,则所有其他代理将无法管理。但是,Elastic Agent 将继续向其配置的输出发送数据。
解决此问题有两种方法,具体取决于运行 Fleet Server 集成的 Elastic Agent 是否仍然安装且运行正常(但现在运行的是其他策略)。
恢复 Elastic Agent
- 在 Fleet 中,打开 代理 选项卡,然后单击 添加代理。
- 在 添加代理 弹出窗口中,选择包含 Fleet Server 集成的代理策略。在 Elastic Cloud 上,您可以使用包含该集成的 Elastic Cloud 代理策略。
- 按照弹出窗口中的说明进行操作,并在运行 CLI 命令之前停止。
-
根据原始 Fleet Server Elastic Agent 的状态,执行以下操作之一
-
原始 Fleet Server Elastic Agent 仍在运行且运行正常
在这种情况下,您只需要使用 Fleet 重新注册代理
- 从 Kibana UI 复制
elastic-agent install
命令。 - 在命令中,将
install
替换为enroll
。 -
在 Elastic Agent 运行的目录(例如 Linux 上的
/opt/Elastic/Agent/
)中,以root
身份运行该命令。例如,如果 Kibana 为您提供了以下命令
sudo ./elastic-agent install --url=https://fleet-server:8220 --enrollment-token=bXktc3VwZXItc2VjcmV0LWVucm9sbWVudC10b2tlbg==
请改为运行
sudo ./elastic-agent enroll --url=https://fleet-server:8220 --enrollment-token=bXktc3VwZXItc2VjcmV0LWVucm9sbWVudC10b2tlbg==
- 从 Kibana UI 复制
-
原始 Fleet Server Elastic Agent 不再安装
在这种情况下,您需要重新安装代理
- 从 Kibana UI 复制命令。无需更改命令。
-
按顺序运行命令。前三个命令将下载新的 Elastic Agent 安装包,解压缩该存档并更改目录。
最后一个命令将安装 Elastic Agent。例如
sudo ./elastic-agent install --url=https://fleet-server:8220 --enrollment-token=bXktc3VwZXItc2VjcmV0LWVucm9sbWVudC10b2tlbg==
-
运行这些步骤后,您的 Elastic Agent 应该能够再次连接到 Fleet。
Kubernetes 上的 Elastic Agent 内存不足错误编辑
在 Kubernetes 环境中,由于可用内存不足,Elastic Agent 可能会因 OOMKilled
原因而终止。
要检测问题,请运行 kubectl describe pod
命令并检查结果中是否包含以下内容
Last State: Terminated Reason: OOMKilled Exit Code: 137
要解决此问题,请为代理分配更多内存,然后重新启动它。