捕获诊断信息
edit捕获诊断信息
editElasticsearch 的 Support Diagnostic 工具捕获集群统计信息和大多数设置的即时快照。 它适用于所有 Elasticsearch 版本。
此信息可用于排查集群问题。有关可以使用支持诊断工具输出进行故障排除的问题示例,请参阅Elastic 博客。
在联系 Elastic Support 或 Elastic Discuss 之前,您可以使用此工具生成诊断信息,以最大限度地减少周转时间。
要求
edit- Java 运行时环境或 Java 开发工具包 v1.8 或更高版本
访问工具
edit支持诊断工具作为子库包含在某些 Elastic 部署中:
- Elastic Cloud Enterprise: 位于 Elastic Cloud Enterprise > 部署 > 操作 > 准备捆绑包 > Elasticsearch。
-
Elastic Cloud on Kubernetes: 运行
eck-diagnostics。
您也可以直接下载最新支持诊断版本的 diagnostics-X.X.X-dist.zip 文件,来自 the support-diagnostic 仓库。
捕获诊断信息
edit捕获 Elasticsearch 诊断:
-
在终端中,通过轮询集群的健康状态,验证您的网络和用户权限是否足以连接到您的Elasticsearch集群。
例如,使用参数
host:localhost、port:9200和username:elastic,您可以使用以下 curl 请求:curl -X GET -k -u elastic -p https://localhost: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- .zip
诊断非200集群健康响应
edit当您轮询集群健康状况时,如果收到的响应不是200 OK,那么诊断工具可能无法按预期工作。以下是可能的错误代码及其解决方案:
-
HTTP 401
UNAUTHENTICATED -
错误中的附加信息通常会指出您的
用户名:密码对无效,或者您的.security索引不可用,您需要设置一个具有角色:超级用户的基于文件的领域用户来进行认证。 -
HTTP 403
UNAUTHORIZED -
您的
用户名已被识别,但权限不足,无法运行诊断。请使用不同的用户名或提升用户的权限。 -
HTTP 429
TOO_MANY_REQUESTS(for example,circuit_breaking_exception) - 您的用户名已通过身份验证和授权,但集群处于高负载状态,无法响应API调用。这些响应通常是间歇性的。您可以继续运行诊断,但诊断结果可能不完整。
-
HTTP 504
BAD_GATEWAY - 您的网络在访问集群时遇到问题。您可能正在使用代理或防火墙。 建议您从不同位置运行诊断工具,确认您的端口,或使用IP地址代替URL域名。
-
HTTP 503
SERVICE_UNAVAILABLE(for example,master_not_discovered_exception) - 您的集群当前没有选举出主节点,这对于其API响应是必需的。这可能是在主节点轮换期间的暂时现象。如果问题持续存在,请在继续操作之前调查原因。
诊断diagnostic.log中的错误
edit以下是您在运行诊断工具时可能会遇到的常见错误:
-
错误:找不到或无法加载主类 com.elastic.support.diagnostics.DiagnosticApp这表明您不小心下载了源代码文件,而不是从发布页面下载了
diagnostics-X.X.X-dist.zip。 -
由于系统或网络错误,无法检索 Elasticsearch 版本 - 无法继续。这表明诊断无法对集群运行命令。再次轮询集群的健康状况,并确保在运行诊断批处理或shell文件时使用相同的参数。
-
一个包含
is unauthorized for user的security_exception:提供的用户没有足够的管理员权限来运行诊断工具。请使用另一个用户,或者授予该用户
role:superuser权限。