Linux HTTP -> Температура процессора

Рассмотрим пример который позволит отслеживать температуру процессора вашего Сервера, ПК или Майнинг фермы на Linux.

Что нам потребуется:

  • Компьютер: Любой компьютер с операционной системой Linux
  • Программы:
    • nano — консольный текстовый редактор
    • grep — утилита командной строки, которая находит на вводе строки
    • cURL — программа командной строки, для работы с HTTP
    • lm_sensors – программа командной строки, позволяющая отслеживать температуру
    • cron —демон, использующийся для периодического выполнения заданий в определённое время.

Добавление и настройка устройства:

  1. Добавим новое устройство в VizIoT с именем «Тест температура процессора»
  2. Настроим параметры устройства. У нас в примере будет четырех ядерный процессор ми будем отслеживать температуру процессора и каждого ядра отдельно для этого надо добавить пять параметров:
    1. Ключ phys0 с типом «Температура, °C»
    2. Ключ core0 с типом «Температура, °C»
    3. Ключ core1 с типом «Температура, °C»
    4. Ключ core2 с типом «Температура, °C»
    5. Ключ core3 с типом «Температура, °C»
  3. В «Основных настройках» устройства скопируем Ключ доступа и Пароль доступа.

Настройка программ.

Для отправки данных будем использовать «cURL», а для получения данных об температуре процессора будем использовать пакет «lm_sensors».

Обычно, пакеты «cURL» и «lm_sensors» уже предустановлен в большинстве систем и сконфигурирован для работы. Но если в вашей системе их нет, то программы не так сложно установить.

  • В RedHat или CentOS:
    sudo yum install lm_sensors curl
  • В Debian, Ubuntu или Linux Mint:
    sudo apt-get install lm-sensors curl

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

> sudo sensors-detect

Утилита sensors-detect пытается найти все установленное оборудование и загрузить рекомендованные для него модули ядра. В большинстве случаев вам будет достаточно нажимать кнопку Enter в ответ на все вопросы программы, тем самым давая ответы по умолчанию.

Настройка завершена и теперь можно перейти к просмотру доступной температуры. Для этого наберите:

> sudo sensors

В ответ получите примерно такой текст:

coretemp-isa-0000
Adapter: ISA adapter
Physical id 0:  +29.0°C  (high = +80.0°C, crit = +100.0°C)
Core 0:         +23.0°C  (high = +80.0°C, crit = +100.0°C)
Core 1:         +26.0°C  (high = +80.0°C, crit = +100.0°C)
Core 2:         +24.0°C  (high = +80.0°C, crit = +100.0°C)
Core 3:         +24.0°C  (high = +80.0°C, crit = +100.0°C) 

Проверка команд.

Для того чтобы отправлять значение на сервер нам для начала надо вытащить нужное значение с данных строк для этого воспользуемся командой grep для фильтрации значений команды sensors. Пример команды на получения температуры «Core 0»:

sensors | grep -Eo '^Core 0: +\+[0-9]+\.[0-9]+' | grep -Eo '\+[0-9]+\.[0-9]+'

Для отправки HTTP GET запросов будем использовать CURL. Пример команды с запросом:

curl --silent "http://VizIoT.com:48656/update?key=______________&pass=______________&temp=28" > /dev/null

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

Создания скрипта.

Создадим скрипт используя текстовый редактор

> nano /var/viziot.sh

Содержание скрипта:

key='_____________'
pass='_________________'
phys0=$(sensors | grep -Eo '^Physical id 0: +\+[0-9]+\.[0-9]+' | grep -Eo '[0-9]+\.[0-9]+')
core0=$(sensors | grep -Eo '^Core 0: +\+[0-9]+\.[0-9]+' | grep -Eo '[0-9]+\.[0-9]+')
core1=$(sensors | grep -Eo '^Core 1: +\+[0-9]+\.[0-9]+' | grep -Eo '[0-9]+\.[0-9]+')
core2=$(sensors | grep -Eo '^Core 2: +\+[0-9]+\.[0-9]+' | grep -Eo '[0-9]+\.[0-9]+')
core3=$(sensors | grep -Eo '^Core 3: +\+[0-9]+\.[0-9]+' | grep -Eo '[0-9]+\.[0-9]+')
curl --silent "http://212.15.131.6:48656/update?key=$key&pass=$pass&phys0=$phys0&core0=$core0&core1=$core1&core2=$core2&core3=$core3" > /dev/null

Чтобы скрипт можно было выполнить ему надо дать права на выполнения

> chmod +x /var/viziot.sh 

Для ежеминутной отправки будем использовать демон cron. Запустим редактор cron

> crontab -e

И в самый конец добавим строку, которая будет запускать скрипт «/var/viziot.sh» каждую минуту:

0-59 * * * * /var/viziot.sh

Добавления виджета:

  1. Создадим новую панель с именем «Тест Сервер»
  2. Добавим виджет «Температура процессора»
    • тип: «График»;
    • устройство: «Тест температура процессора»;
    • параметры: phys0, core0, core1, core2, core3;

Теперь вы все настроили и осталось дождаться отправки данных на сервер.