Появилась задача контролировать параметры компьютера и сохранять историю данных. Но не как обычно, загрузка памяти, нагрузка на процессор, но в первую очередь температуры видеокарты, процессора, материнской платы.
Корень задачи пошёл с тех времён, когда было несколько майнинговых ферм и надо было смотреть за параметрами видеокарт.
Но мы не ищем лёгких путей=) Хотелось сделать кроссплатформенное и достаточно легко тиражируемое и при этом достаточно простое решение, что бы можно было развернуть подобную телеметрию на практически любом компе под Win7 - Win10 и, например, на серверах под Linux.
В итоге кросплатформенно не получилось, просто тоже, но методы, использованные при решении задачи достаточно интересны.
Для систем на базе Windows:
Основой системы служит утилита OpenHardwareMonitor, которая собственно собирает данные о системе, и python скрипт, который подключается по интерфейсу wmi к утилите и тянет необходимые данные, обрабатывает их и отсылает в облачный сервис.
В этом примере использовался для простоты и наглядности сервис Народный мониторинг. На нем необходимо зарегистрироваться и можно будет отправлять данные и просматривать историю и настраивать уведомления в зависимости от значений. Базовый период отправки 5 минут.
Настройка
В начале скачиваем с сайта OpenHardwareMonitor саму утилиту. Работа скрипта достоверно проверена с версией 0.9.5. Кроме того у меня в браузере сайт не открылся, видимо блочат его, хотя причина не ясна.
После этого архив распаковываем и папку утилиты помещаем по не очень длинному пути, например "D:\OpenHardwareMonitor".
Запускаем саму утилиту, ставим в ней запуск при старте компьютера.
Для настройки сбора и отправки данных скачиваем с github проекта три файла:
OHW_wmi.py - скрипт, который производит обработку и отправку.
run.cmd - cmd-файл, через который запускаем скрипт из планировщика.
telemetry.xml - задание для планировщика, его надо будет импортировать и скорректировать пути.
Для работы скрипта необходимо установить интерпретатор python версии 3.6. Качаем с официального сайта, при установке обязательно ставим галочку на опции "Path", это необходимо для корректного вызова интерпретатора из командной строки.
После этого в консоли, через "pip" устанавливаем библиотеку для работы с wmi (pip install wmi).
Перед настройкой автоматической отправки данных с компьютера необходимо открыть скрипт в текстовом редакторе (желательно Notepad++, но можно и в обычном блокноте). В строке 10 в кавычках пишем свой логин на narodmon.ru, а в строке 11 можно указать имя компьютера, иначе возьмёт из системы.
Все три файла помещаем в папку OpenHardwareMonitor, затем открываем планировщик задание, для Windows 10 можно воспользоваться поиском в меню Пуск:
Далее выбираем в левой вкладке "Библиотека планировщика" (1) и нажимаем в правой вкладке "Импортировать задачу" (2):
В окне создание задачи выбираем вкладку "Действия" (3), дважды кликаем по строчке "Запуск программы" (4), в появившемся окне настраиваем двое путей. Путь на исполняемый файл (5) и путь на рабочую папку (6). Рабочая папка в нашем случае является папкой, где положили cmd-скрипт. Можно скопировать из поля выше, главное убрать целевой файл.
После этого нажимаем везде "ОК" и сохраняем задачу.
После этого в течении 5-10 минут на сайте появится информация с данными. Если этого не произошло, то на каком-то этапе настройки возникли проблемы.
Важным моментом является то, что для корректной работы телеметрии необходима постоянная работа OpenHardwareMonitor.
Для систем под Linux расскажу в следующий раз.
В результате получаем из обычного домашнего компа "Умный Девайс", который мониторит своё состояние и собирает статистику.
В скрипте сделан акцент на сборку метрик температуры, также собирается информация о загрузке оперативной памяти и процессора.
При должном желании фильтр можно скорректировать и собирать любые параметры, которые передаёт в wmi утилита.