GLPI 中的 LSI RAID 庫存

GLPI 中的 LSI RAID 庫存
在我的工作中,我經常對缺乏基礎設施資訊感到困擾,並且隨著所服務的伺服器數量的增加,這變成了真正的折磨。 即使當我是小型組織的管理員時,我也總是想知道什麼在哪裡、在哪裡插入、哪些人負責哪件硬體或服務,最重要的是,記錄所有這些的更改。 當你來到一個新的地方並遇到一個事件時,你會花費大量的時間來搜尋這些資訊。 接下來我會告訴你我在RuVDS中遇到了什麼,以及我是如何解決標題中指出的問題的。

作為一名企業管理員,我幾乎沒有在資料中心工作的經驗,但我瞥見了 RackTables。 它清楚地顯示了機架上的所有伺服器、UPS、交換器以及它們之間的所有連接。 RuVDS 沒有這樣的系統,只有 Excel/紙本文件,其中包含有關伺服器、某些元件、機架號碼等資訊。 使用這種方法,追蹤小組件的變化非常困難。 但伺服器最重要、最頻繁更換的消耗品是磁碟。 維護有關磁碟狀態及其戰略儲備的最新資訊非常重要。 如果 RAID 陣列中的某個磁碟機發生故障且沒有快速更換,最終可能會導致致命的後果。 因此,我們確實需要一個追蹤磁碟位置及其狀況的系統,以便了解我們可能缺少什麼以及我們需要購買哪些型號。

GLPI 拯救了我們,它是一款開源產品,旨在提高 IT 部門的績效並讓他們實現 ITIL 理想。 除了設備庫存和機架管理之外,它還具有知識庫、服務台、文件管理等等。 GLPI有很多插件,包括FusionInventory和OCS Inventory,它們允許您透過代理安裝和SNMP自動收集有關電腦和其他設備的資訊。 您可以在其他文章中閱讀有關安裝 GLPI 和插件的更多信息,最重要的是 - 官方文檔。 您可以使用現成的範本將其安裝在我們的託管上 LAMP.

但是,部署代理程式後,我們將在 GLPI 中開啟電腦元件並看到以下內容:

GLPI 中的 LSI RAID 庫存
問題是沒有一個插件可以看到有關 LSI RAID 陣列中實體磁碟的資訊。 了解如何使用 PowerShell 腳本解決 Zabbix 中的監控問題 LSI-raid.ps1 我決定編寫一個類似的程式來將資訊傳輸到 GLPI。
有關陣列中磁碟的資料可以使用控制器製造商提供的實用程式取得;對於 LSI,這是 StorCLI。 您可以從中獲取 JSON 格式的數據,解析它並將其傳遞給 GLPI API。 我們將把磁碟連結到 FusionInventory 已建立的電腦。 再次執行時,該腳本將更新磁碟上的資料並新增資料。 腳本本身 Send-RAIDtoGLPI.ps1 是 在 GitHub 上。 接下來我就告訴大家如何使用。

需要什麼

  1. 格里菲 版本 9.5.1(在此版本上進行測試)
  2. 插件 融合庫存 和 Windows 代理
  3. Windows 2012 R2(及更高版本)作為主機系統,或插入控制器的管理虛擬機,PowerShell 版本 4 或更高版本
  4. 安裝 MegaRAID 驅動程式
  5. PowerShell 模組 - PSGLPI
  6. GLPI 中的帳戶具有管理員設定文件,可透過 UserToken 和 AppToken 產生的 API 進行授權

很重要的一點。 由於某種原因,GLPI 對於磁碟模型有 2 個不同的實體,但沒有「媒體類型」屬性。 因此,為了記錄 HDD 和 SSD 屬性,我決定使用「硬碟型號」下拉清單(front/devicemodel.php?itemtype=DeviceHardDriveModel)。 該腳本必須在 GLPI 資料庫中具有這些值,否則將無法寫入有關磁碟模型的資料。 因此,您需要先將HDD新增至這個空列表中,然後將SSD新增至這個空列表中,以便這些元素在資料庫中的ID為1和2。如果還有其他元素,則將腳本的這一行替換為Send-RAIDtoGLPI.ps1之後HDD 和 SSD 而不是 1 和 2 它們對應的 ID:

deviceharddrivemodels_id = switch ($MediaType) { "HDD" { "1" }; "SSD" { "2" }; default { "" } }

如果您不想為此煩惱,或者您以不同的方式使用此下拉列表,則只需從腳本中刪除此行即可。

您還需要在「Element Statuses」(/front/state.php) 中新增磁碟狀態。 我添加了狀態“MediaError”(至少有一個磁碟存取錯誤)和“OK”,這是腳本中傳輸其 ID 的一行,“2”代表“OK”,“1”代表“MediaError”:

states_id = switch ($MediaError) { 0 { "2" }; { $_ -gt 0 } { "1" } }

這些狀態是為了方便起見而需要的;如果您不需要這些屬性,您也可以完全刪除此行。

在腳本本身中,不要忘記將變數指向您的變數。 $GlpiCreds 必須包含 GLPI API 伺服器的 URL、UserToken 和 AppToken。

劇本裡有什麼

由於繁瑣的 JSON 解析和空的 ifs,該腳本很難閱讀,所以我在這裡描述它的邏輯。

首次在主機上啟動時,腳本會遍歷所有控制器,並透過序號在 GLPI 資料庫中搜尋磁碟;如果沒有找到,則尋找型號;如果沒有找到型號,則將新磁碟的型號新增至GLPI 並將該磁碟輸入到資料庫中。

每次新通過時,腳本都會嘗試偵測新磁碟,但它不知道如何刪除遺失的磁碟,因此您必須手動執行此操作。

部署範例

腳本儲存庫包含 Deploy-Send-RAIDtoGLPI.ps1 腳本,該腳本將從我們的 GLPI 伺服器下載包含必要檔案的 ZIP 存檔,並將它們部署到每個主機。

複製檔案後,腳本將安裝 FusionInventory 代理程式以作為日常任務運行,並為我們的腳本建立相同的任務。 成功實現後,我們終於可以在GLPI中的電腦的Components部分看到驅動器了。

導致

現在,透過「設定」->「組件」->「硬碟」選單中的GLPI,我們可以點擊硬碟型號並查看其數量,以了解我們需要購買什麼。

GLPI 中的 LSI RAID 庫存
GLPI 中的 LSI RAID 庫存

來源: www.habr.com

添加評論