Мониторинг состояния HP Smart Array
29 Jun 2017Мониторим состояния контролера HP Smart Array c помощью утилиты hpssacli.exe
В процессе ...
Работа с утилитой HP SSA CLI
Просмотр установленных контролеров:
.\hpssacli.exe controller all show
Dynamic Smart Array B140i in Slot 0b (sn: )
Просмотр состояния физических дисков подключенных к контролеру:
.\hpssacli.exe controller slot=0b physicaldrive all show
Dynamic Smart Array B140i in Slot 0b
array A
physicaldrive 2I:0:5 (port 2I:box 0:bay 5, SATA, 1 TB, OK)
physicaldrive 2I:0:6 (port 2I:box 0:bay 6, SATA, 1 TB, OK)
array B
physicaldrive 1I:0:3 (port 1I:box 0:bay 3, SATA, 1 TB, OK)
physicaldrive 1I:0:4 (port 1I:box 0:bay 4, SATA, 1 TB, OK)
physicaldrive 1I:0:2 (port 1I:box 0:bay 2, SATA, 1 TB, OK, spare)
array C
physicaldrive 1I:0:1 (port 1I:box 0:bay 1, SATA, 1 TB, OK)
array D
physicaldrive 2I:0:7 (port 2I:box 0:bay 7, SATA, 1 TB, OK)
physicaldrive 2I:0:8 (port 2I:box 0:bay 8, SATA, 1 TB, OK)
Полный диагностический отчет:
.\hpssacli.exe controller slot=0b diag file=c:\temp\hpssa-diag.zip
Generating diagnostic report...done
Формируется очень подробный отчет в форматах: html, xml, txt.
Скрипт для системы мониторинга Icinga2
<#
.SYNOPSIS
Скрипт для Icinga 2 - Получение информации о состоянии дисков в RAID контроллерах HP Smart Array.
.DESCRIPTION
Используется утитлита hpssacli.exe. В планах анализировать данные о статусе (Status: OK) дисков и темпратуре (Current Temperature (C): 34).
.PARAMETER ControllerSlot
Слот контроллера
.PARAMETER ControllerTarget
Цель контроллера
.OUTPUTS
Массив строк состояния целей (controller, array logicaldrive, physicaldrive) подключенных к контроллеру HP Smart Array/HP Dynamic Smart Array.
.EXAMPLE
check_hpraidctrl_status.ps1 -ControllerSlot 0
OK - Dynamic Smart Array B120i RAID in Slot 0 (Embedded)
Dynamic Smart Array B120i RAID in Slot 0 (Embedded)
Controller Status: OK
array A: OK
array B: OK
logicaldrive 1 (465.7 GB, 1): OK
logicaldrive 2 (931.5 GB, 1): OK
physicaldrive 1I:1:1 (port 1I:box 1:bay 1, 500 GB): OK
physicaldrive 1I:1:2 (port 1I:box 1:bay 2, 500 GB): OK
physicaldrive 1I:1:3 (port 1I:box 1:bay 3, 1 TB): OK
physicaldrive 1I:1:4 (port 1I:box 1:bay 4, 1 TB): OK
.LINK
https://webnote.satin-pl.com
.NOTES
Version: 0.2
Author: Pavel Satin
Email: plsatin@yandex.ru
Creation Date: 20.02.2018
Purpose/Change: Изменение логики и параметров
Version: 0.3
Change Date: 19.10.2018
Purpose/Change: Анализ массива результатов на Failed сообщения
#>
Param(
[Parameter(Mandatory = $false)]
[string]$ControllerSlot = "0",
[Parameter(Mandatory = $false)]
[string]$ControllerTaget = "all"
)
$returnStateOK = 0
$returnStateWarning = 1
$returnStateCritical = 2
$returnStateUnknown = 3
#$ErrorActionPreference = "SilentlyContinue"
function Confirm-HPSSAResult($result) {
# Поиск в массиве строк
$patterns = @("Failed")
foreach ( $line in $result ) {
$count = @($patterns | ? { $line -match $_ }).Length
if ( $count -eq $patterns.Length ) {
$resultFail = $True
$resultFailStr += $line
}
}
if ($resultFail) {
$returnState = $returnStateCritical
Write-Host "Critical - " $result[1]
$resultFailStr
} else {
$returnState = $returnStateOK
Write-Host "OK - " $result[1]
}
$result
[System.Environment]::Exit($returnState)
}
switch ($ControllerTaget) {
"all" {
$result = & "C:\Program Files\HP\hpssacli\bin\hpssacli.exe" controller all show status
$result += & "C:\Program Files\HP\hpssacli\bin\hpssacli.exe" controller slot=$ControllerSlot array all show status
$result += & "C:\Program Files\HP\hpssacli\bin\hpssacli.exe" controller slot=$ControllerSlot logicaldrive all show status
$result += & "C:\Program Files\HP\hpssacli\bin\hpssacli.exe" controller slot=$ControllerSlot physicaldrive all show status
Confirm-HPSSAResult($result)
}
"controller" {
$result = & "C:\Program Files\HP\hpssacli\bin\hpssacli.exe" controller all show detail
Confirm-HPSSAResult($result)
}
"array" {
$result = & "C:\Program Files\HP\hpssacli\bin\hpssacli.exe" controller slot=$ControllerSlot array all show detail
Confirm-HPSSAResult($result)
}
"logicaldrive" {
$result = & "C:\Program Files\HP\hpssacli\bin\hpssacli.exe" controller slot=$ControllerSlot logicaldrive all show detail
Confirm-HPSSAResult($result)
}
"physicaldrive" {
$result = & "C:\Program Files\HP\hpssacli\bin\hpssacli.exe" controller slot=$ControllerSlot physicaldrive all show detail
Confirm-HPSSAResult($result)
}
default {
Write-Host "Не задан параметр ControllerSlot либо неверное имя цели (ControllerTarget: $ControllerTaget)."
[System.Environment]::Exit($returnStateUnknown)
}
}