Несколько лет назад я создал надежное и недорогое устройство SNMP для мониторинга и управления средой центра обработки данных, и в этом посте я расскажу вам обо всем процессе проектирования, который я прошел, а также обо всех функциях. это сетевое оборудование способно. Можно с уверенностью сказать, что эта статья получилась довольно длинной, поэтому, если что-то было недостаточно ясно, не стесняйтесь обращаться ко мне за дополнительными разъяснениями.

Результатом этой работы стал документ под названием Встроенная система управления средой реального времени для центров обработки данных, опубликованный в XXIII CIENTEC 2017.

Обзор

Я разделил эту статью на следующие категории:

  • Сетевой протокол SNMP
  • Дизайн системы
  • Аппаратное обеспечение постоянного тока
  • Программное обеспечение для управления постоянным током
  • Приложение в центре обработки данных
  • Анализ данных

Сетевой протокол SNMP

Простой протокол управления сетью (SNMP) - это сетевой протокол, используемый для управления сетью. Он используется для сбора и управления сетевыми устройствами, такими как маршрутизаторы, коммутаторы, серверы, концентраторы или любое другое оборудование, реализующее протокол SNMP. Люди обычно смешивают SNMP с SMTP, поэтому не заблуждайтесь, SNMP означает управление сетью, а не протокол электронной почты.

При этом я не буду подробно объяснять, как работает этот протокол, поскольку это не является целью данной статьи. Обычно существует узел-менеджер, который получает и отправляет данные узлам агента. Менеджер всегда отправляет запрос GET / SET и всегда получает ответ GET / SET.

Другими словами, устройства SNMP предоставляют данные через переменные, используя базу данных Management Information Base (MIB). В настоящее время существует три версии этого протокола, из которых я использовал SNMPv1. Если вы хотите полностью разобраться в этом протоколе, рекомендую прочитать RFC 1157.

Системный дизайн

Теперь, когда у вас есть общее представление о том, что такое SNMP, давайте поговорим о решении, разработанном самим. Внутри центра обработки данных мы можем найти несколько типов электронного оборудования, а также механические системы, такие как система контроля температуры, которая гарантирует, что окружающая среда всегда не соответствует стандартам. В небольшом дата-центре рядом с каждой размещается несколько полностью оборудованных стоек, а для контроля температуры в помещении используется система климат-контроля. Некоторые определенные зоны центра обработки данных накапливают больше тепла, чем другие, как показано на изображении ниже.

На рынке доступно несколько устройств, которые могут контролировать температуру стойки и центра обработки данных в целом. Некоторые умные стойки предлагают эту функцию прямо из коробки, что довольно удобно (и дорого). Как вариант, вы можете купить APC NetBotz, чтобы оборудовать стойку для мониторинга вашего центра обработки данных. Несмотря на то, что это одно из самых надежных устройств для этой работы, его стоимость очень высока. Будьте готовы потратить сотни, если не тысячи долларов на его покупку. Если вы живете за пределами США и должны импортировать одно из этих устройств, покупка этого оборудования даже не вариант из-за безумно высокой конечной стоимости.

Помня об этом, я создал DC Control, чрезвычайно дешевый и надежный агент SNMP для центров обработки данных. Стоимость материала для этого устройства составляет около 80 долларов США, что почти в 10 раз меньше, чем у конкурентов.

На следующей диаграмме показана общая архитектура, использованная в этом проекте.

Обратите внимание, что DC Control не только контролирует температуру в центре обработки данных, но также открывает дверцу стойки и управляет системой кондиционирования воздуха.

Устройство управления постоянным током

Устройство DC Control построено на микроконтроллере Arduino. Он имеет ЖК-экран для отображения конфигурации и состояния оборудования.

Датчик температуры - это датчики DHT11 и DHT22. Я сделал все разъемы и кабели совместимыми с обычной патч-панелью RJ45, чтобы сделать обслуживание простым и понятным.

В итоге DC Control превратился в хорошо сложенное устройство, готовое к установке в любую стойку.

Микроконтроллер

Как я уже упоминал выше, микроконтроллер внутри DC Control - это ATmega328, широко известный как Arduino.

Я использовал Ethernet Shield с Arduino для подключения Ethernet 10/100.

Вместе эта комбинация дала Arduino невероятную мощность. Все, что мне оставалось делать, это разработать электронную схему и построить код.

Внутри частного дерева протокола SNMP, iso.organization.dod.internet.private (1.3.6.1.4), я создал все объекты, которые мы используем в нашей системе. Обратите внимание, что для каждого действия есть команда.

Используя программное обеспечение Wireshark, после настройки связи между сервером (менеджером) и агентом (DC Control) мы можем увидеть связь SNMP для команды проверки температуры.

Пришло время проверить сам код. Я создал библиотеку SNMP на C для использования в этом проекте. Я основывал разработку этой библиотеки на предыдущей работе, выполненной Агентуино в 2012 году.



Я расскажу о нескольких моментах, касающихся прошивки микроконтроллера, которую я создал. Сначала я определил набор команд.

const static char snmpTEMP1[] PROGMEM   = "1.3.6.1.2.1.6540.1.0";  const static char snmpTEMP2[] PROGMEM   = "1.3.6.1.2.1.6540.2.0";

Функция loop () постоянно проверяет наличие новых блоков данных протокола (PDU), полученных от менеджера с помощью метода pduReceived ().

Например, при получении запроса GET для датчика температуры 1 микроконтроллер считывает датчик, кодирует его значение, преобразует его в PDU и отправляет его в ответе GET.

...
else if ( strcmp_P(oid, snmpTEMP1 ) == 0 ) {
 status = pdu.VALUE.encode(SNMP_SYNTAX_OCTETS, TemperatureDHT); 
 pdu.type = SNMP_PDU_RESPONSE;        
 pdu.error = status;      
}
...

Еще один момент, о котором стоит упомянуть, заключается в том, что внутренний цикл также проверяет наличие обновлений в переменных (IP-адреса, временные параметры, имя и т. Д.), Поэтому всякий раз, когда эти значения меняются, он обновляет ЖК-дисплей устройства.

Все устройства оснащены внутренним термистором с отрицательным температурным коэффициентом (NTC) для проверки внутренней температуры. Чтобы отобразить ее значение, была создана функция для расчета реального значения температуры на основе ее электрического сигнала. Уравнение Стейнхарта – Харта использовалось для получения более точного коэффициента для этой операции.

Температура была настроена на проверку каждые 1 секунду.

float Termistor() {  
 Temp = log(9060.0*((1024.0/analogRead(TERMISTOR_PIN)-1))); 
 Temp = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * Temp *  Temp ))* Temp );  
 Temp = Temp - 273.15; // Convert Kelvin to Celcius         
 double multiplier = pow(10, 1 || 0);  
 Temp = round(Temp * multiplier) / multiplier;  
 return Temp;
}

Электронная схема

Что касается печатной платы, то в нее было вложено много усилий. Во-первых, я создал двух поставщиков энергии для питания системы. Затем я перешел к плате управления, которая отвечает за управление кондиционером и считывание показаний датчиков температуры. Я не буду тратить уйму времени на объяснение того, как работает схема, поэтому, если вы хотите узнать больше о ее внутренних компонентах, я рекомендую вам прочитать опубликованную мной статью или 77-страничное руководство, которое я создал.

Для создания печатной платы (PCB) я использовал известный метод создания самодельных печатных плат, описанный здесь.

Конечный результат был вполне удовлетворительным, с красивыми медными линиями и хорошим внешним видом.

Ниже вы можете увидеть изображение построенного оборудования изнутри.

Программное обеспечение для управления постоянным током

Наконец, я создал мультиплатформенное настольное приложение для управления и мониторинга центра обработки данных с помощью DC Control. В качестве стека был выбран стек Java из-за его мультиплатформенных возможностей.

Для графического интерфейса я использовал нашу старую школу Java Swing с ее несколькими возможностями JFrame. Пожалуйста, не суди меня. В то время, в 2015 году, Java Swing была реальной вещью (хотя некоторые могут возражать против этого). В любом случае, помимо нескольких графиков для отслеживания температуры, это программное обеспечение имеет окно для управления открыванием дверцы стойки, а также кондиционером.

Также есть возможность установить температуру, при которой кондиционер будет автоматически включаться. Аварийный сигнал отображается всякий раз, когда температура агента превышает заданное значение, таким образом включается кондиционер.

Как всегда, исходный код системы доступен в моем GitHub.



Теперь давайте посмотрим на реальное приложение и проанализируем практические результаты.

Сценарий использования

У меня была возможность установить и протестировать это оборудование в одном из многих дата-центров RNP, которая является крупным игроком на интернет-рынке Бразилии.

Я создал частную сеть LAN и в течение нескольких часов наблюдал за средой центра обработки данных.

Был создан сервер Zabbix, чтобы я мог создать панель управления и управлять сигналами тревоги по электронной почте. Кроме того, данные, извлеченные из APC NetBooz, сравнивались с данными, извлеченными из устройства DC Control.

Результаты

Ниже мы можем видеть график температуры за один час, извлеченный из системы управления постоянным током.

Я создал в Zabbix приборную панель, чтобы отслеживать не только температуру, но и состояние кондиционера и дверцы стеллажа.

Для подтверждения анализа температура сравнивалась с показаниями ACP NetBooz.

Как видно, DC Control показывал довольно точные и точные показания.

В качестве плюса я установил на смартфон приложение Android с функциями клиента SNMP и подключил его к устройству DC Control, чтобы проверить его датчики.

В целом все испытания прошли успешно, включая автоматическое управление кондиционером.

Вывод

DC Control оказался отличным устройством с отличными функциями для тех, кто ищет доступный по цене монитор среды центра обработки данных. Все в этом проекте с открытым исходным кодом, и вы можете воспроизводить его как хотите.

Надеюсь, вам понравился этот проект, и если у вас возникнут какие-либо вопросы, напишите мне, пожалуйста. Буду рад услышать ваше мнение об этом проекте.

Спасибо, что прочитали!

Www.jaimedantas.com