Скрипт + Шаблон для Windows LLD Hardware Monitor

Мониторинг Железа
Датчики температур
Кулера
Диски
Напряжение
и т.д.
mur3ilka
Гость
Сообщения: 1
Стаж: 1 год 9 месяцев

Скрипт + Шаблон для Windows LLD Hardware Monitor

Сообщение mur3ilka »

Привет. Подскажи, пожалуйста, как работает фильтр по макс.температуре? В скрипте добавил |sed -n '/'$FILTR'/Ip'|sed -e '/'$HIDE'/d'|.
При проверке ./HM3.5.sh s1085 10050 maxtemp "root\LibreHardwareMonitor;root\OpenHardwareMonitor" "CPU Package" "^$" cp866 "ИМЯ Узла" отрабатывает нормально.
В Zabbix в Макросы {$FILTRHM} добавил в конце \|CPU Package, но триггер MaxTemp все равно срабатывает на высокую температуру всех датчиков.
Я что то неправильно делаю? Как реализовать чтобы обнаруживались все датчики, а триггер на макс.температуру срабатывал только на температуру процессора, без добавления триггеров на узлы вручную. Спасибо.
количество слов: 26
Аватара пользователя
Артём Мамзиков
Admin
Сообщения: 804
Стаж: 5 лет 1 месяц
Откуда: Вологодская область
Поблагодарили: 33 раза
Контактная информация:

Скрипт + Шаблон для Windows LLD Hardware Monitor

Сообщение Артём Мамзиков »

mur3ilka, Привет!

Блок с фильтрами будет выглядеть так

Код: Выделить всё

elif [[ $BLOCSCRIPT = "maxtemp" ]]
then
# Проверка нескольких путей ПО на 1 хосте, делим через ;
IFS=';' read -ra sumdir < <(echo "${PUT}")
# Печать разделенной строки
for puti in "${sumdir[@]}"
do
# Запрашиваем таблицу|перекодируем|выбираем строки с температурой|Исключаем обратную температуру|показать столбец значения|Вывод только числового значения|Оставляем целое число|Сортировка от меньшего к большему|вывод последней строки
maxtemperature=`zabbix_get -s $IP -p $PORT -k system.run["WMIC.exe /NAMESPACE:"${SL}""${puti}" PATH Sensor"]|iconv -f "${KODR}" -t utf8|sed -n '/'Temperature'/Ip'|sed -e '/'TjMax'/d'|sed -n '/'$FILTR'/Ip'|sed -e '/'$HIDE'/d'|awk '{print $(NF-1)}'|sed -E 's/\.[0-9]+|\,[0-9]+//g'|egrep -o '[0-9]+'|sort -n| tail -n1`
# Для нескольких ПО
maxtemp=$maxtemp"\n${maxtemperature}"
done
# Выводим максимальный результат
echo -e "${maxtemp}"|sort -n| tail -n1
fi
Если нужны еще значения после запятой то так

Код: Выделить всё

elif [[ $BLOCSCRIPT = "maxtemp" ]]
then
# Проверка нескольких путей ПО на 1 хосте, делим через ;
IFS=';' read -ra sumdir < <(echo "${PUT}")
# Печать разделенной строки
for puti in "${sumdir[@]}"
do
# Запрашиваем таблицу|перекодируем|выбираем строки с температурой|Исключаем обратную температуру|показать столбец значения|Вывод только числового значения|Оставляем целое число|Сортировка от меньшего к большему|вывод последней строки
maxtemperature=`zabbix_get -s $IP -p $PORT -k system.run["WMIC.exe /NAMESPACE:"${SL}""${puti}" PATH Sensor"]|iconv -f "${KODR}" -t utf8|sed -n '/'Temperature'/Ip'|sed -e '/'TjMax'/d'|sed -n '/'$FILTR'/Ip'|sed -e '/'$HIDE'/d'|awk '{print $(NF-1)}'|egrep -o '[0-9]+\.[0-9]+|[0-9]+\,[0-9]+|[0-9]+'|sort -n| tail -n1`
# Для нескольких ПО
maxtemp=$maxtemp"\n${maxtemperature}"
done
# Выводим максимальный результат
echo -e "${maxtemp}"|sort -n| tail -n1
fi
В целом фильтрация должна работать либо конкретно укажи в |sed -n '/'CPU Package'/Ip'
CPU Package - в некоторых случаях нужно проверить бывает показывает -105 или наоборот 160 не корректно выводит

Есть промежуточный шаблон 3.0-3.4 и 3.5 измененные
для них есть 2 скрипта hmitemapi.sh и triggercreatezbxapi.sh (Указать Логин Пароль в скриптах от заббикс)
Первый выбирает все элементы в узле и на основе их формирует триггеры
Второй уже непосредственно их создает та же сразу проставляются зависимости.

в 3.6 шаблоне там прямо при обнаружении передавали данные на создание триггеров но там мало условий на тот момент было.

Что еще возможно будет.
В целом думаю триггеры будут формировать по оборудованию температура 1 проц 1 триггер , температура 2 проц 2 триггер, материнская плата температура этого чипа. Дальше кулера обороты и то что не заклинил 0, напряжение как то номиналы с имени стащить.
Так же создание графиков и добавление url ссылки на график в соответствующий триггер.
В создание триггера добавить еще обновление если уже создан.

Кому интересно можно потестировать)
СКАЧАТЬ
04.06.22-HM промежуточный варинат.zip
04.06.22-HM промежуточный варинат.zip
(51.39 КБ) 64 скачивания
количество слов: 216
mur3ilka
Гость
Сообщения: 1
Стаж: 1 год 9 месяцев

Скрипт + Шаблон для Windows LLD Hardware Monitor

Сообщение mur3ilka »

Спасибо за варианты решения.
В общем в скрипте рядом с |sed -n '/'Temperature'/Ip'| добавил |sed -n '/'CPU'/Ip'. Проверил на некоторых машинах и вроде все срабатывает верно. А если вбить CPU Package ругается:
sed: -e expression #1, char 4: unterminated address regex
sed: -e expression #1, char 4: unterminated address regex


По поводу 3.6. Попробовал на тестовой машине.
На тестовой машине ./HM3.6.sh s1003 10050 discovery "root\OpenHardwareMonitor" выдает такие строки:
triggercreatezbxapi.sh: line 68: curl: command not found
Вход в систему выполнен успешно - Идентификатор авторизации:
Массив текущих зависимостей:
triggercreatezbxapi.sh: line 287: curl: command not found
sed: -e expression #1, char 30: unterminated `s' command
Найденые триггеры:
triggercreatezbxapi.sh: line 314: curl: command not found
Создание триггера:
triggercreatezbxapi.sh: line 83: curl: command not found
Успешно вышел из Zabbix
triggercreatezbxapi.sh: line 68: curl: command not found
Вход в систему выполнен успешно - Идентификатор авторизации:
Массив текущих зависимостей:
triggercreatezbxapi.sh: line 287: curl: command not found
sed: -e expression #1, char 30: unterminated `s' command
Найденые триггеры:
triggercreatezbxapi.sh: line 314: curl: command not found
Создание триггера:
triggercreatezbxapi.sh: line 83: curl: command not found
Успешно вышел из Zabbix
Версия забикса 6.0.5
Последний раз редактировалось mur3ilka Ср июн 29, 2022 07:36, всего редактировалось 1 раз. количество слов: 125
Аватара пользователя
Артём Мамзиков
Admin
Сообщения: 804
Стаж: 5 лет 1 месяц
Откуда: Вологодская область
Поблагодарили: 33 раза
Контактная информация:

Скрипт + Шаблон для Windows LLD Hardware Monitor

Сообщение Артём Мамзиков »

mur3ilka, пробуй в кавычках sed -n '/'"CPU Package"'/Ip'
3.6 если его надо править там отличаются порядок переменных, пробуй 3,4 шаблон со скриптами.
количество слов: 10
Аватара пользователя
Vlad Larionov
Гость
Сообщения: 3
Стаж: 1 год 7 месяцев
Благодарил (а): 1 раз
Контактная информация:

Скрипт + Шаблон для Windows LLD Hardware Monitor

Сообщение Vlad Larionov »

Заранее извеняюсь, я в теме конкретного написания элементов данных/тригеров т.п. новичок, кто-нибудь мог бы подсказать. Я так понимаю в шаблоне для zabbix элемент OHM {host.name} просто получает инфу в виде массива из параметров темпр и прочее, а как его основе сделать элемент "температура процессора" и к нему прикрепить создать тригер "если больше 60, предупредить" ? За что цепяться ? а главное как ?

Может конечно я покажусь наглым, но может кто предоставить просто готовый шаблон, собирающий с массива инфу ?

Какие еще ключевые слова есть у HM3.5.sh ? Вижу что есть info, discovery, maxtemp

Непонимаю как работают фильтры

Ввожу ./HM3.5.sh 192.168.175.8 10050 info "root\LibreHardwareMonitor" "Temperature"

а потом ./HM3.5.sh 192.168.175.8 10050 info "root\LibreHardwareMonitor" ".*"

Что там, что там, выводит вообще все возможные параметры
Последний раз редактировалось Vlad Larionov Пт авг 19, 2022 17:03, всего редактировалось 2 раза. количество слов: 34
Аватара пользователя
Артём Мамзиков
Admin
Сообщения: 804
Стаж: 5 лет 1 месяц
Откуда: Вологодская область
Поблагодарили: 33 раза
Контактная информация:

Скрипт + Шаблон для Windows LLD Hardware Monitor

Сообщение Артём Мамзиков »

Vlad Larionov, Не путай постоянный элемент с элементами обнаружения))))
info - это просто листинг все что может от дать программа тут фильтров никаких нет, тебе нужен параметр discovery.

Не все так просто с триггерами когда элементов много да еще и разных.
Например у тебя 2 проца по 8 ядер получаем 8 элементов данных с температурой, на каждый элемент у тебя создастся свой триггер и представь что будет если они сработают 16 триггеров сразу) зависимости друга от друга не вариант сделать они замкнут круг и ничего не сработает вовсе. А множественный триггер сделать ручками на каждом узле) Хотя у меня есть готовое решение на основе API будет чуть позже там и зависимости сами создаются и ссылки на график и графики)
Другой момент что в обнаружении у нас не только температура но и кулера обороты и напряжение и тд. А функция триггера одна триггер на 60 градусов сработает так же на кулер обороты свыше 60rpm )) Можно конечно разделить правила обнаружения по типам будет проще на увеличится количество запросов обнаружения в разы пропорционально узлам ну и визуально куча правил обнаружений как то по мне это не очень).
Можно вообще обойтись без обнаружения элементов а просто выбрать что нужно через maxtemp и будет один триггер при превышении любого элемента по температуре срабатывать правда не понятно какого придется смотреть заходя на сам ПК или Сервер. Но если выбран один проц температура то тут понятно можно не заходить.

Будет еще обновление шаблона 3.4 и 3.5 в целом уже есть но надо оформить в чем оно заключается и как работает как время будет.

Во общем со временем поймешь какие есть нюансы и в чем разница.

Команды проверок
Скрыть
В Первую очередь проверяем на Хосте Windows работу в cmd
На примере OpenHardwareMonitor
Запрос датчиков WMIC.exe /NAMESPACE:\\root\OpenHardwareMonitor PATH Sensor
Запрос железа WMIC.exe /NAMESPACE:\\root\OpenHardwareMonitor PATH Hardware
Если таблицы с данными есть все ОК!
Идем дальше

На заббикс сервере через команду zabbix_get -s
Запрос всей таблицы (где есть кавычки " ставим до слешь \)
zabbix_get -s 192.168.175.8 -k system.run["WMIC.exe /NAMESPACE:\\\root\OpenHardwareMonitor PATH Sensor"]

Запрос железа
zabbix_get -s 192.168.175.8 -k system.run["WMIC.exe /NAMESPACE:\\\root\OpenHardwareMonitor PATH Hardware"]
Если таблицы с данными есть все ОК!
Идем дальше

Проверяем работу скрипта
Проверка ответа сразу 2х программ
./HM3.5.sh 192.168.175.8 10050 discovery "root\LibreHardwareMonitor;root\OpenHardwareMonitor"
или 3х
./HM3.5.2.sh 192.168.175.8 10050 discovery "root/HWMonitor;root\OpenHardwareMonitor;root\LibreHardwareMonitor" ".*" "^$" cp866 "21Program"

Проверка фильтра выбранных датчиков
./HM3.5.sh 192.168.175.8 10050 discovery "root\LibreHardwareMonitor;root\OpenHardwareMonitor" "Temperature"

Проверка фильтра исключения элементов
./HM3.5.sh 192.168.175.8 10050 discovery "root\LibreHardwareMonitor;root\OpenHardwareMonitor" ".*" "Download Speed"

Кодировка cmd
./HM3.5.sh 192.168.175.8 10050 discovery "root\LibreHardwareMonitor;root\OpenHardwareMonitor" ".*" "^$" cp866 "ИМЯ Узла"

Запрос процессов
./HM3.5.4.sh 192.168.175.8 10050 processes "root/HWMonitor;root\OpenHardwareMonitor;root\LibreHardwareMonitor" ".*" "^$" cp866 "21Program"

Листинг таблицы Инфо
./HM3.5.sh 192.168.175.8 10050 info "root\LibreHardwareMonitor;root\OpenHardwareMonitor" ".*" "^$" cp866 "ИМЯ Узла"

Максимальная температура
./HM3.5.sh 192.168.175.8 10050 maxtemp "root\LibreHardwareMonitor;root\OpenHardwareMonitor" ".*" "^$" cp866 "ИМЯ Узла"

Если получаем данные в ответ все ОК, цепляем шаблон к узлу, прописываем макросы если не обходимо, правило обнаружения проверить сейчас, должны создастся элементы данных.
количество слов: 193
Аватара пользователя
Vlad Larionov
Гость
Сообщения: 3
Стаж: 1 год 7 месяцев
Благодарил (а): 1 раз
Контактная информация:

Скрипт + Шаблон для Windows LLD Hardware Monitor

Сообщение Vlad Larionov »

Артём Мамзиков писал(а): Пт авг 19, 2022 20:26 Vlad Larionov, Не путай постоянный элемент с элементами обнаружения))))
info - это просто листинг все что может от дать программа тут фильтров никаких нет, тебе нужен параметр discovery.
Да отслеживать каждый параметр, та еще морока. Вот хотелось бы ради интереса, что-то одно отследить, но как выцеплять и записывать это в элемент и т.п. не знаю, поэтому прошу помощи.
количество слов: 8
Dozent
Гость
Сообщения: 7
Стаж: 2 года 9 месяцев

Скрипт + Шаблон для Windows LLD Hardware Monitor

Сообщение Dozent »

Добрый день. Перенёс на новую версию Zabbix и сейчас ошибка при обнаружении датчиков

Код: Выделить всё

Invalid discovery rule value: cannot parse as a valid JSON object: invalid object format, expected opening character '{' or '[' at: 'grep: bad regex '/nic/{9CFE1CC9-8F7B-4DCE-B3F6-B77F48BA9195}.*a68ebae6-4e53-4aae-ba2e-79985275aa08': Invalid contents of {}
grep: bad regex '/nic/{9CFE
Что это может быть?

Отправлено спустя 1 час 24 секунды:
при вызове команды с сервера /var/lib/zabbix$ zabbix_get -s 192.168.5.162 -k system.run["wmic.exe /NAMESPACE:\\root\LibreHardwareMonitor PATH Sensor"]
выдаёт

Код: Выделить всё

▒▒▒▒: DESKTOP-603KHKR
▒▒▒▒▒▒.
▒▒▒ᠭ▒▒: ▒▒▒ࠢ▒▒쭮▒ ▒▒▒▒࠭▒⢮ ▒▒▒▒
количество слов: 66
Аватара пользователя
Артём Мамзиков
Admin
Сообщения: 804
Стаж: 5 лет 1 месяц
Откуда: Вологодская область
Поблагодарили: 33 раза
Контактная информация:

Скрипт + Шаблон для Windows LLD Hardware Monitor

Сообщение Артём Мамзиков »

Dozent, Привет
Чтоб увидеть что он пишет используй кодировку

Код: Выделить всё

zabbix_get -s 192.168.5.162 -k system.run["wmic.exe /NAMESPACE:\\root\LibreHardwareMonitor PATH Sensor"]|iconv -f "cp866" -t utf8
или

Код: Выделить всё

zabbix_get -s 192.168.5.162 -k system.run["wmic.exe /NAMESPACE:\\root\LibreHardwareMonitor PATH Sensor"]|iconv -f "cp1251" -t utf8
Если на самой Windows в cmd

Код: Выделить всё

WMIC.exe /NAMESPACE:\\root\OpenHardwareMonitor PATH Sensor
если команда отрабатывает все ок.
Проверь как она отрабатывает под тем пользователем под которым работает заббикс агент.

В самом агенте в конфиге должно быть разрешено запуск команд
В конфигурации Заббикс Агента
Нужно раскомментировать строку EnableRemoteCommands = 1, иначе агент не сможет принимать команды.
начиная с Zabbix 5.0 system.run
Параметр EnableRemoteCommands теперь устарел.
Удаленные команды по-прежнему отключены по умолчанию, но в новых конфигурационных файлах, которые выражаются с помощью нового параметра DenyKey (DenyKey=system.run[*]) черный список, разрешить все AllowKey=system.run[*].
Удаленные команды можно включить, удалив (или закомментировав) ключ DenyKey=system.run[*]

Все поэтапно на каком моменте перестают идти данные.
количество слов: 72
Ответить Вложения 37 Пред. темаСлед. тема

Вернуться в «Аппаратное обеспечение Общее для всех систем»