PowerFlex:GET_INFO — 支持捆绑包收集实用程序
Summary: get_info.sh — 从 PowerFlex 主机收集诊断信息并将其打包到支持包中。
Instructions
get_info.sh [选项]
描述
get_info.sh 是一个诊断实用程序,从 PowerFlex(以前称为 ScaleIO)主机收集调试信息并将其归档到压缩包中,以供支持人员进行分析。
该实用程序从多个来源收集数据,包括:
- PowerFlex 组件日志、配置和跟踪文件
- MDM/SCLI 查询输出和内部调试转储
- PowerFlex 组件内部诊断
- 操作系统配置、日志和运行时状态
- 硬件资源清册(存储控制器、网络设备、NVMe、NVDIMM 等。)
- 核心转储(现有,可根据需要生成)
- 诊断数据收集器 (
diag_coll) 统计信息
生成的捆绑包是单个压缩归档(默认为 tar/gz),可传输到 PowerFlex 支持以进行进一步分析。
只有一个实例 get_info.sh 可以在给定时间在主机上运行。如果没有足够的可用空间用于其输出,则拒绝运行(除非显式跳过空间检查)。
选项
一般选项
-
-a, --all收集所有数据。这相当于指定
--mdm-repository、--collect-cores、--max-cores=2、--valgrind-cores以及--analyse-diag-coll. -
-A, --analyse-diag-coll分析诊断数据收集器 (
diag coll) 数据 -
-b[COMPONENTS], --collect-cores[=COMPONENTS]收集用户 land 的空格分隔列表的现有核心转储
COMPONENTS。默认值(当COMPONENTS省略):所有用户本地组件
-b 和组件。对于长格式,使用 =
示例
-b'mdm sds'
--collect-cores='mdm sds'
-
-d OUT_DIR, --output-dir=OUT_DIR将生成的捆绑包存储在目录下
OUT_DIR. Default: <WORK_DIR>/scaleio-getinfo(请参见--work-dir). -
-f, --skip-mdm-login跳过对 PowerFlex MDM 登录凭据的查询。当用户已手动登录时,此选项很有用。
-
-h, --help显示帮助消息并退出。当与
--tech,还会显示技术人员选项。 -
-J, --xz使用
tar/xz已收集的捆绑包的格式,而不是默认格式tar/gz.如果系统的tar(1)不支持--use-compress-program或xz(1)未找到。 -
-k NUM, --max-cores=NUM收集多达
NUM核心文件。Default: 所有核心文件,意味着--collect-cores -
-l, --light生成轻型捆绑包。收集核心时,仅收集最新一代编号的日志文件,并且不包括组件可执行文件或库。使用此选项会降低可支持性,不建议使用此选项。
-
-m NUM, --max-traces=NUM收集多达
NUM来自每个组件的 PowerFlex 跟踪文件。Default: 所有文件 -
-N, --skip-space-check在数据收集之前跳过可用磁盘空间验证。
-
-P PATH, --collect-path=PATH收集其他路径
PATH.仅接受绝对路径。接受通配符;应使用通配符进行引号。可以多次指定此选项以收集多个路径。 -
-q, --quiet, --silent禁止在标准输出上显示消息。
-
-r, --mdm-repository收集 MDM 存储库文件。
-
-s, --skip-sdbg跳过 SDBG(诊断调试器)输出的收集。
-
-S, --pause-core-generation在数据收集期间暂停 PowerFlex 组件的核心生成。收集完成后,将还原原始配置。
-
-w WORK_DIR, --work-dir=WORK_DIR使用目录
WORK_DIR用于临时文件。Default:/tmp。 -
-x FILE, --output-file=FILE将收集的捆绑包存储为名为
FILE。相应的文件名后缀 (.tgz、.zip等)会自动添加。如果FILE是-(短划线),将捆绑包写入标准输出(意味着--quiet)。将捆绑包写入标准输出时,磁盘上不会创建捆绑包文件。Default:getInfoDump。 -
-z, --zip使用
zip已收集的捆绑包的格式,而不是默认格式tar/gz。在以下情况下被忽略zip(1)在系统上找不到。 -
--mdm-port=PORT使用端口连接到 MDM
PORT用于 SCLI 命令。Default:scli default behavior。 -
--overwrite-output-file覆盖输出文件(如果已存在)。显式指定输出文件或目录时(使用
-x或-d),默认行为是拒绝覆盖;此选项将覆盖该值。 -
--tech在帮助消息输出中包括技术人员选项。
MDM 登录选项
以下选项将传递给 SCLI --login 命令验证每个 SP 是处于正常模式还是修复模式。其行为和默认值由 SCLI 管理。
-
-n, --use-nonsecure-communication以非安全模式连接到 MDM。
-
-p PASSWORD, --password=PASSWORD使用
PASSWORD用于 PowerFlex MDM 登录。Default: SCLI 默认行为 -
-u USERNAME, --username=USERNAME使用
USERNAME用于 PowerFlex MDM 登录。Default: SCLI 默认行为 -
--ldap-authentication使用基于 LDAP 的身份验证登录到 PowerFlexMDM。
-
--management-system-ip=ADDRESS连接到
SSO/M&O网址为:ADDRESS用于 PowerFlex 登录。Default: SCLI 默认行为 -
--p12-password=PASSWORD加密 PowerFlex 登录
PKCS#12文件使用PASSWORD。Default: SCLI 默认行为 -
--p12-path=FILE存储 PowerFlex 登录信息
PKCS#12文件为FILE。Default: SCLI 默认行为
技术人员选项
以下选项旨在供支持技术人员使用,并且仅在以下情况下在帮助消息中显示: --tech 指定。
-c[COMPONENTS], --generate-cores[=COMPONENTS]
生成核心文件(使用 gcore(1)) 用于 user-land 的空格分隔列表的正在运行的进程 COMPONENTS。默认值:all user-land components,意味着 --collect-executables,并且需要 gdb 和 gcore。
-c 和 COMPONENTS。对于长格式,使用 =。
示例:
-c'mdm sds'
--generate-cores='mdm sds'
-
-C CORE_FILE, --reference-core-file=CORE_FILE收集与上次修改时间相关的产品日志和核心 (
mtime) 的CORE_FILE,而不是执行开始时间。意味 着--collect-cores -
-E REF_TIME, --event-time=REF_TIME收集与以下内容相关的产品日志和核心
REF_TIME,而不是执行开始时间。接受date(1)。意味 着--collect-cores。 -g[COMPONENTS], --valgrind-cores[=COMPONENTS]
收集 valgrind 指定用户 land 的核心转储 COMPONENTS。默认:所有用户领域组件。意味 着 --collect-executables。
-b 和 COMPONENTS。对于长格式,使用 =
示例:
-g'mdm sds'
--valgrind-cores='mdm sds'
-
-t MIN, --minutes-before-event=MIN收集产品日志和核心,生成多达
MIN参考时间前几分钟。Default: 15 -
-T MIN, --minutes-after-event=MIN收集产品日志和核心,生成多达
MIN参考时间后的几分钟。Default: 5 -
-X[COMPONENTS], --collect-executables[=COMPONENTS]收集指定用户 land 的组件可执行文件及其共享库
COMPONENTS。Default: 所有用户本地组件
-b 和 COMPONENTS。对于长格式,使用 =
示例:
-X'mdm sds'
--collect-executables='mdm sds'
-
--keep-work-dir在创建捆绑包后保留生成的临时工作目录(自动清理)。
捆绑包结构
输出捆绑包是单个压缩归档。
- 捆绑包顶层目录是收集的系统的主机名。
- 常规主机命令输出进入
server/目录。
文件名为<command>+<arguments>+ 后缀 (.txt默认)。空格替换为_,非字母数字字符剥离
示例:server/ip_-s_addr.txt – output of ip -s addr - 产品命令输出进入组件的子目录。
mdm/对于scli、sdc/对于drv_cfg等。
命令名称 (scli、drv_cfg等)被剥离。第一个有意义的参数将成为文件名。文件被指定为相关后缀,.txt。
示例:
-
mdm/query_cluster.txt- 输出scli --query_clustermdm/tgt_dump.txt- 输出scli --debug_action --tgt_dumpsdc/query_mdms.txt- 输出drv_cfg --query_mdmssds/sdbg.txt- SDBG的输出dumpallscreens用于 SDS
- 产品组件文件(而不是命令输出),
<component>/cfg、<component>/logs,以此类推
从组件的目录中复制,并去除前缀。
示例:
-
mdm/cfg/conf.txt- 复印件/opt/emc/scaleio/mdm/cfg/conf.txtsds/logs/trc.0- 复印件/opt/emc/scaleio/sds/logs/trc.0
- 主机文件系统文件位于其文件系统路径中相对于捆绑包根目录的位置。
示例:
-
etc/os-release- 复印件/etc/os-releasevar/log/messages- 复印件/var/log/messagesproc/cpuinfo- 复印件/proc/cpuinfo
- 诊断收集器 (diag_coll) 文件使用
/opt前缀去掉,保留内部结构。
示例:diag_coll/logs/sar.0- 复印件/opt/diag_coll/logs/sar.0 - 隐藏文件(以点为前缀)通过删除前导点来“取消隐藏”。
- 实用程序执行日志,
get_info_run.log,直接放置在主机名>/根目录下<
捆绑包目录树结构:
<hostname>/
|-- get_info_run.log Utility execution log
|-- server/ General command output directory
| |-- ip_-s_addr.txt
| |-- uptime.txt
| |-- uname_-a.txt
| |-- ps_-elF.txt
| |-- dmesg.txt
| +-- ... (one file per collected command)
|
|-- mdm/ PowerFlex component data (if installed)
| |-- cfg/ Configuration files (excl. PEM)
| |-- logs/ Trace and log files
| |-- rep/ Repository (if --mdm-repository)
| |-- query_all.txt SCLI query outputs
| |-- sdbg.txt SDBG screen dumps
| +-- ...
|-- sds/
|-- pds/
|-- dgwt/
|-- sdr/
|-- sdt/
|-- lia/
|-- sdc/
|-- gateway/
|
|-- diag_coll/ Diagnostic data collector (if installed)
| |-- logs/
| |-- cfg/
| +-- ...
|
|-- etc/ Host files
| |-- os-release
| |-- sysconfig/
| |-- network/
| +-- ...
|-- var/
| |-- log/
| | |-- messages
| | +-- ...
| +-- ...
|-- proc/
| |-- cpuinfo
| |-- meminfo
| +-- ...
|-- sys/
|-- ...
|
|-- scaleio-getinfo-extra/ Extra diagnostic data (if present)
+-- scaleio-getinfo-backup/ Backed-up configuration files (if any)
产品日志和核心文件筛选
本节中介绍的选项控制产品日志文件(也称为跟踪文件,例如 trc.0、 trc.1、 exp.0) 并选择核心转储文件以包含在收集的捆绑包中。他们通过定义参考时间、围绕它的时间窗口和计数限制来做到这一点。
未指定筛选选项时,将收集所有产品日志文件和(如果启用了核心收集)所有核心转储文件。筛选选项会逐步缩小此选择范围,如下所述。
参考时间
参考时间可通过以下任一方法进行设置 -E/--event-time 或 -C/--reference-core-file。
如果两者都不是 --event-time 也 --reference-core-file 给定,则不执行时间窗口过滤:参考时间默认为当前时间,并且仅用于当计数限制 (-m 或 -k) 生效(请参阅下面的计数限制)。
如果两者兼而有之 -E 和 -C 出现时,命令行上的最后一项生效。
时间窗口
设置参考时间(使用 --event-time 或 --reference-core-file),围绕它建立了一个时间窗口。可以使用以下命令设置时间窗口范围: -t/--minutes-before-event 和 或 -T/--minutes-after-event,分别默认为 15 分钟和 5 分钟。只有内容与此窗口重叠的文件才符合收集条件。
例如: -E "2020-03-20 14:30" -t 10 -T 3 收集涵盖 14:20:00 到 14:33:00 的文件。
--minutes-before-event 和 --minutes-after-event 在任一情况均不被忽略 --event-time 也 --reference-core-file 指定。
计数限制
可以使用以下命令设置文件计数限制: -m/--max-traces 和 -k/--max-cores,分别用于日志文件和核心文件。该限制是按组件测量的。
当时间窗口内有超过 NUM 的文件(或者,如果没有处于活动状态的窗口,则可用)时,将收集最接近参考时间的 NUM 文件。
在不 --event-time 或 --reference-core-file,所有文件均为候选文件(无时间窗口),并选择 NUM 最新文件。
筛选逻辑
文件筛选首先应用于时间窗口,然后应用于计数限制:
- 确定候选人。枚举组件的所有产品日志文件和/或核心转储文件。
- 派生内容期。产品日志文件内容代表一个句点。内容期被视为从其前身的上次修改时间(
mtime)或 UNIX 纪元(当不存在前置项时);它以文件本身结束mtime。核心转储文件表示某个时间点,位于文件的mtime。 - 应用时间窗口(如果
-E或-C指定)。内容完全落在窗口之外的文件将从选择中丢弃。对于产品日志文件,如果没有文件位于窗口内,则会保留最接近窗口的单个文件,以便组件的捆绑包永远不会为空。对于核心转储文件,此类回退不适用。 - 应用计数限制(如果
-m和 或-k指定)。在剩余文件中,最多NUM被选中,优先选择最接近参考时间的时间。参考时间之前和之后的文件均等地竞争选择。
认证
如果检测到主 MDM 进程在侦听预期的端口(默认值:6611)
MDM 登录选项将传递给 SCLI --login 命令,并由其处理。
如果登录失败,实用程序会终止并显示错误。
跳过登录时,仍会尝试 SCLI 命令(以支持用户事先手动登录的情况)。三次 SCLI 失败后,将显示警告,并跳过所有后续的 SCLI 命令。
在以下情况下,将跳过登录:
- 在本地主机上找不到主 MDM 进程。
- 而
--skip-mdm-login选项。
在以下情况下登录失败:
- MDM 进程所有者不在授权用户列表中(默认值:
root)并启用安全登录。 - The SCLI
--login命令返回错误(例如,错误的凭据)。
磁盘空间
临时文件和生成的捆绑包的磁盘空间需求可能会有很大不同。
实用程序尝试最大程度地减少临时空间使用量;它仅限于命令输出和收集的虚拟文件系统 (/proc 和 /sys) 文件。
可以使用以下命令从远程主机对捆绑包进行流式传输: --output-file=- 以最大限度减少 PowerFlex 主机上的磁盘空间使用情况。捆绑包文件将直接写入标准输出 (stdout) 在流式传输时;它不会在磁盘上创建。
在收集数据之前,实用程序会估计临时工作目录和输出捆绑包所需的磁盘空间。
如果估计的所需空间超过相关文件系统上的可用空间,该应用工具会终止并显示错误。可以通过以下方式绕过此检查 --skip-space-check。
工作目录和输出目录可以驻留在不同的文件系统上;每个都是独立检查的。
估计的空间需求将写入实用程序的日志文件, get_info_run.log。
退出状态
| 0 | 成功完成 |
| 1 | 错误(参数无效、空间不足、登录失败、另一个实例已在运行、捆绑包生成失败、信号捕获等) |
文件
<WORK_DIR>/get_info_run.log |
执行日志(也在捆绑包中) |
<WORK_DIR>/scaleio-getinfo-tmp/ |
临时工作目录(成功后清理) |
/tmp/scaleio-getinfo/getInfoDump.tgz |
默认输出捆绑包位置 |
<WORK_DIR>/scaleio-getinfo-extra/
/tmp/scaleio-getinfo-extra/ |
可选的额外诊断数据目录 |
/tmp/scaleio-getinfo-backup/ |
临时备份已修改的配置文件(自动创建) |
/opt/emc/scaleio/ |
PowerFlex 安装目录 |
环境
前提条件
- 该实用程序必须按照以下方式运行
root(或具有足够权限的用户,可读取组件文件、运行诊断命令和访问/proc、/sys等)。 - 标准实用程序:
tar、gzip、stat、find、awk、sed、getopt(1)(增强),nice。 - 可选:
zip(对于--zip),xz(对于--xz),gdb/gcore(对于--generate-cores)
并发
只有一个实例 get_info.sh 一次可能会运行。该实用程序使用以下命令检查现有的正在运行的实例: pidof(1) 并在找到实例时终止。
信号处理
实用程序陷阱 INT、 EXIT以及 TERM 数据收集期间的信号。收到信号后,它会:
- 恢复所有备份的配置文件(例如,核心代际设置)。
- 清理临时目录
- 状态为 1 的退出
将保留执行日志,并将其路径打印为标准错误。
示例
收集标准支持包:
get_info.sh
通过 SSH 连接流式传输捆绑包,而无需在远程 PowerFlex 主机上创建捆绑包文件:
ssh <host> 'get_info.sh --output-file=-' > getInfoDump-<host>.tgz
使用不同的工作目录以避免填满 /tmp管理此进程:
get_info.sh --work-dir=/var/tmp
在捆绑包中包含自定义路径:
get_info.sh --collect-path=/opt/custom/app/logs --collect-path='/var/log/app*'
仅收集 SDS 和 MDM 组件的最新核心转储:
get_info.sh --collect-cores='mdm sds' --max-cores=1
使用自定义时间窗口以核心文件的修改时间为中心收集数据:
get_info.sh --reference-core-file=/opt/emc/scaleio/sds/bin/core.1000 \
--minutes-before-event=10 \
--minutes-after-event=2