跳到主要内容

从软件事件代理容器收集诊断信息

有时,为了确定操作问题的根源,Solace客户支持需要一套完整的事件代理诊断文件和调试日志。为了协助调查,您可以使用以下任一方法来收集有关Solace PubSub+软件事件代理容器的诊断信息:

  • 容器中的gather-diagnostics-host实用工具
  • Solace CLI中的gather-diagnostics命令

gather-diagnostics-host实用工具

我们建议您使用gather-diagnostics-host实用工具,而不是gather-diagnostics CLI命令。即使软件事件代理容器没有运行、Solace CLI无法访问,或者怀疑容器主机配置有误,也可以运行该实用工具。

要使用gather-diagnostics-host实用工具,您必须拥有一个运行Python 2.7或更高版本的Linux主机。

以下命令假设您以有根模式运行容器。如果您以无根模式运行,则可能不需要使用sudo。

gather-diagnostics-host实用工具包含在软件事件代理容器文件系统中。要提取该实用工具,请使用docker cppodman cp命令。

>sudo docker cp <CONTAINER_NAME>:/usr/share/solace/gather-diagnostics-host <DESTINATION_PATH>

例如:

>sudo docker cp solace:/usr/share/solace/gather-diagnostics-host /usr/local/bin

gather-diagnostics-host实用工具尝试从以下位置收集核心转储文件:

  1. 任何作为卷挂载在软件事件代理容器的/var/lib/solace/diags中的容器主机路径。
  2. 如果指定为绝对路径,则为Linux内核core_pattern指定的容器主机路径。也就是说,不会解释相对路径和管道到用户空间程序。有关更多信息,请参见管理核心文件。
  3. 作为gather-diagnostics-host命令行参数提供的用户指定路径。

gather-diagnostics-host收集软件事件代理容器的诊断信息。如果没有附加命令行参数运行,它将收集所有默认容器映像solapp:currentload创建的容器的信息,或者如果没有,则收集使用默认名称solace的容器的信息。用户可以使用--name指定容器,或使用--image指定特定容器映像。

要在Linux主机环境中运行gather-diagnostics-host实用工具,请输入以下命令:

gather-diagnostics-host [-h] [-f <filename>] [-d <days>] [-n <container>] [-i <repository>:<tag>] [--no-container] [--core-host-path pattern] [-V] [-D]

其中:

-h--help显示收集诊断帮助信息。

-f filename--file filename输出单个压缩的诊断数据文件。如果未指定,则使用默认文件名。

-d days--days days指定要捕获的历史天数。

-n container--name container指定要收集诊断数据的特定容器名称或ID。如果未指定容器,则使用所有匹配容器映像的容器。

-i repository:tag--image repository:tag指定要用于查找匹配容器的容器映像。默认值为solace-app:currentload

--no-container指定不要在容器内尝试运行gather-diagnostics-host

--core-host-path pattern指定要用作正则表达式的核心文件路径。此脚本将捕获主机上所有匹配pattern的文件。

-V指定增加输出详细性。

-D指定调试模式,描述实用工具操作而不执行任何操作。

在Docker for Windows上使用gather-diagnostics-host实用工具

为了方便,gather-diagnostics-host支持实用工具包含在软件事件代理容器映像中。要在Docker for Windows中使用此实用工具,请创建一个基于软件事件代理容器映像的新sidecar容器,并使用不同的ENTRYPOINT命令(gather-diagnostics-host)。

例如:

> docker run --rm -t --privileged -u root --volumes-from solace -v c:\Users\username\storage\diags:/tmp -v /var/run/docker.sock:/var/run/docker.sock solace-pubsub-standard:<version> /usr/share/solace/gather-diagnostics-host --sidecar

此示例创建了一个sidecar容器,该容器在名为solace的运行容器上运行gather-diagnostic-host实用工具,并将输出放置在C:\Users\username\storage\diags目录中的压缩tar文件中。

默认情况下,gather-diagnostics-host实用工具在新容器内放置/tmp目录,并在容器移除时删除它。Solace建议将/tmp目录挂载到共享磁盘上的持久位置,如上例所示。

在Docker for Mac上使用gather-diagnostics-host实用工具

为了方便,gather-diagnostics-host支持实用工具包含在软件事件代理容器映像中。要在Docker for Mac中使用此实用工具,请创建一个基于容器映像的新sidecar容器,并使用不同的ENTRYPOINT命令(gather-diagnostics-host)。

例如:

> docker run --rm -t --privileged -u root --volumes-from solace -v /Users/username/storage/diags:/tmp -v /var/run/docker.sock:/var/run/docker.sock solace-pubsub-standard:<version> /usr/share/solace/gather-diagnostics-host --sidecar

此示例创建了一个sidecar容器,该容器在名为solace的运行容器上运行gather-diagnostic-host实用工具,并将输出放置在Users/username/storage/diags目录中的压缩tar文件中。

默认情况下,gather-diagnostics-host实用工具在新容器内放置/tmp目录,并在容器移除时删除它。Solace建议将/tmp目录挂载到共享磁盘上的持久位置,如上例所示。

使用gather-diagnostics CLI命令

如果您无法访问容器主机,即只能通过Solace CLI访问软件事件代理容器,您可以使用Solace CLIgather-diagnostics命令来收集软件事件代理容器的诊断信息。

收集诊断命令会自动收集并打包信息。命令完成后,检索到的文件和日志将保存为单个压缩文件,并将此诊断文件的名称及其位置打印到屏幕上。

需要一个文件传输用户帐户来访问生成的诊断文件。有关帐户创建的更多信息,请参见配置文件传输用户帐户。

使用第三方应用程序,如Filezilla或WinSCP(Windows),或命令行实用工具,如SCP或FTP,访问压缩文件并将其移动到本地目录。 应用程序将提示输入用户名和密码,请输入您创建文件传输帐户时创建的用户名和密码。

要收集事件代理诊断信息,请输入以下命令:

solace> enable
solace# admin
solace(admin)# gather-diagnostics [days-of-history <days>]

其中:

days-of-history <days>指定要收集诊断数据的天数。默认情况下,收集一天的诊断数据。