Ad Widget

Collapse

Мониторинг серверов hp через wmi

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Victor Sklyarov
    Senior Member
    • Apr 2016
    • 184

    #1

    Мониторинг серверов hp через wmi

    Не удаётся получать данные запросом wmi.get из пространства имён HP сервера Proliant.
    Пробую выполнить: zabbix_get -s 127.0.0.1 -k wmi.get["root\hpq","select GroupOperationalStatus from HP_CoolingCollection"] , получаю ZBX_NOTSUPPORTED: Cannot obtain WMI innformation.
    Пробую получить ту же информацию напрямую через консольную утилиту wmic /Namespace:\\root\hpq path HP_HP_CoolingCollection get GroupOperationalStatus Запрос прекрасно выполняется.
    GroupOperationalStatus - это массив 16 элементов. В описании HP говорится следующее: GroupOperationalStatus[0] Represents the most severe cooling redundancy status and non-fault tolerant fan operational status
    Попытка обратиться zabbix_get -s 127.0.0.1 -k wmi.get["root\hpq","select GroupOperationalStatus[0] from HP_CoolingCollection"] заканчивается так же неудачей.
    Как правильно построить запрос?
  • Victor Sklyarov
    Senior Member
    • Apr 2016
    • 184

    #2
    Extend wmi.get functionality to query properties of type array

    В посте ZBX-8506 приводится с++ код для реализации в zabbix агенте возможности доступа к элементу массива
    wmi.get[<namespace>,<query>,<index>]
    <namespace> - WMI namespace
    <query> - WMI query returning a single object
    <index> - index of element if <query> returns object of type array (default value is 0)
    Кто нибудь знает, реализована ли это функциональность в последних версиях zabbix агента?

    Comment

    • Semiadmin
      Senior Member
      • Oct 2014
      • 1625

      #3
      Попробовал получить через zabbix_get значение айтема, который исправно работает в моем заббиксе, тоже получил "Cannot obtain WMI innformation". Может, zabbix_get криво работает с wmi.get?
      Кстати, возможно, у вас лишние кавычки в ключе. У меня работающий ключ выглядит так:
      wmi.get[root\cimv2,Select DeviceID from Win32_LogicalDisk where DeviceID="C:"]

      Comment

      • sadman
        Senior Member
        • Dec 2010
        • 1611

        #4
        Originally posted by semiadmin
        Попробовал получить через zabbix_get значение айтема, который исправно работает в моем заббиксе, тоже получил "cannot obtain wmi innformation". Может, zabbix_get криво работает с wmi.get?
        wmi - это штука хитрая. Многое зависит от того, из под какого аккаунта делается запрос. Потому что иногда чтение происходит с реестра и может тупо не хватать прав на какую-то ветку.

        Comment

        • Semiadmin
          Senior Member
          • Oct 2014
          • 1625

          #5
          Originally posted by sadman
          wmi - это штука хитрая. Многое зависит от того, из под какого аккаунта делается запрос. Потому что иногда чтение происходит с реестра и может тупо не хватать прав на какую-то ветку.
          Насколько я понимаю, zabbix_get обращается к агенту, значит, эккаунт должен быть один и тот же в обоих случаях - тот, под которым работает агент, обычно Local System.

          Comment

          • sadman
            Senior Member
            • Dec 2010
            • 1611

            #6
            Originally posted by Semiadmin
            Насколько я понимаю, zabbix_get обращается к агенту, значит, эккаунт должен быть один и тот же в обоих случаях - тот, под которым работает агент, обычно Local System.
            Так-то да. Просто предупредил на всякий случай, чтобы не сравнивали запросы вручную с консоли Windows и через zabbix_agent, как в первом посте

            А в вашем случае... zabbix_get берет данные не напрямую, а через zabbix_agent. Т.е. загадка какая-то - в одном случае он работает, а в другом нет?

            Comment

            • Semiadmin
              Senior Member
              • Oct 2014
              • 1625

              #7
              Originally posted by sadman
              Так-то да. Просто предупредил на всякий случай, чтобы не сравнивали запросы вручную с консоли Windows и через zabbix_agent, как в первом посте

              А в вашем случае... zabbix_get берет данные не напрямую, а через zabbix_agent. Т.е. загадка какая-то - в одном случае он работает, а в другом нет?
              Ну да. Поэтому я и предложил автору поста попробовать сразу создать айтем в заббиксе, не экспериментируя с zabbix_get.

              Comment

              • Semiadmin
                Senior Member
                • Oct 2014
                • 1625

                #8
                Думаю, zabbix_get просто неправильно воспринимает формат ключа. Если я даю ключ так, как в заббиксе, без лишних кавычек, то он начинает ругаться на invalid parameter "DeviceID", invalid parameter "from", и далее по списку. Если начинаю экспериментировать с кавычками, получаю "Cannot obtain WMI innformation".

                Comment

                • Kos
                  Senior Member
                  Zabbix Certified SpecialistZabbix Certified Professional
                  • Aug 2015
                  • 3404

                  #9
                  Originally posted by Semiadmin
                  Думаю, zabbix_get просто неправильно воспринимает формат ключа. Если я даю ключ так, как в заббиксе, без лишних кавычек, то он начинает ругаться на invalid parameter "DeviceID", invalid parameter "from", и далее по списку. Если начинаю экспериментировать с кавычками, получаю "Cannot obtain WMI innformation".
                  Так это не zabbix_get, а шелл. Попробуйте весь параметр в командной строке целиком заключить в апострофы.

                  Comment

                  • sadman
                    Senior Member
                    • Dec 2010
                    • 1611

                    #10
                    Попробовал у себя:

                    Code:
                    $ zabbix_get -s test_server -k 'wmi.get[root\cimv2,Select DeviceID from Win32_LogicalDisk where DeviceID="C:"]'
                    C:

                    Comment

                    • Semiadmin
                      Senior Member
                      • Oct 2014
                      • 1625

                      #11
                      Originally posted by kos
                      Так это не zabbix_get, а шелл. Попробуйте весь параметр в командной строке целиком заключить в апострофы.
                      Да, вы правы, так работает.

                      Comment

                      • sadman
                        Senior Member
                        • Dec 2010
                        • 1611

                        #12
                        Originally posted by Victor Sklyarov
                        Попытка обратиться zabbix_get -s 127.0.0.1 -k wmi.get["root\hpq","select GroupOperationalStatus[0] from HP_CoolingCollection"] заканчивается так же неудачей.
                        Как правильно построить запрос?
                        Проблема меня заинтересовала и я покопал - WQL, похоже, не поддерживает запросы с индексом массива.

                        Поэтому пришлось снова перейти на темную сторону и накатать на PowerShell небольшой WMI Helper, который помогает строить LLD-JSON из экземпляров, найденных в заданном классе и возвращать значение по индексу массива.

                        Находится всё это дело тут: https://github.com/zbx-sadman/WMI

                        Пример использования можно найти в Template HP Insight Management WBEM Providers - там почти все данные (включая кучу бесполезных, которые стоит отключить), что я смог заполучить со своего Proliant DL360p.

                        Прошу отведать и внести предложения.

                        Comment

                        • pzabortsev
                          Senior Member
                          • Dec 2012
                          • 338

                          #13
                          Глупый вопрос: видимо на сервере что-то должно быть установлено, чтобы можно было пользоваться Вашим шаблоном?

                          На моем ProLiant DL360 G6 нет пространства имен \\root\hpq:
                          Code:
                          PS C:\Users\Admin> wmic /Namespace:\\root\hpq path HP_CoolingCollection get GroupOperationalStatus
                          ОШИБКА.
                          Описание: Неправильное пространство имен

                          Comment

                          • sadman
                            Senior Member
                            • Dec 2010
                            • 1611

                            #14
                            Originally posted by pzabortsev
                            Глупый вопрос: видимо на сервере что-то должно быть установлено, чтобы можно было пользоваться Вашим шаблоном?

                            На моем ProLiant DL360 G6 нет пространства имен \\root\hpq:
                            Code:
                            PS C:\Users\Admin> wmic /Namespace:\\root\hpq path HP_CoolingCollection get GroupOperationalStatus
                            ОШИБКА.
                            Описание: Неправильное пространство имен
                            Да, не обманывает сервер. Нужен HP Insight Management WBEM Providers Pack. В Template Description это написано.

                            Кстати, HP_CoolingCollection у меня на DL360p G8 нет. А на DL360e G8 нет и HP_NumericSensors. Так что на G6 тоже может чего-то не хватать.

                            К слову - в WMI удобней подглядывать с помощью WMI Explorer 2.0

                            Comment

                            • pzabortsev
                              Senior Member
                              • Dec 2012
                              • 338

                              #15
                              Спасибо!
                              И пространство имен появилось, и HP_CoolingCollection в нем есть, и WMI Explorer отличная тулза на первый взгляд

                              Comment

                              Working...