Ad Widget

Collapse

Получение данных через ipmi и hp dl380 g7

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • avk
    Member
    • Jul 2013
    • 44

    #1

    Получение данных через ipmi и hp dl380 g7

    Zabbix 2.2.2
    CentOS 6.5 x64
    Пытаемся мониторить модель сервера HP DL380 G7 через iLO. Температуру показывает. Проблемы с Power Supply.
    Если с сервера делать ipmitool -H 10.228.16.9 -I lanplus -U zabbix -P zabbix sensor
    то выдает для Power Supply
    Power Supply 1 | 35.000 | Watts
    Power Supply 2 | 135.000 | Watts
    Zabbix же показывает для них по 1 Watts.

    Как поправить?
    Attached Files
  • avk
    Member
    • Jul 2013
    • 44

    #2
    Для моделей hp dl380 g6 и g5 такой же эффект.

    Comment

    • aib
      Senior Member
      • Jan 2014
      • 1615

      #3
      Эта проблема существовала еще в 2011 году, судя по постингу от Zaniwoop
      IPMI frustrations
      Sincerely yours,
      Aleksey

      Comment

      • avk
        Member
        • Jul 2013
        • 44

        #4
        И похоже не решилась еще.

        Comment

        • Smersh
          Member
          • Jul 2013
          • 49

          #5
          Та же проблема на BL460c c датчиками 'Power Meter' и 'Virtual Fan'
          В логах zabbix'a:
          Code:
          ...Added sensor: host:'192.168.x.x:623' id_type:0 id_sz:12 id:'Power Meter' reading_type:0x9 ('discrete_device_enable') type:0x3 ('current') full_name:'(7.2).Power Meter'
          ...Added sensor: host:'192.168.x.x:623' id_type:0 id_sz:12 id:'Virtual Fan' reading_type:0xa ('discrete_availability') type:0x4 ('fan') full_name:'(7.1).Virtual Fan'
          Проблема похоже в том, что эти датчики выдают два типа значения. Первое - дискретное (состояние) и второе некую величину. Однако zabbix (или openipmi) руководствуясь значением 'reading_type', определяет их как дискретные и считывает только значения состояния.
          Code:
          Locating sensor record...
          Sensor ID              : Power Meter (0x10)
           Entity ID             : 7.3
           Sensor Type (Discrete): Current
           Sensor Reading        : [B][COLOR="red"]114 Watts[/COLOR][/B]
           States Asserted       : Availability State
                                   [[B][COLOR="red"]Device Enabled[/COLOR][/B]]
          Думаю, пока единственный вариант использовать пользовательские параметры в агенте. Можно еще через 'простые проверки' скриптом (ipmitool), но это вероятно будет большой нагрузкой на сервер.
          Last edited by Smersh; 20-03-2014, 09:30.

          Comment

          • pyatochkin
            Junior Member
            • Apr 2019
            • 1

            #6
            Проблема до сих пор актуальна. Нет ли каких-либо патчей для решения проблемы?

            Comment

            • vegorov
              Junior Member
              • Feb 2020
              • 2

              #7
              Originally posted by pyatochkin
              Проблема до сих пор актуальна. Нет ли каких-либо патчей для решения проблемы?
              Делай через внешнюю проверку, скриптом, другого решения я не нашел.

              Code:
              ipmitool -U "$1" -P "$2" -H "$3" -I lanplus -L user sensor get "$4" | grep "Sensor Reading" | awk '{print $4}'

              Comment

              • Victor Sklyarov
                Senior Member
                • Apr 2016
                • 184

                #8
                А через WMI и UserParameter Не хотите? Не проблема опросить любой сенсор. Мне мощность не нужна была. Подставьте вместо "path HP_NumericSensor " путь к своим Power Meter
                Батник принимает один параметр -имя проверки. Задача обработки дать ОК или номер сбойного элемента.
                echo off
                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 Просто выводим статус 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!

                )
                )
                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
                )
                )
                )

                IF %Exist%==true (
                echo %LIST%
                ) ELSE (@echo Bad parameter)
                EndLocal
                exit

                Comment

                • vegorov
                  Junior Member
                  • Feb 2020
                  • 2

                  #9
                  Originally posted by Victor Sklyarov
                  А через WMI и UserParameter Не хотите? Не проблема опросить любой сенсор. Мне мощность не нужна была. Подставьте вместо "path HP_NumericSensor " путь к своим Power Meter
                  Батник принимает один параметр -имя проверки. Задача обработки дать ОК или номер сбойного элемента.
                  echo off
                  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 Просто выводим статус 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!

                  )
                  )
                  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
                  )
                  )
                  )

                  IF %Exist%==true (
                  echo %LIST%
                  ) ELSE (@echo Bad parameter)
                  EndLocal
                  exit
                  Ваше решение наверняка рабочее и кому то пригодится, спасибо, что не поленились ответить. Скрипт, что опубликовал выше, помещается в одну строчку и получает, то, что именно и нужно было автору данной темы, получить значение блока питания в ваттах, в моем случае нужна была скорость вентиляторов.
                  Last edited by vegorov; 27-02-2020, 18:45.

                  Comment

                  Working...