PowerFlex:GET_INFO - 支援套裝集合公用程式
Résumé: 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]收集使用者土地空間分隔清單的現有核心轉儲
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每個元件的核心檔。預設:所有核心檔,暗示--collect-cores -
-l, --light生成輕量束。僅收集最新一代的編號日誌檔,並且在收集核心時不包括元件可執行檔或庫。使用此選項會降低支援性,因此不鼓勵使用此選項。
-
-m NUM, --max-traces=NUM最多可收集
NUM每個元件的 PowerFlex 追蹤檔案。預設:所有檔案 -
-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用於臨時檔。預設:/tmp。 -
-x FILE, --output-file=FILE將收集到的套裝儲存為檔案名稱
FILE。相應的檔案名後綴 (.tgz小.zip等)將自動添加。如果FILE是-(破折號),將捆綁包寫入標準輸出(暗示--quiet)。當套裝寫入標準輸出時,磁碟上不會建立套裝檔案。預設:getInfoDump。 -
-z, --zip使用
zip所收集套裝的格式,而非預設的格式tar/gz。若為,則忽略zip(1)在系統上找不到。 -
--mdm-port=PORT使用連接埠連線至 MDM
PORT的 SCLI 命令。預設:scli default behavior。 -
--overwrite-output-file若輸出檔案已存在,請加以覆寫。當顯式指定輸出檔案或目錄時 (使用
-x或-d),默認行為是拒絕覆蓋;此選項將覆蓋該選項。 -
--tech在說明訊息輸出中包含技術人員選項。
MDM 登入選項
以下選項會傳遞到 SCLI --login 命令為貴組織設定主要和次要 IT 連絡人。其行為和預設值由 SCLI 控制。
-
-n, --use-nonsecure-communication以不安全模式連線至 MDM。
-
-p PASSWORD, --password=PASSWORD使用
PASSWORD用於 PowerFlex MDM 登入。預設:SCLI 預設行為 -
-u USERNAME, --username=USERNAME使用
USERNAME用於 PowerFlex MDM 登入。預設:SCLI 預設行為 -
--ldap-authentication使用 LDAP 型驗證登入 PowerFlex MDM。
-
--management-system-ip=ADDRESS連線至
SSO/M&OatADDRESS進行 PowerFlex 登入。預設:SCLI 預設行為 -
--p12-password=PASSWORD加密 PowerFlex 登入
PKCS#12檔案使用PASSWORD。預設:SCLI 預設行為 -
--p12-path=FILE儲存 PowerFlex 登入
PKCS#12檔案為FILE。預設:SCLI 預設行為
技術人員選項
下列選項僅供支援技術人員使用,並且僅在下列情況下顯示在說明訊息中: --tech 的指定項。
-c[COMPONENTS], --generate-cores[=COMPONENTS]
產生核心檔案 (使用 gcore(1)) 用於使用者土地的空格分隔清單的運行過程 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 指定使用者土地的核心轉儲 COMPONENTS。預設值:所有用戶用地元件。暗示 --collect-executables。
-b 和 COMPONENTS。對於長格式,請與 =
範例:
-g'mdm sds'
--valgrind-cores='mdm sds'
-
-t MIN, --minutes-before-event=MIN收集產品記錄和產生的核心數量多達
MIN參考時間前幾分鐘。預設:15 -
-T MIN, --minutes-after-event=MIN收集產品記錄和產生的核心數量多達
MIN參考時間後幾分鐘。預設:5 -
-X[COMPONENTS], --collect-executables[=COMPONENTS]收集指定使用者空間的元件可執行檔及其共用庫
COMPONENTS。預設:所有使用者用地元件
-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 程序在預期的連接埠上接聽,公用程式會嘗試登入本機 MDM (預設:6611)
MDM 登入選項會傳遞至 SCLI --login 命令,並由它處理。
如果登入失敗,公用程式會終止並顯示錯誤。
略過登入時,仍會嘗試 SCLI 命令(以支援使用者事先手動登入的情況)。在三次 SCLI 故障後,會顯示警告,並跳過所有進一步的 SCLI 命令。
下列情況會略過登入:
- 在本機主機上找不到主要 MDM 程序。
- 可使用
--skip-mdm-login選項已指定。
登入在下列情況失敗:
- MDM 行程擁有者不在授權使用者清單中(預設:
root),並且已啟用安全登錄。 - 特別行政區劃線
--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