Комментарии 22
А через IPMI не проще сливать эти данные? В наше время любой нормальный сервер имеет разновидность out-of-band мониторинга.
Тем более заббикс его из коробки умеет, а в последних версиях даже дискретные сенсоры.
Речь как раз идет о рабочих станциях. Ведь предприятие не на одни серверах держится. Мне например важно знать состояние рабочих станций в бухгалтериях от и до.
А, звиняюсь, пропустил. Я просто как-то не заморачиваюсь мониторингом десктопов — юзер сам хороший мониторинг :)
Система должна работать так что бы дать юзеру работать продуктивно и избежать простоя в рабочее время. О том что компьютер волшебным образом приведен в порядок, знает журнал выполненных работ и видеонаблюдение. Ведь дороги наиболее продуктивно ремонтируют в двух случаях: когда перекрыта вся дорога или когда работа выполнена ночью в самое разгруженное от трафика время.
А разве у разных моделей CPU не разные рабочие диапазоны температур? Не получится наложить один шаблон на все наблюдаемые машины с триггерами на превышение нормальных значений. Придется готовить разные шаблоны для каждой модели CPU.
Согласен, нужно будет еще немного потрудиться. Настройка триггеров это очень индивидуальное занятие и рекомендуется её продумывать самостоятельно.Здесь находится список максимальных температур. Для начала я предлагаю сделать проверку раз в час. Судя по инвентаризации моих организации большинство пк на процессоре intel в соотношений 1 к 20. Если на протяжении 4 таких измерений температура выше 61, то выставляется предупреждение. Если за 3 измерения 70 уже критическое.
Получится. Можно например параметризировать пороги срабатывания с помощью пользовательских макросов (один в шаблоне и опционально индивидуальный для хоста).
Про макросы согласен. Но проблема остается — я к тому, что очень уж трудоемка следить за парком машин от 1000шт.
В идеале нужно, чтобы программа агент по модели CPU сама решала, перегрелся он уже или нет, и на сервер мониторинга сообщала не температуру, а статус — OK, WARN, CRIT…
В идеале нужно, чтобы программа агент по модели CPU сама решала, перегрелся он уже или нет, и на сервер мониторинга сообщала не температуру, а статус — OK, WARN, CRIT…
Идиотский подход который часто любят пользователи nagios. Решения должны приниматься сервером мониторинга, это даёт гораздо большую управляемость.
Если у вас кондиционер отрубило, а порог срабатывания вы слишком низкий поставили, будете по каждой машине лазить и править его? А потом обратно? Вместо того чтобы изменить значение на сервере мониторинга.
Если наша цель — не допустить перегревания процессора, то в случае выхода из строя кондиционера нужно, как я понимаю, не пороги поднимать, а чинить кондиционер, либо выключать компьютеры.
Не большая проблема, похоже не во всех процессорах/материнках есть датчик CPU Package. проверил на 2 компьютерах нету. Напишите в личку результат работы скрипта у вас, попробую переделать скрипт и проверить на разных ОС и процессорах.
Я сей час нахожусь в отпуске и кроме виртуальных машин и своего ноутбук ничем не располагаю. Я так же заметил, что на некоторых пк OpenHardwareMonitor определяет скорость вентилятора, но не у меня. Вы хотите сказать, что у вас вообще не считывает температуру процессора или именно CPU Package. Попробуйте заменить в бат файле «CPU Package :» на «CPU Core #1 :» в надежде на то что первое ядро есть в любом процессоре. Вернусь из отпуска, дополним статью подробностями экспериментов.
Попробовал переделать батник (терпеть не могу батники, уж очень язык мало-функциональный), и вот что у меня получилось:

@echo off
for /F "usebackq tokens=7-10" %%a in (`C:\OpenHardwareMonitor\OpenHardwareMonitorReport.exe`) do echo %%b %%c %%d| findstr .*lpc.*\/temperature\/0>nul && set temper=%%a
echo %temper%

Попробовал на нескольких машинах с разными мат. платами, ОС (XP, 2003, 2008, 7) и процессорами ( i5, i7, Fx8350), попробовал сделать более менее универсальным, работает на всем что проверял. Но наверное найдутся платы на которых придётся переделать параметр: tokens=7-10.
Приятно встретить земляка.
Не сработало на двухпроцессорной системе. Пришлось выводимые параметры echo "%%b %%c %%d" взять в двойные кавычки. Что собственно правильнее со стороны echo :)
Можно получать следующим образом через powershell:

param($cpuid)
(Get-WmiObject -Namespace Root\OpenHardwareMonitor -Class sensor | ?{$_.identifier -eq "/intelcpu/0/temperature/$cpuid"}).value

В zabbix_agentd.conf
UserParameter=cpu.temperature[*],powershell.exe C:\scripts\cpuid.ps1 $1

Как вариант универсального скрипта:

В скрипте:
param($hw, $hwid, $sensor, $sensorid)
(Get-WmiObject -Namespace Root\OpenHardwareMonitor -Class sensor | ?{$_.identifier -eq "/$hw/$hwid/$sensor/$sensorid"}).value

В zabbix_agentd.conf
UserParameter=system.sensor[*],powershell.exe C:\scripts\cpuid.ps1 $1 $2 $3 $4

В zabbix
В item:
key = system.sensor[intelcpu,0,temperature,0]

Весь список можно посмотреть:
(Get-WmiObject -Namespace Root\OpenHardwareMonitor -Class sensor ) | ft Identifier,name,SensorType,Value

Если экранировать и переместить findstr то работает в разы быстрее и не вешает машины:

for /F «usebackq tokens=7-10» %%a in (`OpenHardwareMonitorReport.exe ^| findstr .*lpc.*\/temperature\/0`) do echo %%a

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