# VMware Skyline Health Diagnostics(SHD)使用 - Part3: 報告排程、離線更新 ###### tags: `skyline` `vmware` [toc] # 報告排程 若希望經常性地掃描所佈署的 vSphere 環境,可以透過報告排程(Schedulder)定期執行,查看報告以了解問題,進而立即解決或安排計畫處理。 排程功能可使用以下 3 種健康檢查類型(Analysis Type),對 vSphere 清單進行定期掃描,並查看掃描報告。 - vCenter Health Check - VCF Health Check - vSAN Health Check :::warning **注意** 表示能執行排程的檢查類型,並不包含: - **Diagnostics** - **VMSA Scan** - **VCG Check** **所以功能上還是有所限制!** ::: ## 啟用排程 報告排程功能預設並沒有啟用,必須透過以下步驟進行啟用。 1. 選擇上方功能選單 **Scheduler** > **Enable Scheduler**。或是點擊頂部訊息欄中的 **ENABLE SCHEDULER**。 ![042.png](https://i.imgur.com/HZgF4Wn.png) 2. 根據視窗顯示的密碼強度需求建立排程密碼,點擊 **SAVE** 建立。 ![043.png](https://i.imgur.com/2fvFAf1.png) 3. 成功建立密碼後,排程功能啟用畫面如下。 ![044.png](https://i.imgur.com/WkgLZDE.png) :::info **資訊** - 若要關閉排程,點擊 **DISABLE SCHEDULER**。 - 重啟 shd 服務或 SHD 設備,會自動關閉排程服務。若要重啟排程服務,必須輸入先前建立的啟用密碼。務必**妥善保管此啟用密碼**。 ::: ## 建立第一個報告排程 啟用排程功能後,可以安排每月、每週和每天的執行頻率。 1. 點擊 **`+`** 新增排程。 ![045.png](https://i.imgur.com/TyHsR4Z.png) 2. 選擇所需的健康檢查類型。 ![046.png](https://i.imgur.com/tWuMG9s.png) 3. 輸入目標資訊。 - 執行 vCenter Health Check 或 vSAN Health Checks,請提供 VMware vCenter Server 登入資訊。 ![047.png](https://i.imgur.com/N7f0CHT.png) - 執行 VMware Cloud Foundation 運行狀況檢查,請提供 SDDC Manager 登入資訊。 ![048.png](https://i.imgur.com/NrfcTFo.png) 4. 選擇排程執行週期,目前提供 **`Daily`**, **`Weekly`**, **`Monthly`**。點擊 **CHECK CONNECTION** 確認連接狀態。若連接成功,則會顯示 **FINISH** 按鈕,點擊完成建立作業。 ![049.png](https://i.imgur.com/w63H6Zp.png) 5. 顯示目前計畫的報告排程清單。 ![050.png](https://i.imgur.com/RXH4XqE.png) ## 編輯排程 建立的報告排程,可以透過編輯(Edit)進行**執行頻率**和**排程開關**的調整。 1. 選擇欲修改的報告。點擊上方的 **Edit** 圖示。 ![051.png](https://i.imgur.com/ks59Iz6.png) 2. 點選欲調整的項目進行編輯,點擊 **SAVE** 確認。 - Frequency to run schedule - Schedule Enabled ![052.png](https://i.imgur.com/d8IETLP.png) ## 刪除排程 1. 選擇欲修改的報告。點擊上方的 **Delete** 圖示。 ![053.png](https://i.imgur.com/BJ1gyJA.png) 2. 點擊 **DELETE** 確認刪除。 ## 查看排程報告 - 在 **Scheduler** 功能,選擇執行狀態為 **Completed** 的報告,點擊右側 **View Report** 圖示查看。 ![055.png](https://i.imgur.com/JCc6ULP.png) - 在 **Show Reports** 功能,檢視分析類型 **VC_HEALTH** 的報告,在其右側點擊 **View** 圖示查看。 ![056.png](https://i.imgur.com/JwLM15b.png) :::info **資訊** 若發現排程報告執行失敗。 ![057.png](https://i.imgur.com/CSJWqKP.png) 可選擇上方功能 **Show Reports**,檢視任務(Tasks)狀態。 ![058.png](https://i.imgur.com/s9hNQcI.png) 取得**Task ID** 及 **Bundle Name** 資訊,再 SSH 連線至 SHD 設備,檢視 **`/opt/vmware-shd/vmware-shd/log/vmware-shd-task-{{TASK_ID}}.log`** 日誌紀錄進行問題排除。 透過簡單的 python 程式,檢視失敗的任務編號,得知排程報告執行的是 **vSAN Health Check**,失敗的原因應是該連接的叢集(Cluster)並非 vSAN 的叢集,無法使用 API 取得相關資訊所造成的。 ![059.png](https://i.imgur.com/nJaX2IW.jpg) - 範例程式 `checkTask.py` ```python= #!/usr/bin/env python3 # -*- coding: utf-8 -*- import sys if len(sys.argv) > 1: task_id = sys.argv[1] task_logfile = 'vmware-shd-task-' + task_id + '.log' else: print('Usage: {} <TASK_ID>'.format(sys.argv[0])) quit() print('>> Check the Task ID : [{}]'.format(task_id)) print('-' * 42 + '\n') with open(task_logfile, 'r') as f: print(f.read()) ``` ::: ## 重啟排程 將 **shd 服務**或 **SHD 設備**執行**重新啟動**的動作,基於安全考量,**排程功能會自動關閉**。若需要使用報告排程功能,必須重新啟用服務。 重啟服務就跟最初啟用服務一樣,需要輸入密碼,而且是**最初啟用排程服務所建立的密碼**。 :::warning **注意** - 如果輸入密碼與建立密碼無法匹配,將無法成功再次啟用排程服務。 ![060.png](https://i.imgur.com/krU446J.png) - 若有原先啟用排程的建立密碼,則可透過命令列方式修改密碼。 - 若忘記原先啟用排程的建立密碼,可透過命令列方式重置密碼。但原有計畫的排程報告將會失效,需要重新制定排程計畫。<font color=red>**請妥善保管排程建立密碼**</font> ::: ## 管理排程建立密碼 若需要進行排程建立密碼的管理,目前無法透過 UI 界面完成,必須使用 SSH 連線至 SHD 設備,透過命令列方式完成。 :::info **資訊** - **`sha-admin`** 帳戶密碼可透過 UI 界面進行變更。但仍**需要已知原有密碼**。選擇 **Settings** > **Reset Password** 完成。 - 其他建立的帳戶密碼,可透過 UI 界面進行變更。選擇 **Settings** > **User Management**,選擇要變更密碼的使用者,點擊上方 **Edit(鉛筆圖示)** 完成。 - 也可使用命令列方式 **`shd-user`** 達成。 ![066.png](https://i.imgur.com/94vOtzP.png) ::: ### 修改密碼 #### 條件 確定持有以下有效資訊: - `root` 帳戶密碼 - `sha-admin` 帳戶密碼 - 原排程建立密碼的資訊。 #### 步驟 1. 使用 `root` 帳戶並透過 SSH 連線至 SHD 設備。 ![061.png](https://i.imgur.com/11ZrsM9.png) 2. 執行 **`shd-config credmanager`** 命令。輸入 `sha-admin` 密碼。 3. 選擇 **3. Rekey the credential Store**。輸入原有排程建立密碼。輸入二次欲修改的建立密碼。若無錯誤訊息,表示密碼已經修改成功。 ![064.png](https://i.imgur.com/lgIPGo1.png) 4. 排程密碼修改後,會自動關閉排程服務。請按照上節提及的重啟排程步驟啟用,此時要驗證的密碼,輸入已變更的密碼。 :::info **資訊** 若要重啟 shd 服務,輸入 **`systemctl restart vmware-shd`** 命令。 ::: ### 重置密碼 #### 條件 確定持有以下有效資訊: - `root` 帳戶密碼 - `sha-admin` 帳戶密碼 - ~~原排程建立密碼的資訊。~~(因為早就忘了才會重置!) #### 步驟 1. 使用 `root` 帳戶並透過 SSH 連線至 SHD 設備。 2. 執行 **`shd-config credmanager`** 命令。輸入 `sha-admin` 密碼。 3. 選擇 **4. Re-initialize the credential Store**。輸入 **`sha-admin`** 帳戶密碼。再輸入二次新的建立密碼。若無錯誤訊息,表示密碼已經重置成功。 ![065.png](https://i.imgur.com/YC9hzg4.png) :::danger **注意** - 重置排程密碼將會影響原有的排程計畫。 - 原有的排程計畫有可能被清空! - 務必妥善保存排程建立密碼。 ::: # 自動刪除分析報告 所有的分析報告預設配置為永久保存。啟用分析報告的自動刪除,報告將在設定的保留期後自動刪除。SHD 可透過兩種方式設定報告的保存期限: - UI 界面 - 組態文件 ## UI 界面 1. 選擇上方 **Settings** 功能選單, 點擊左側 **Configurations**,顯示目前設定組態。 2. 選擇屬性 **Report Retention Period** 進行修改。 ![067.png](https://i.imgur.com/EMr3XGd.png) 3. 點擊編輯圖示 <img width=40 src='https://docs.vmware.com/en/VMware-Skyline-Health-Diagnostics/services/Skyline-Health-Diagnostics/images/GUID-8A59403C-FBF0-4CB2-8630-5E2C996A009C-low.png'>,修改屬性值。預設值為 **`0`**。直接輸入數值或使用上下箭頭調整值。點擊 <img width=30 src='https://docs.vmware.com/en/VMware-Skyline-Health-Diagnostics/services/Skyline-Health-Diagnostics/images/GUID-8720A2D3-4B52-48CB-BD90-F7CEC7A4799E-low.png'> 圖示儲存數值。 ![068.png](https://i.imgur.com/2nxsgKu.png) ## 組態文件 1. 使用 **`root`** 帳戶並透過 SSH 連線至 SHD 設備。 ![061.png](https://i.imgur.com/11ZrsM9.png) 2. 切換目錄至 **`/opt/vmware-shd/vmware-shd/app/apiserver/`。備份既有組態檔 **`vmware-shd.conf`**。 ![069.png](https://i.imgur.com/5u9HxZf.png) 3. 使用 **`vi`** 編輯組態檔,調整 **[reports]** 區塊下 **retention** 的參數值後儲存設定。 ```console [reports] owneronly=0 retention=1 ``` 或使用以下命令直接編輯。 ```bash sed -i 's/^retention=.*$/retention=1/' vmware-shd.conf ``` 4. 重啟 **vmware-shd** 服務。 ```bash systemctl restart vmware-shd ``` ![](https://i.imgur.com/YeoeU0S.png) ![](https://i.imgur.com/uuIq8v0.png) :::warning **注意** **vmware-shd** 服務重啟,若有使用報告排程功能則須再次手動啟用。 ::: # 離線更新 由於企業的安全政策,或許 SHD 也無法具有互聯網連線的權限。所以之前提到的線上更新將無法使用,但可以透過離線方式進行補丁/版本的更新。 > 如果作適度的安全評估及配置,或許能取得互聯網連線會是比較有效率的作法。 截至目前為止,SHD 版本仍是 `3.0.2`(2022-03-24)。 ## 更新步驟 1. 請先至 [VMware Customer Connect Portal](https://my.vmware.com/) 將 VMware Skyline Health Diagnostics ISO 映像下載 [[連結: https://my.vmware.com/group/vmware/get-download?downloadGroup=SKYLINE\_HD\_VSPHERE ]](https://my.vmware.com/group/vmware/get-download?downloadGroup=SKYLINE_HD_VSPHERE)。 :::info 此 ISO 映像檔可作為更新或安裝 SHD 使用。 ![](https://i.imgur.com/YnAee4n.png) ::: 2. 如果可以請先將 SHD 設備關機並進行快照備份。這裡使用 **`govc`** 命令完成 SHD 虛擬設備的快照。 ```console govc vm.power -off {VM_NAME} ``` ![074.png](https://i.imgur.com/qk5edd7.png) ```console govc snapshot.create -vm {VM_NAME} -d {DESCRIPTION} {SNAPSHOT_NAME} ``` ![072.png](https://i.imgur.com/7yGMg1f.png) ![](https://i.imgur.com/eNJ9JNe.png) 3. 接著選擇要存放 ISO 映像檔的資料存放區,建立一個目錄存放(選項,非必要),將 ISO 映像檔上傳至該目錄。 以上的動作,為了不浪費時間截太多圖,還是直接使用 **GOVC** 完成吧。 ```console govc datastore.mkdir -ds=${ds} ${iso_path} govc datastore.upload -ds=${ds} ./${iso_file} ${iso_path}/${iso_file} govc datastore.ls -ds=${ds} ${iso_path} ``` ![073.png](https://i.imgur.com/b7FDuVO.png) ![](https://i.imgur.com/Sd5vYI5.png) 對了,確認檔案完整性是個好習慣。我找不到 **`govc`** 的方式,就直接使用 SSH 連線至 ESXi 執行命令確認吧。 ![075.png](https://i.imgur.com/Bvs2sBE.png) 好喔!沒有問題。 4. 接著就是將上傳的新版本 ISO 映像檔掛載至 SHD 虛擬設備當中。並確認 **開啟電源時連線(Connect at Power On)** 勾選。將 SHD 設備開啟電源。 當然,還是從 **GOVC** 來試試看! ```console ## 取得目前 CD-ROM 裝置狀態 govc device.info -vm {VM_NAME} 'cdrom-*' ## 取得 CD-ROM 裝置名稱 govc device.info -vm {VM_NAME} 'cdrom-*' | grep 'Name:' | sed 's/^Name:.*[ ]//' ## 掛載 ISO 映像檔至指定的 CD-RON 裝置 govc device.cdrom.insert -ds ${ds} -device ${cdrom} -vm {VM_NAME} ${iso_path}/${iso_file} ## 設定開機時連線 CD-ROM govc device.connect -vm {VM_NAME} ${cdrom} ``` ![076.png](https://i.imgur.com/JcECBwH.png) :::info 若要將卸載 CD-ROM,可執行以下命令 ```console govc device.cdrom.eject -vm {VM_NAME} -device {DEVICE_NAME} ``` ::: 5. 準備就緒,將 SHD 虛擬設備開機。使用 SSH 連線或用 Console 方式,使用 **`root`** 登入。將設定的 CD-ROM 裝置掛載,執行 `sh /mnt/cdrom/install.sh` 進行安裝程序。 哈!還是想用 **govc**。 ```console ## 開啟電源 govc vm.power -on {VM_NAME} ## 掛載 CD-ROM govc guest.run -vm {VM_NAME} -l {USER:PASSWORD} mount /dev/cdrom /mnt/cdrom ## 顯示掛載檔案資訊 govc guest.ls -vm {VM_NAME} -l {USER:PASSWORD} /mnt/cdrom/ ``` ![077.png](https://i.imgur.com/64f8rQq.png) - **`install.sh`** 檔案內容 ![078.png](https://i.imgur.com/NjaEVCg.png) 剩下的就是執行 **`sh /mnt/cdrom/install.sh`** 吧?!因為已經安裝最新版本,目前也看不出來有什麼改變! ![](https://i.imgur.com/El0dPEh.png) :::info 其實上述離線更新的流程,也是之前版本透過 ISO 映像檔安裝 SHD 的方式。可以參考 Youtube 影片(2:17 開始)[[連結]](https://youtu.be/rBZuBINtcAM?t=137)。 ::: --- 好了,大致使用上就這樣了。還剩一個隱藏的 API 使用,雖然不知道能做什麼,但還是想玩玩看! - [Part1: 安裝及界面](https://hackmd.io/@farmer87/shd_01) - [Part2: 功能操作](https://hackmd.io/@farmer87/shd_02) - [Part3: 報告排程](https://hackmd.io/@farmer87/shd_03) - [Part4: API 使用](https://hackmd.io/@farmer87/shd_04) # 參考資訊 - [Scheduling the Health Checks](https://docs.vmware.com/en/VMware-Skyline-Health-Diagnostics/services/Skyline-Health-Diagnostics/GUID-3B812466-3848-48EC-AF91-0D18A1997000.html) - [Update or Upgrade the VMware Skyline Health Diagnostics Offline](https://docs.vmware.com/en/VMware-Skyline-Health-Diagnostics/services/Skyline-Health-Diagnostics/GUID-361B9F7D-A857-4A60-B0D6-6039FDC08E4F.html)