- Zabbix. Мониторинг температуры процессора Windows-машины
- 1. Собираем данные по температуре при помощи скрипта.
- 2. Устанавливаем скрипт в системе.
- 3. Формируем шаблон в Zabbix.
- 4. Сбор данных.
- Аренда серверов.
- 1С:Предприятие “в облаке”.
- IP-телефония в офис.
- Как мониторить температуру процессора на Windows системе
- Zabbix настройка мониторинга температуры
- Введение
- Подготовка к мониторингу в Zabbix
- Настройка Zabbix agent в Windows
- Настройка мониторинга на Zabbix сервере
- item became not supported
Zabbix. Мониторинг температуры процессора Windows-машины
Будем использовать активного Zabbix-агента для слежения за температурой процессора.
Уверен, что важность мониторинга температуры процессора объяснять не нужно.
Замечание 1.
Способ установки Python 2.7 описан тут: https://www.mihanik.net/tihaja-ustanovka-python-2-7/
Замечание 2.
1. Собираем данные по температуре при помощи скрипта.
Всё, что касается измерения температуры процессора (процессоров) будет располагаться в каталоге C:\Zabbix\scripts\OHMR
Скрипт написан на Python 2.7, он собирает данные по температуре процессора (процессоров) и формирует 2 файла:
- C:\zabbix\scripts\OHMR\cpu0.txt – температура первого процессора
- C:\zabbix\scripts\OHMR\cpu1.txt – температура второго процессора.
Замечание 1.
Если второго процессора в компьютере нет, то в файле cpu1.txt будет всегда нулевая температура.
Замечание 2.
Для получения температуры процессора будет использоваться OpenHardwareMonitor (консольная его версия). Страницу проекта можно найти тут: https://github.com/openhardwaremonitor/openhardwaremonitor . Дело в том, что при помощи WMI действительную температуру процессора не узнать. Чтобы узнать текущую температуру нужно прочитать данные из регистров процессора, чтобы прочитать данные из регистров процессора, нужно работать из нулевого кольца защиты, а чтобы попасть в нулевое кольцо, нужно писать драйвер… Вот OpenHardwareMonitor и делает за нас всю эту черновую работу. Нам остаётся только проанализировать то, что он нам выдаст.
Сам скрипт сохранён под именем C:\zabbix\scripts\OHMR\OHMR.py.
2. Устанавливаем скрипт в системе.
Скрипт лучше запускать каждые 5-10 минут. Я обычно это делаю каждые 10 минут – не слишком часто, но и не слишком редко.
Запланировать выполнение скрипта можно при помощи планировщика Windows. Задание планировщика можно создать вручную, а можно и при помощи bat-файла.
Я обычно это делаю при помощи “батника”, имя своему батнику я дал INSTALL_OHMR_py.bat .
3. Формируем шаблон в Zabbix.
В Zabbix при этом добавляем несложный шаблон.
Сначала приведу описание шаблона в картинках.
Создаём шаблон с именем : Active Computer – Python – CPU Temperature…
Группа элементов данных: CPU
- CPU0 Temperature – vfs.file.contents[C:\zabbix\scripts\OHMR\cpu0.txt]
- CPU1 Temperature – vfs.file.contents[C:\zabbix\scripts\OHMR\cpu1.txt]
Триггеры:
И для большей наглядности добавим графики…
А вот и готовый для импорта заархивированный файл с описанным выше шаблоном: Active Computer – Python – CPU Temperature.xml
4. Сбор данных.
Осталось назначить созданный шаблон соответствующему узлу сети и ждать начала поступления данных.
Аренда серверов.
Надёжные сервера с Pro-бегом
У ВАС В ОФИСЕ!
1С:Предприятие “в облаке”.
Безопасный доступ к своей 1С из офиса, командировки и т.п.!
IP-телефония в офис.
IP-телефония давно перестала быть роскошью в офисах.
Хотите себе в офис цифровую АТС — обращайтесь. !
Как мониторить температуру процессора на Windows системе
Всегда хотел знать об обслуживаемой системе чуточку больше – это как хобби которое нравится, стараешься узнать максимум всей информации. А в моем случае хобби совпадает с работой и я собственно рад этому. Цель данной заметки практически воспроизвести все действия которые нужно сделать чтобы снимать показатель температуры процессора , но если Вам не известно, то штатных средств для этой простой задачи в системе Windows 7 к сожалению нет. Что же мне даст в конечном итоге данный съем показателей температуры, а вот что, если температуры держится всегда на достаточно высоком уровне, то возможно не лишним будет произвести чистку системного блога, от пыли, заменить термопасту, сделать тщательный осмотр системного блога. И вот я перехожу к самому главному, раз нет встроенных средств, то буду использовать сторонние, а именно консольную утилиту для решения данной задачи – OpenHardwareMonitor, состоит она из двух файлов, exe-исполняемого файла и dll-библиотеки.
Настраиваю сервер по мониторингу Zabbix если не настроен по своей заметке:
Первым делом ставлю агент Zabbix по своей заметке:
Где брать данные мы поняли, теперь нужно наладить поставки значений показателей Zabbix серверу .
Для этих целей создам новый Template и в нем создам новый элемент данных (Item), захожу на Zabbix сервер:
http://IP&DNS – Configuration – Templates – Create template
Template Name: Template Hardware
Groups: OFFICE (это мои системы в обслуживаемой сети)
Перехожу в созданный Template и в нем создаю приложение и элемент данных:
Configuration – Templates – Template Hardware – Applications – Create Applications
Configuration – Templates – Template Hardware – Items – Create Item
Name: CPU Template
Type: Zabbix agent
Type of information: Numeric (unsigned)
Data type: Decimal
History storage period (in days): 90
Trend storage period (in days): 365
Теперь нужно связать данный Template с хостом рабочей станции под управлением Windows 7:
Http://IP&DNS – Configuration – Hosts – выбираю хост (Name = aollo) – вкладка Templates – select (Group: Office, Template Hardware), нажимаю Select – после Add – после Save (для сохранения изменений)
Настройки серверного описания завершены, теперь перейдем собственно к клиенту, потребуется в конфигурационный файл Zabbix агента (zabbix_agentd.win.conf) на клиентской станции под управлением Windows 7 добавить пользовательский параметр : — UserParameters следующего вида:
Как этот синтаксис работает:
Команда, через которую мы получим значение, обрабатывается на стороне клиента. Zabbix сервер будет получать ключ с присвоенным ему значением. В статье имеется в виду, что агент у вас уже установлен в виде службы и дружит с сервером.
Открываем текстовым редактором Notepad++ конфигурационный файл (zabbix_agentd.win.conf) и добавляем следующую строчку:
UserParameter=Temperature.CPU[*],c:\script\temperature.bat
temperature.bat – это скрипт который задействует консольную утилиту OpenHardwareMonitorReport и некоторые дополнения по обработке получаемых результатов в системе Windows 7 текущей станции.
Для всех дополнений, снимаемых с рабочей станции я в системе создал каталог: c:\script и в него поместил следующие файлы:
- OpenHardwareMonitorReport.exe
- OpenHardwareMonitorLib.dll
- temperature.bat
Теперь продемонстрирую содержимое bat— файла для извлечения значения температуры из системы:
@echo off
for /F «usebackq tokens=7-10» %%a in ( C:\script\OpenHardwareMonitorReport.exe ) do echo %%b %%c %%d| find «/intelcpu/0/temperature/0″>nul && set temper0=%%a
echo %temper0%
Скрипт возвращает значение в виде десятичного числа.
Можно также проверить, что параметр по ключу успешно извлекается:
c:\Program Files (x86)\zabbix>zabbix_agentd.exe —config zabbix_agentd.win.conf
—print | findstr Temperature
Видите, значения извлекаются, все работает.
После этого изменения конфиг файла и размещения всех файлов и скриптов, перезагружаем службу zabbix agent.
c:\Program Files (x86)\zabbix>net stop «Zabbix Agent» && net start «Zabbix Agent»
Служба «Zabbix Agent» останавливается.
Служба «Zabbix Agent» успешно остановлена.
Служба «Zabbix Agent» успешно запущена.
Теперь нужно связать хост
Начинаем получать значения на сервер:
http://IP&DNS – Monitoring – Latest data – Group (OFFICE):Host(aollo) – опускаемся в самый низ и видим новую категорию : -other – развернув которую можно наблюдать извлекаемые значения:
CPU Temperature Jan 22nd, 2015 06:14:56 AM 52 +2 Graph
Нажимаю Graph и получаю уже сейчас собранную статистику:
Работает, но это для одного CPU[0], а если из два CPU[1], то нужно:
Изменяем на клиенте конфигурационный файл:
c:\Program Files (x86)\zabbix>zabbix_agentd.exe —config zabbix_agentd.win.conf
—print | findstr Temperature
И также изменяем/дополняем элемент данных на сервере:
Теперь последние снимаемые данные с рабочей станции график уже пишутся и строятся отдельно.
Работает съем данных, проверил, что данные идут с клиентских рабочих станций различных материнок и в довесок с моего ноутбука Lenovo G700, а вот с серверной материнки (ProLiant DL180G6) данные с помощью данной утилиты вообще не снимаются, так что в отсутствие стандартизированных компонентов в малой компании подбор различных параметров которые нужно мониторить работа системного администратора превращается в отличное подобие квеста. Но я не отказываюсь от такого, а собираю статистику. Посмотрим, что еще можно с помощью данной консольной утилиты извлечь из системы чтобы мониторить:
c:\script>OpenHardwareMonitorReport.exe | findstr temperature
| +- CPU Core #1 : 53 52 53 (/intelcpu/0/temperature/0)
| +- CPU Core #2 : 59 59 59 (/intelcpu/0/temperature/1)
| +- GPU Core : 38 38 38 (/nvidiagpu/0/temperature/0)
Вот еще можно GPU мониторить, т.е. температуру графического процессора.
Возможно, если найти более функциональную утилиту консольного вида то съем различных параметров можно расширить, но не стоит стараться охватить все, следует остановиться, только на самом нужном и значимом в практическом применении, не тратьте время попусту. А вот и график за период в шесть дней, как меняется температура на моем рабочем ноутбуке с течением выполняемых задач (наверное, как-то так), и конечно же удовольствие от проделанной и визуализированной работы.
А так заметка полностью работоспособна, теперь буду прощаться. До встречи, с уважением – автор блога ekzorchik.
Zabbix настройка мониторинга температуры
Появилась у меня потребность мониторить температуру windows серверов в Zabbix. Из систем мониторинга он мне больше всего нравится, поэтому смотрел в его сторону. Решение задачи оказалось неожиданно простым, о чем я и хочу вам рассказать.
Введение
Если у вас еще нет своего сервера для мониторинга, то рекомендую материалы на эту тему. Для тех, кто предпочитает систему CentOS:
То же самое на Debian 10, если предпочитаете его:
Текущая статья писалась для версии 2.4, все скриншоты приведены из нее. В настоящее время уже вышли более новые версии, но вся нижеизложенная инструкция не потеряла актуальности. Все будет работать и в новой версии.
Подготовка к мониторингу в Zabbix
Описанным мной способом можно мониторить температуру не только windows серверов, но и любых рабочих станций, если будет такая необходимость. Схема мониторинга следующая:
Существует бесплатная утилита Open Hardware Monitor, которая может показывать температуру некоторых датчиков сервера. Вообще говоря, она много чего может показывать (напряжение, скорость вентиляторов, загрузку процессора), но в данном случае нас интересует только температура. У этой утилиты есть версия, работающая в командной строке. Из командной строки показания датчиков можно записывать в файл. Этот файл можно анализировать и забирать из него необходимую для мониторинга информацию. Дальше эта информация передается в сервер Zabbix с помощью опции UserParameter. Все достаточно просто и в то же время эффективно.
Приступим к реализации. Скачиваем GUI версию утилиты по ссылке, приведенной ранее и консольную версию OpenHardwareMonitorReport. Запускаем GUI на сервере и смотрим, какие датчики нам доступны для мониторинга.
Программа увидела несколько датчиков. С процессором все понятно, а вот три других датчика не ясно, чью температуру показывают. Я хотел мониторить температуру процессора и материнской платы. Узнать, какая температура относится к материнской плате можно несколькими способами. Конкретно в данной ситуации я просто запустил портированную версию AIDA64 и посмотрел, какие показания у датчика материнской платы:
Оказалось — 45 градусов. Я запомнил, что датчик Temperature #3 отображает температуру материнской платы.
Можно было пойти другим путем, зайти в IPMI панель, если она есть, и посмотреть там. Я работал с серверами SuperMicro, там она есть. Я на всякий случай зашел и проверил:
Почему-то в этой панели не оказалось информации с датчика температуры процессора. Но нам это не важно. Самое главное, что мы узнали параметры, за которыми будем следить — это CPU Packege и Temperature #3. Теперь запускаем консольную версию и смотрим вывод информации. Я для удобства положил OpenHardwareMonitorReport.exe в папку с основной программой и все это хозяйство скопировал в корень диска C:
Открываем файл 1.txt. Ищем там строки
Нас интересует выделенный текст. По нему мы будем вычленять температуру для мониторинга и передавать ее на Zabbix сервер. Создаем в этой же папке 2 bat файла следующего содержания:
CPUTemperature.bat
MotherTemperature.bat
Запускаем эти батники в командной строке и проверяем вывод. Там должны быть только цифры температуры:
Отлично, на выходе готовые цифры, которые мы будем передавать в Zabbix. Займемся его настройкой.
Настройка Zabbix agent в Windows
Предполагается, что у вас уже настроен сервер мониторинга Zabbix и подключены клиенты, которые ему передают информацию. В данном материале я не буду касаться непосредственно установки и настройки сервера Zabbix, это будет отдельный материал. Сейчас же мы берем готовый файл конфигурации агента zabbix_agentd.win.conf и добавляем в самый конец файла следующие строки:
Перезапускаем службу агента Zabbix, чтобы изменения вступили в силу.
Настройка мониторинга на Zabbix сервере
Теперь идем на сервер. У меня Zabbix установлен на сервере CentOS, хотя это не принципиально. Добавляем новый Item. Пойти можно двумя путями:
- Создать template, в него добавить все items, создать триггеры, графики и назначить этот шаблон нужным серверам.
- К каждому серверу отдельно добавлять только необходимые итемы и вручную добавлять триггеры и графики.
Очевидно, что первым путем идти удобнее и разумнее. Я так и поступил, но в процессе реализации столкнулся с проблемой. Не все сервера имеют одинаковый набор датчиков. Где-то я не смог снять температуру с материнской платы, где-то вместо одного процессора, стояло два и хотелось снимать температуру с обоих камней. Как будет в вашем случае — не знаю. Если все серверы однотипные, то создавайте template, если все разные, то вручную добавляйте каждый итем на сервер. Я в итоге сделал и шаблон для одинотипных серверов, и вручную добавлял итемы туда, где имелись отличия от шаблона.
Итак, сначала создадим шаблон. Идем в Configurations — Templates — Create Template. Шаблон я назвал Temperature Windows. Добавил в него Application — Temperature, затем Item CPU Temperatue. Заполняем поля итема как у меня на картинке:
Параметр Temperature.CPU тот же самый, что и в файле конфигурации агента.
По аналогии создаем итем Mother Temperatue:
Сохраняем шаблон. По желанию создаем для него триггеры и графики. Можно и без них. Добавляем шаблон к серверу, который хотим мониторить. Ждем некоторое время и идем проверять входящие данные. Открываем Monitoring — Latest data:
Нажимаем graph и смотрим график:
Теперь добавим в Zabbix еще один сервер для мониторинга, который будет отличаться по конфигурации от предыдущего. На его примере я покажу, как менять настройки клиента и сервера. С этого сервера я не могу снять данные с датчика температуры материнской платы, по какой причине — не знаю, но не AIDA64 ни OpenHardwareMonitor мне температуру не показывают. Ее можно взять по SNTP с этого сервера, но это отдельная тема. В этом сервере 2 процессора и я хочу мониторить температуру обоих.
Запускаем GUI интерфейс и смотрим, какие датчики мы сможем мониторить:
Нас будет интересовать температура обоих ядер процессора. Теперь запускаем OpenHardwareMonitorReport.exe с выводом информации в текстовый файл. Смотрим, как выглядят строки с интересующей нас информацией:
Создаем два bat файла следующего содержания:
CPU1Temperature.bat
CPU2Temperature.bat
Редактируем конфигурационный файл zabbix_agentd.win.conf агента Zabbix на клиенте. Добавляем в конец две строки:
Перезапускаем службу агента, чтобы изменения вступили в силу.
Дальше идем на сервер Zabbix и по аналогии с предыдущим сервером создаем там Итемы мониторинга. Причем итемы создаем не в шаблоне, а в конкретном сервере, который будем мониторить. Параметр key в этих итемах будет соответственно Temperature.CPU1 и Temperature.CPU2 Ждем некоторое время и проверяем результат.
item became not supported
Во время отладки работ я столкнулся с проблемами. Периодически Item отваливались и получали статус: Not Supported. При этом в логах сервера были следующие записи:
То есть данные то собирались, то переставали собираться. Иногда, чтобы данные снова пошли, приходилось удалять итем и создавать его заново. Некоторое время я повозился, пока не понял, в чем дело.
Я обратил внимание, что при запуске батника из командной строки, вывод данных происходит с приличной задержкой в 3-5 секунд. В Zabbix по-умолчанию стоит параметр, по которому агент ожидает ответа от скрипта 3 секунды и на сервере есть подобный параметр, по которому сервер ждет ответа от агента 3 секунды. Если за это время данные не поступают, то итем переходит в статус Not Supported и данные с него не собираются.
Чтобы избавиться от этой ошибки, необходимо увеличить таймаут до 15-ти секунд. Меняем параметр в конфиге на клиентах и на сервере. Он и там и там один и тот же:
Потом перезапускаем сервер и агентов и ждем результатов. Больше ошибок быть не должно.
На этом, собственно настройка мониторинга температуры окончена. Можно дальше все оформить как полагается: настроить тригеры, оповещения, графики красивые нарисовать. Кому что нужно. Я себе вывел вот такую картинку для наглядности: