Ad Widget

Collapse

Сбор данных с "Умных" панелей розеток для серверных шкафов. Vertiv Geist Rack PDUs

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Wadim_Sch
    Member
    • Feb 2022
    • 83

    #1

    Сбор данных с "Умных" панелей розеток для серверных шкафов. Vertiv Geist Rack PDUs

    Сам сбор данных не вызавает каких-то сложностей. Сложности возникают с дальнейшей обработкой и отображением информации.
    Собственно есть несколько серверных комнат c кучей шкафов. В шкафах стоит оборудование клиентов. При этом в одном шкафу могут быть сразу несколько клиентов, а так же оборудование одного клиента может находиться как в одном шкафу так и в нескольких.
    Хотелка в том чтобы собрать информации о потребляемой электроэнергии каждым клиетном в отдельности.
    С этих PDU можно получить информацию по SNMP как для всей PDU так и для каждой фазы, а так-же для каждой розетки. Идентификатором клиента могло бы служить поле Lable которое можно редактировать по http и потом получить в Zabbix по SNMP. То есть на всех розетках клиента во всех шкафах мы можем написать его имя как идентификатор.

    Discovery rule для розетор выглядит следующим образом:

    discovery[{#FACTORY_NAME},1.3.6.1.4.1.21239.5.2.3.6.1.2,{#US ER_DEFINED_NAME},1.3.6.1.4.1.21239.5.2.3.6.1.3,{#O UTLET_ADMIN_STATUS},1.3.6.1.4.1.21239.5.2.3.5.1.4, {#OUTLET_OPER_STATUS},1.3.6.1.4.1.21239.5.2.3.6.1. 25]
    #FACTORY_NAME - это заводское и розетки: Outlet 1, Outlet 2, ....
    #USER_DEFINED_NAME - это как раз поле "Lable" в котором можно написать имя клиента ("Test Customer 1" например)

    Filter (AND):
    {#OUTLET_ADMIN_STATUS} matches ^1$
    {#OUTLET_OPER_STATUS} does not match ^0$
    то есть я делаю Item-ы только для розеток которые имеют ADMIN_STATUS=Up и которые сейчас в работе OPER_STATUS=Up. Точно так же как для портов коммутатора или маршрутизатора.

    Далее идет один из Item-прототипов, собственно для данный по потреблению в W/h
    Click image for larger version

Name:	1.jpg
Views:	291
Size:	91.5 KB
ID:	486951

    и второй по потреблению в месяц:
    Click image for larger version

Name:	2.jpg
Views:	229
Size:	83.8 KB
ID:	486952

    Данные собираются, всё хорошо, теперь их надо суммировать и визуализировать. Вот тут-то и начинаются загвоздки.
    Хотел сделать дашборд cо страницами для каждого клиента. На странице что-то вроде таблицы со строками с именами Хостов (PDU) и столбцами Потребленная энергия всего по розетке и Потребленная энергия в месяц по розетке
    В новом виджите "Top hosts" Zabbix 7 который теперь советуют использовать вместро старого "Data overview" нет возможности в поле "Item name" задать имена
    Item-ов используя маску.
    Click image for larger version

Name:	3.jpg
Views:	232
Size:	72.2 KB
ID:	486953
    Здесь-то я и хотел отфильтровать все розетки по имени клиетна: #USER_DEFINED_NAME (Test Customer 1 это и есть имя клиента)
    Старый виджит "Data overview" тоже не помогает, там можно только по тэгам фильтровать.
    Это была первая загвоздка.

    Теперь вторая.
    Задача все-таки стоит собрать данные по потреблению для каждого клиента.
    Как мне здесь подсказалиhttps://www.zabbix.com/forum/in-russ...82%D0%BE%D0%B2
    сделал Item на хосте zabbix-server, но оказалось, что функция last_foreach может фильтровать только по ключу Item-a и/или по группе/тэгу хостов. Использовать имя Item-a для фильтрации нельзя.
    Создать прототип Item-a с таким ключём, чтобы в нем было ещё и имя клиента что-то вреде:
    Click image for larger version

Name:	4.jpg
Views:	227
Size:	120.4 KB
ID:	486954

    тоже не удаётся.

    Есть ли выход из ситуации? Мне не хватает функционала Zabbix или всё-таки мозгов?
  • Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    #2
    А разве нельзя в прототипе элемента данных указать, что его нужно пометить тегом с именем, скажем, "client" и значением, которое берётся из LLD-макроса {#USER_DEFINED_NAME} ?
    И далее использовать этот тег для фильтрации как в виджете Data overview (который, хотя и устарел, но всё ещё поддерживается, пока ему нет полноценной замены), так и в функции last_foreach ?

    Comment

    • Wadim_Sch
      Member
      • Feb 2022
      • 83

      #3
      Спасибо!
      Хотел же ещё спросить можно ли в тег как-то записать значение {#USER_DEFINED_NAME}. Оказалось можно. Про функцию last_foreach я сначала думал что можно использовать только теги хостов а не Item-ов. В итоге получилось следующее.
      Тег на Item-прототипe для данныx по потреблению в W/h на розетке:
      Name: PDU_Client, Value: AllEnergy_{#USER_DEFINED_NAME}
      Формула Item на хосте zabbix-server для суммирования значений по клиенту "Test Customer 1" выглядит так:
      sum(last_foreach(/*/pduOutletMeterEnergy.[*]?[group="Energy_PDUs" and tag="PDU_Client:AllEnergy_Test_Customer_1"]))
      За текущий месяц:
      sum(last_foreach(/*/pduOutletMeterEnergyCurrentMonth.[*]?[group="Energy_PDUs" and tag="PDU_Client:EnergyCurrentMonth_Test_Customer_1 "]))
      Тестовый дашборд:

      ​Причем вверху это старый виджет Data overview, внизу - новый Top hosts. Хотелось бы конечно чтобы разработчики допилили виджет Top hosts, чтобы он вобрал в себя возможности Data overview. В Top hosts можно пидписать и отсортировать столбцы, что я нохожу очень полезным, потому как "Outlet 1 Test Customer_..." в Data overview как-то не очень информативно. С другой стороны в Top hosts отсутствует возможность работы с тегами или масками имен или ключей Item-ов.

      Eщё один вопрос: поле "Lable" (#USER_DEFINED_NAME) может содержать имя клиента с пробелами. То есть тег тоже может получиться с пробелами. Нужно ли экранировать пробелы в формуле и как?
      sum(last_foreach(/*/pduOutletMeterEnergy.[*]?[group="Energy_PDUs" and tag="PDU_Client:AllEnergy_Test_Customer_1"]))​

      Comment

      Working...