捕获诊断信息
编辑捕获诊断信息
编辑Elasticsearch 支持诊断工具会捕获集群统计信息和大部分设置的即时快照。它适用于所有 Elasticsearch 版本。
这些信息可用于排除集群问题。有关可以使用支持诊断工具输出进行故障排除的问题示例,请参阅 Elastic 博客。
您可以使用此工具生成诊断信息,然后在联系 Elastic 支持或 Elastic 讨论之前,以尽量缩短周转时间。
观看此视频,了解捕获 Elasticsearch 诊断信息的详细步骤。
要求
编辑- Java 运行时环境或 Java 开发工具包 v1.8 或更高版本
访问该工具
编辑支持诊断工具作为一些 Elastic 部署中的子库包含在内
- Elastic Cloud Enterprise:位于 Elastic Cloud Enterprise > 部署 > 操作 > 准备捆绑包 > Elasticsearch 下。
- Elastic Cloud on Kubernetes:以
eck-diagnostics
运行。
您还可以直接从 support-diagnostic
存储库下载最新支持诊断版本的 diagnostics-X.X.X-dist.zip
文件。
捕获诊断信息
编辑要捕获 Elasticsearch 诊断信息
-
在终端中,通过轮询集群的运行状况,验证您的网络和用户权限是否足以连接到您的 Elasticsearch 集群。
例如,使用参数
host:localhost
、port:9200
和username:elastic
,您将使用以下 curl 请求curl -X GET -k -u elastic -p https://127.0.0.1:9200/_cluster/health
如果您收到 HTTP 200
OK
响应,则可以继续下一步。如果您收到不同的响应代码,则在继续之前,请诊断问题。 -
使用相同的环境参数,运行诊断工具脚本。
有关可以传递给该工具的参数的信息,请参阅 诊断参数参考。
建议使用以下命令选项
基于 Unix 的系统
sudo ./diagnostics.sh --type local --host localhost --port 9200 -u elastic -p --bypassDiagVerify --ssl --noVerify
Windows
sudo .\diagnostics.bat --type local --host localhost --port 9200 -u elastic -p --bypassDiagVerify --ssl --noVerify
脚本执行模式
您可以在三种模式下执行脚本
-
local
(默认,推荐):轮询Elasticsearch API,收集操作系统信息,并捕获集群和 GC 日志。 -
remote
:建立与适用目标服务器的 ssh 会话,以提取与local
相同的信息。 -
api
:轮询Elasticsearch API。所有其他数据必须手动收集。
-
- 脚本完成后,验证是否没有错误记录到
diagnostic.log
。如果日志文件包含错误,请参阅诊断diagnostic.log
中的错误。 - 如果脚本完成且没有错误,则会在工作目录或您指定的输出目录中创建一个格式为
<诊断类型>-diagnostics-<DateTimeStamp>.zip
的存档。您可以根据需要查看或共享诊断存档。
诊断非 200 集群运行状况响应
编辑当您轮询集群运行状况时,如果您收到任何非 200 0K
的响应,则诊断工具可能无法按预期工作。以下是可能的错误代码及其解决方法
-
HTTP 401
UNAUTHENTICATED
- 错误中的其他信息通常会指示您的
username:password
对无效,或者您的.security
索引不可用,您需要使用role:superuser
设置临时的基于文件的领域用户以进行身份验证。 -
HTTP 403
UNAUTHORIZED
- 您的
username
已被识别,但没有足够的权限运行诊断。请使用其他用户名或提升用户的权限。 -
HTTP 429
TOO_MANY_REQUESTS
(例如,circuit_breaking_exception
) - 您的用户名已通过身份验证和授权,但集群处于足够高的压力下,以至于无法响应 API 调用。这些响应通常是间歇性的。您可以继续运行诊断,但诊断结果可能不完整。
-
HTTP 504
BAD_GATEWAY
- 您的网络在连接集群时遇到问题。您可能正在使用代理或防火墙。请考虑从其他位置运行诊断工具,确认您的端口,或使用 IP 而不是 URL 域名。
-
HTTP 503
SERVICE_UNAVAILABLE
(例如,master_not_discovered_exception
) - 您的集群当前没有选定的主节点,这是使其 API 响应所必需的。这可能是主节点轮换时的临时状态。如果问题仍然存在,请在继续操作之前,调查原因。
诊断 diagnostic.log
中的错误
编辑以下是运行诊断工具时可能遇到的一些常见错误
-
错误:无法找到或加载主类 com.elastic.support.diagnostics.DiagnosticApp
这表示您意外下载了源代码文件,而不是发布页面中的
diagnostics-X.X.X-dist.zip
。 -
由于系统或网络错误,无法检索 Elasticsearch 版本 - 无法继续。
这表示诊断无法对集群运行命令。再次轮询集群的运行状况,并确保在运行诊断批处理或 shell 文件时使用相同的参数。
-
包含
is unauthorized for user
的security_exception
提供的用户没有足够的管理员权限来运行诊断工具。请使用其他用户,或授予该用户
role:superuser
权限。