PowerFlex:PFMP_SUPPORT - 支援套裝集合公用程式
Résumé: pfmp_support - 收集 PowerFlex Manager 診斷資料,並將其封裝至支援套裝
Instructions
pfmp_support [選項]
說明
pfmp_support 是一種診斷公用程式,可從 PowerFlex Manager 或 PowerFlex Manager 安裝程式主機收集偵錯資訊,並將其歸檔成壓縮套裝,以供支援人員進行分析。
此公用程式會從多個來源收集資料,包括:
- Kubernetes 診斷資料、組態和記錄
- Helm 版本資訊
- Docker 和容器執行時資料
- PowerFlex Manager 安裝程式記錄
- 作業系統組態、紀錄和執行時狀態
- 硬體清查
從多個 Kubernetes 叢集節點收集資料時,應從至少一個節點收集標準套裝 (--skip-kubernetes-shared 未指定),其中 kubectl 和 helm 可用,並可訪問 Kubernetes 控制平面。在後續節點上 --skip-kubernetes-shared 可用於減小收集數據的大小。
產生的套裝是單一壓縮歸檔 (預設為 tar/gz),可傳輸至 PowerFlex 支援,以進行進一步分析。
在指定的時間,只有一個 pfmp_support 例項可在主機上執行。如果沒有足夠的可用空間供其輸出使用,它將拒絕運行(除非明確跳過空間檢查)。
選項
一般選項
-
-A DIR, --installer-root-path=DIR
使用 DIR 作為 PowerFlex Manager 安裝程式的基礎目錄。在收集 PowerFlex 安裝程式資料和安裝程式容器 (
atlantic_installer) 未運行。預設值:自動偵測或/var。 -
-d OUT_DIR, --output-dir=OUT_DIR
將產生的套裝儲存在目錄OUT_DIR下。預設:
<WORK_DIR>/powerflex-pfmpsupport(請參閱 --work-dir)。 -
-h, --説明
顯示說明訊息並退出。與 --tech 結合使用時,還會顯示技術人員選項。
-
-J, --xz
收集的套裝使用 tar/xz 格式,而非預設的 tar/gz。如果系統的
tar(1)不支援--use-compress-program或xz(1)找不到。 -
-n NAMESPACE,--namespace=NAMESPACE
從應用程式專屬的 Kubernetes 命名空間命名空間收集額外資料。預設:
powerflex。 -
-N, --skip-space-check
在收集資料之前,略過可用磁碟空間驗證。
-
-P PATH,--collect-path=PATH
收集其他路徑路徑。僅接受絕對路徑。接受萬用字元;應使用萬用字元引出。可以多次指定此選項以收集多個路徑。
-
-q, --安靜, --靜音
隱藏標準輸出的消息。
-
-s, --skip-kubernetes-shared
跳過收集共用 (叢集範圍) Kubernetes 資料。仍會收集每個節點的 Kubernetes 資料和主機資料。可用於多節點集合減小大小;應至少從 1 個節點收集叢集資料。
-
-w WORK_DIR, --work-dir=WORK_DIR
對暫存檔案使用目錄WORK_DIR。預設:
/tmp。 -
-x FILE,--output-file=FILE
將收集到的套裝儲存為名為 FILE 的檔案。相應的檔案名後綴 (
.tgz小.zip等)將自動添加。如果 FILE 為-(破折號),將套裝寫入標準輸出 (代表 --quiet)。當套裝寫入標準輸出時,磁碟上不會建立任何套裝檔案。預設:pfmpSupport。 -
-z, --zip
對收集的套裝使用 zip 格式,而非預設的 tar/gz。若為,則忽略
zip(1)在系統上找不到。 -
--overwrite-output-file
若輸出檔案已存在,請加以覆寫。當顯式指定輸出檔或目錄(通過 -x 或 -d)時,預設行為是拒絕覆蓋;此選項將覆蓋該選項。
-
--技術
在說明訊息輸出中包含技術人員選項。
技術人員選項
下列選項僅供支援技術人員使用,且只有在指定 --tech 時才會顯示在說明訊息中。
-
--保持工作目錄
在套件建立後保留產生的暫存工作目錄 (通常會自動清理)。
-
--舊豆莢日誌
從本機 rsyslog 儲存收集舊版 Kubernetes Pod 記錄檔。省略時,電流 (
kubectl logs) 和上一個 (kubectl logs --previous) 仍會收集容器日誌。
套裝結構
輸出套裝是單一壓縮歸檔。
- 套裝頂層目錄是所收集系統的主機名稱。
- 一般主機命令輸出會進入
server/子目錄。檔案名稱為<command>+<arguments>+ 後綴 (.txt預設)。替換為 的空格_,非字母數位字元被剝離。
範例:server/ip_-s_addr.txt - output of ip -s addr - Kubectl、Helm 和 Docker 命令輸出會進入其各自的子目錄。它們進一步按範圍組織,
<namespace>/<pod>/<container>,如果適用。
命令名稱、範圍和輸出格式相關的引數將被刪除。檔案名稱為<subcommand>+<arguments>+ 後綴 (.txt預設)。替換為 的空格_,非字母數位字元被剝離。
kubectl exec 命令輸出儲存在exec/的 Pod 子目錄。
例如:kubectl/version.txt- 輸出kubectl versionkubectl/all-namespaces/get_pods.yaml-- 輸出kubectl -o=yaml get --all-namespaces podskubectl/powerflex/asmui-7d6944dcb8-zqqtk/asmui/logs_--previous.txt- 輸出kubectl logs -n powerflex --container asmui --previous asmui-7d6944dcb8-zqqtkkubectl/powerflex/nats-server-box-6d685b4b7d-cf278/nats-box/exec/nats_stream_report.txt- 輸出kubectl exec -n powerflex --container nats-box nats-server-box-6d685b4b7d-cf278 -- nats stream reporthelm/powerflex/get_all_asmmanager.txt- 輸出helm get -n powerflex all asmmanagerdocker/ps_-a.txt- 輸出docker ps -a
- 從 Pod 容器中提取的檔將放置在容器目錄中的容器內文件系統路徑下。
範例:kubectl/powerflex/thin-deployer-5657659bc7-gzbq4/thin-deployer/opt/Dell/ASM/deployments/8aaa809298a9efe10198aa58c8874f35/deployment.log- 複本/opt/Dell/ASM/deployments/8aaa809298a9efe10198aa58c8874f35/deployment.log從thin-deployer集裝箱的thin-deployer-5657659bc7-gzbq4豆莢 - 主機檔案系統檔案放置在其檔案系統路徑中,以相對於套裝根目錄。
例如:etc/os-release - copy of /etc/os-releasevar/log/messages - copy of /var/log/messagesproc/cpuinfo - copy of /proc/cpuinfovar/lib/rancher/rke2/agent/logs/kubelet.log - copy of /var/lib/rancher/rke2/agent/logs/kubelet.log
- 隱藏檔(點前綴)通過刪除前導點來“取消隱藏”。
- 實用程式執行日誌,
pfmp_support.log,直接放置在主機名>/根目錄下<。
套裝目錄樹狀結構:
<hostname>/
|-- pfmp_support.log Utility execution log
|-- server/ General command output directory
| |-- ip_-s_addr.txt
| |-- uptime.txt
| |-- uname_-a.txt
| |-- ps_-elF.txt
| |-- dmesg_-T.txt
| +-- ... (one file per collected command)
|
|-- kubectl/ kubectl command output directory
| |-- version.txt Non-namespace-specific commands
| |-- ...
| |-- all-namespaces/ Cross-namespace commands
| | |-- get_pods.txt
| | |-- get_pods.yaml
| | +-- ...
| +-- <namespace>/ Per-namespace Kubernetes data
| +-- <pod>/ Per-pod data
| +-- <container>/ Per-container data
| |-- logs.txt Current container logs
| |-- exec/ Commands executed within container (if any)
| | +-- ...
| |-- <dir>/ Files extracted from container (if any)
| +-- ...
|-- helm/ helm command output directory
|-- docker/ docker command output directory
|
|-- etc/ Host files
| |-- os-release
| |-- sysconfig/
| |-- network/
| +-- ...
|-- var/
| |-- log/
| | |-- messages
| | +-- ...
| |-- lib/rancher/rke2/
| +-- ...
|-- proc/
| |-- cpuinfo
| |-- meminfo
| +-- ...
|-- sys/
|-- ...
|
|-- powerflex-pfmpsupport-extra/ Extra diagnostic data (if present)
+-- powerflex-pfmpsupport-backup/ Backed-up configuration files (if any)
磁碟空間
暫存檔案和產生的套裝的磁碟空間需求可能會有很大差異。
公用程式會嘗試將暫時空間的使用降至最低;這僅限於命令輸出和收集的虛擬檔案系統複本 (/proc 和 /sys) 檔。
若要將 PowerFlex Manager 主機上的磁碟空間使用量降至最低,套裝可使用 --output-file=- 從遠端主機串流。流式處理時,捆綁包檔將直接寫入標準輸出(標準輸出);它不是在磁碟上創建的。
在收集數據之前,實用程式會估計臨時工作目錄和輸出捆綁包所需的磁碟空間。
如果估計的所需空間超過相關文件系統上的可用空間,則實用程式將終止並顯示錯誤。可以使用 --skip-space-check 略過此檢查。
工作目錄和輸出目錄可能位於不同的文件系統上;每個選項皆會獨立檢查。
估計的空間需求將寫入實用程式的日誌檔, pfmp_support.log。
離開狀態
| 0 | 順利完成 |
| 1 | 錯誤 (參數無效、空間不足、另一個例項已在執行、套裝產生失敗、訊號擷取等) |
檔案
<WORK_DIR>/pfmp_support.log |
執行紀錄(也包含在捆綁包中) |
<WORK_DIR>/powerflex-pfmpsupport-tmp/ |
臨時工作目錄(成功時清理) |
/tmp/powerflex-pfmpsupport/pfmpSupport.tgz |
預設輸出套裝位置 |
<WORK_DIR>/powerflex-pfmpsupport-extra/
/tmp/powerflex-pfmpsupport-extra/ |
選擇額外的診斷資料目錄 |
/tmp/powerflex-pfmpsupport-backup/ |
已修改組態檔案的暫存備份 (自動建立) |
環境
先決條件
- 公用程式必須以 root (或具有足夠權限的使用者,以讀取系統檔案、執行診斷命令、與 Kubernetes 叢集互動,以及存取
/proc小/sys等)。 - 標準公用程式:
tar小gzip小stat小find小awk小sed小getopt(1)(增強),nice。 - 選用:
zip(對於--zip),xz(對於--xz)。
併發
一次只能執行一個pfmp_support例項。公用程式會透過以下方式檢查現有執行中的例項: pidof(1) 如果找到一個,則終止。
訊號處理
公用程式設陷 INT小 EXIT以及 TERM 數據收集期間的信號。收到信號后,它:
- 還原所有備份的組態檔案。
- 清理臨時目錄。
- 狀態為 1 的退出。
將保留執行日誌,並將其路徑列印為標準錯誤。
範例
收集標準支援套裝:
pfmp_support
從 Kubernetes 叢集中的多個節點收集套裝。
- 在一個節點上,有
kubectl和helm存取、收集所有 Kubernetes 資料:pfmp_support - 在後續節點上,略過共用的 Kubernetes 資料:
pfmp_support --skip-kubernetes-shared
透過 SSH 連線串流套裝,而不在遠端 PowerFlex Manager 主機上建立套裝檔案:
ssh <host> 'pfmp_support --output-file=-' > pfmpSupport-<host>.tgz
使用其他工作目錄以避免填滿 /tmp:
pfmp_support --work-dir=/var/tmp
在套裝中包含自訂路徑:
pfmp_support --collect-path=/opt/custom/app/logs --collect-path='/var/log/app*'