GLPI中的LSI RAID库存



在我的工作中,我经常会因为缺乏有关基础结构的信息而感到困扰,并且随着服务服务器数量的增加,这变成了一种真正的折磨。即使是在小型组织中进行管理时,我也始终想知道什么地方,什么地方被卡住,哪个人负责哪个硬件或服务,最重要的是,要修复每个人的变更。当您来到一个新地方并遇到某种事件时,需要很长时间才能找到此信息。接下来,我将告诉您在RuVDS中必须面对的问题以及如何解决标题中指出的问题。



背景



作为企业管理员,我在数据中心的经验很少,但是我发现RackTables不在眼前。它清楚地显示了一个机架,其中包含所有服务器,UPS,交换机以及它们之间的所有连接。 RuVDS没有这样的系统,只有具有服务器,其某些组件,机架号等信息的Excel /纸质文件。使用这种方法,很难跟踪小型组件的更改。但是服务器最重要且经常更换的消耗品是磁盘。保持有关驱动器运行状况及其战略储备的最新信息非常重要。如果驱动器从RAID阵列中崩溃而无法快速更换,则最终可能导致致命的后果。因此,我们确实需要一个跟踪磁盘位置及其状况的系统,以便了解我们可能还不够,需要购买哪些型号。



GLPI是一种救援产品,旨在提高IT部门的绩效并使他们达到ITIL的理想状态,这是一项开源产品。除了设备库存和机架管理之外,它还具有知识库,服务台,文档管理等。 GLPI有许多插件,包括FusionInventory和OCS Inventory,可让您通过代理安装和SNMP自动收集有关计算机和其他设备的信息。您可以在其他文章(最好是官方文档)中阅读更多有关安装GLPI和插件的信息。您可以在现成的LAMP模板上将其安装在我们的主机上



但是,在部署代理后,我们将在GLPI中打开计算机组件,并看到以下内容:





问题在于,所有插件都无法看到LSI RAID阵列中的物理磁盘信息。在了解了如何使用PowerShell脚本lsi-raid.ps1在Zabbix中进行监视以解决此问题后我决定编写一个类似的用于将信息传输到GLPI的脚本

可以使用控制器制造商的实用程序来获取有关阵列中磁盘的数据,对于LSI,则为StorCLI。从中您可以获取JSON格式的数据,将其解析并将其传递给GLPI API。我们将磁盘绑定到FusionInventory已经创建的计算机。重复执行后,脚本将更新磁盘上的数据并添加新磁盘。Send-RAIDtoGLPI.ps1脚本本身位于GitHub上接下来,我将向您展示如何使用它。



需要什么



  1. GLPI 9.5.1 ( )
  2. FusionInventory Windows
  3. Windows 2012 R2 ( ) , management-VM , PowerShell 4
  4. MegaRAID
  5. PowerShell — PSGLPI
  6. GLPI Admin API, UserToken AppToken


重要的一点。由于某种原因,GLPI对于磁盘模型有2个不同的实体,但是没有“媒体类型”属性。因此,为了记录HDD和SSD的属性,我决定使用下拉列表“硬盘模型”(front / devicemodel.php?Itemtype = DeviceHardDriveModel)。该脚本需要GLPI数据库中的这些值,否则它将无法写入有关磁盘模型的数据。因此,您必须首先输入HDD,然后将SSD放入此空白列表,以便数据库中这些元素的ID为1和2。如果还有其他元素,则在HDD和SSD之后将Send-RAIDtoGLPI.ps1脚本的这一行中的对应ID代替1和2。 :



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


如果您不想这样做,或者以其他方式使用此下拉列表,则只需从脚本中删除此行即可。



您还需要将磁盘的状态添加到“项目状态”(/front/state.php)。我添加了状态“ MediaError”(至少有一个磁盘访问错误)和“ OK”,这是脚本中传递其ID的行,“ OK”为“ 2”,“ MediaError”为“ 1”:



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中的计算机的“组件”部分中看到磁盘。



结果



现在,通过转到菜单“设置”->“组件”->“硬盘驱动器”中的GLPI,我们可以单击驱动器型号并查看其编号,以了解我们需要购买的产品。








All Articles