捕获诊断信息编辑

Elasticsearch 支持诊断工具捕获集群统计信息和大多数设置的某个时间点快照。它适用于所有 Elasticsearch 版本。

此信息可用于对集群问题进行故障排除。有关可以使用支持诊断工具输出解决的问题示例,请参阅Elastic 博客

您可以在联系Elastic 支持Elastic Discuss之前使用此工具生成诊断信息,以最大程度地缩短周转时间。

要求编辑

  • 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 诊断信息,请执行以下操作

  1. 在终端中,通过轮询集群的运行状况来验证您的网络和用户权限是否足以连接到 Elasticsearch 集群。

    例如,使用参数host:localhostport:9200username:elastic,您可以使用以下 curl 请求

    curl -X GET -k -u elastic -p https://127.0.0.1:9200/_cluster/health

    如果您收到 HTTP 200 OK响应,则可以继续下一步。如果您收到其他响应代码,请先诊断问题,然后再继续。

  2. 使用相同的环境参数,运行诊断工具脚本。

    有关您可以传递给该工具的参数的信息,请参阅诊断参数参考

    建议使用以下命令选项

    基于 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。所有其他数据必须手动收集。
  3. 脚本完成后,请验证diagnostic.log中是否记录了任何错误。如果日志文件包含错误,请参阅诊断diagnostic.log中的错误
  4. 如果脚本完成且没有错误,则会在工作目录或您指定的输出目录中创建一个格式为<diagnostic type>-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 usersecurity_exception

    提供的用户没有足够的管理员权限来运行诊断工具。请使用其他用户,或授予该用户role:superuser权限。