Ad Widget

Collapse

HP ProLiant DL360 Gen9 (не отдаёт информацию о HDD)

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Steal
    Member
    • May 2020
    • 44

    #1

    HP ProLiant DL360 Gen9 (не отдаёт информацию о HDD)

    Добрый день, форумчане. Помогите советом. Есть хранилище HP ProLiant DL360 Gen9 , которое мониторится с помощью zabbix 5.0.3 как по SNMP, так и по IPMI. Параметры температуры, вентиляторов, блоков питания, ОЗУ и т.п. получаю без проблем. Но ни один из протоколов не даёт информацию по HDD. А при подключении к серверу по iLo, вкладка Storage выдаёт такую надпись "There are no drives available in this system." Может кто сталкивался с такой проблемой? (Прошивка iLo не решила проблему)
  • Victor Sklyarov
    Senior Member
    • Apr 2016
    • 184

    #2
    Есть два пути.
    1.
    Установите HP Insight Management WBEM Providers https://support.hpe.com/hpsc/swd/pub...471baddb6eadfe
    Далее вы получаете доступ к пространству имён WMI в котором содержится информация о состоянии дисков, массива, датчиков и пр. Я писал скрипт для получения информации очень давно, когда ещё не было команды wmigetall. Поэтому подучал все параметры через утилиту WMIC.
    Ниже работающий скрипт выдающий OK или же номер сбойного диска и его состояние. На вход он получает имя требуемого параметра. Скрипт не рассчитан на все случаи жизни. У меня были простые конфигурации с одним RAID контролером. Наверное можно не использовать ExternalParameters, а получать всю информацию через wmigetall, а затем через предобработку вытаскивать нужное.

    echo off
    rem Version 3.0
    set class=%1
    SetLocal EnableExtensions EnableDelayedExpansion
    set status=
    set Exist=false
    set LIST=
    set numerr=0
    rem Возвращает OK или состояние и номер(а) сбойного диска(ов) Если RAID контролер в состоянии 6 (ошибка), состояние диcков недоступно, поле будет пустое
    rem Описание статусов - взять из описания HP
    IF %class%==HP_Diskdrive (
    for /F "tokens=1-4* delims={,} " %%i in ('WMIC /Namespace:\\root\hpq path HPSA_Diskdrive get ElementName^,OperationalStatus ^|FIND "Port"') do (
    set Exist=true
    if %%l NEQ 2 (
    set numerr=1
    if %%l==5 set status=Predictive Failure
    if %%l==6 set status=Error
    set LIST=!LIST!%%j %%k !status!
    )
    )
    IF !Exist!==true (
    IF !numerr!==0 (
    set LIST=OK
    rem echo !LIST! !Exist! !numerr!
    )
    )
    )
    rem Просто выводим статус RAID контроллера и преобразовываем значения в статус через zabbix
    rem Описание статусов - взять из описания HP
    IF %class%==HP_RAID (
    for /F "tokens=1,2 delims={} " %%i in ('WMIC /Namespace:\\root\hpq path HPSA_Arraysystem get OperationalStatus ^,CreationClassName ^|FIND "HPSA"') do (
    set Exist=true
    if %%j NEQ 2 (
    set numerr=1
    if %%j==3 set status=Degrade
    if %%j==6 set status=Error
    set LIST=!status!
    rem Удаляем кавычки
    rem set LIST=!LIST:"=!
    )
    )
    IF !Exist!==true (
    IF !numerr!==0 (
    set LIST=OK
    )
    )
    )
    IF %class%==HP_Fan (
    for /F "tokens=1-3* delims={} " %%i in ('WMIC /Namespace:\\root\hpq path HP_Fan get Name^, OperationalStatus ^|FIND "Fan"') do (
    set Exist=true
    if %%k NEQ 2 (
    set numerr=1
    set LIST=!LIST!%%i %%j %%l
    )
    )
    IF !Exist!==true (
    IF !numerr!==0 (
    set LIST=OK
    )
    )
    )
    rem Возвращает OK или температуру и номер(а) температурного датчика(ов) превысившего установленные предельные значения
    IF %class%==HP_NumericSensor (
    for /F "tokens=1-5 delims={} " %%i in ('WMIC /Namespace:\\root\hpq path HP_NumericSensor get Name^,CurrentState^,OperationalStatus^|FIND "Sensor"') do (
    set Exist=true
    if %%m NEQ 2 (
    set numerr=1
    set LIST=!LIST! %%l-%%i
    )
    )
    IF !Exist!==true (
    IF !numerr!==0 (
    set LIST=OK
    )
    )
    )
    rem echo %Exist%
    IF %Exist%==true (
    echo %LIST%
    ) ELSE (@echo Bad parameter)
    EndLocal
    exit

    2. Использовать возможности командной строки утилиты для RAID контроллера типа SSACLI. Например в серверах G10 первый путь недоступен. Вот пример обнаружения:

    SetLocal EnableExtensions EnableDelayedExpansion
    set LIST=[
    set LISTC=[
    set LISTA=
    set LISTD=
    IF %1==discovery (
    rem For discovery. First parameter - discovery, second parameter - contr, array, disk
    for /F "tokens=1-9*" %%a in ('C:\zabbix\script\ssacli.exe controller all show') do (
    set CONTRNAME=%%a %%b %%c %%d
    set CONTRADDR=%%i
    set LISTC=!LISTC!{"{#CONTRNAME}":"%%a %%b %%c %%d","{#CONTRADDR}":"%%i"},
    for /F "tokens=1-2*" %%k in ('C:\zabbix\script\ssacli.exe controller slot^=%%i array all show ^| FINDSTR /C:" Array"') do (
    set ARRNAME=%%k %%l
    set ARRADDR=%%l
    set LISTA=!LISTA!{"{#CONTRNAME}":"!CONTRNAME!","{#CONT RADDR}":"!CONTRADDR!","{#ARRNAME}":"%%k %%l","{#ARRADDR}":"%%l"},
    for /F "tokens=1-6* delims=,() " %%A in ('C:\zabbix\script\ssacli.exe controller slot^=%%i array %%l physicaldrive all show ^| FINDSTR " physicaldrive"') do (
    set LISTD=!LISTD!{"{#CONTRNAME}":"!CONTRNAME!","{#CONT RADDR}":"!CONTRADDR!","{#ARRNAME}":"!ARRNAME!","{# ARRADDR}":"!ARRADDR!","{#DISKNAME}":"HDD %%C %%D %%E %%F","{#DISKADDR}":"%%B"},
    )
    )
    )

    if %2==contr (echo !LISTC:~0,-1!])
    if %2==array (echo [!LISTA:~0,-1!])
    if %2==disk (echo [!LISTD:~0,-1!])
    )
    Last edited by Victor Sklyarov; 07-12-2020, 17:13.

    Comment


    • Steal
      Steal commented
      Editing a comment
      Что-то не удалось запустить данный скрипт. Может есть у кого-то готовый скрипт или документация по его написанию
  • Victor Sklyarov
    Senior Member
    • Apr 2016
    • 184

    #3
    Скрипт рабочий, стоит более чем на 2000 северах. Если вы копируете текст с сайта, вставьте его в Notepad++ и проверьте кодировку и отсутствие всяких лишних символов. Как известно все bat файлы работают в кодировке OEM 866. Выполните на сервере просто команду WMIC /Namespace:\\root\hpq path HPSA_Diskdrive get ElementName,OperationalStatus или любую из скрипта, вызывающую WMIC. Если она не работает, то это значит, что у вас либо WBEM не установлен, либо не прописан путь к WMIC, либо вообще WMI не работает, что тоже бывает. И только когда вы добьётесь получения данных от WMI можно пробовать тестировать через zabbix_get, но сначала в конфиге агента прописать UserParameter=hpserver[*], c:\zabbix\scripts\server.bat $1, где sever.bat, имя скрипта, на ваше усмотрение, место его расположения тоже на ваше усмотрение, имя параметра hpserver- на ваше усмотрение. Далее проверяем прямо на сервере в командной строке zabbix_get -s 127.0.0.1 -k hpserver[HP_RAID] Имена передаваемых в скрипт параметров видны в скрипте в командах IF %class%==
    Last edited by Victor Sklyarov; 10-12-2020, 10:26.

    Comment

    Working...