从软件事件代理容器收集诊断信息
有时,为了确定操作问题的根源,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 cp
或podman 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
实用工具尝试从以下位置收集核心转储文件:
- 任何作为卷挂载在软件事件代理容器的
/var/lib/solace/diags
中的容器主机路径。 - 如果指定为绝对路径,则为Linux内核
core_pattern
指定的容器主机路径。也就是说,不会解释相对路径和管道到用户空间程序。有关更多信息,请参见管理核心文件。 - 作为
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>
指定要收集诊断数据的天数。默认情况下,收集一天的诊断数据。