Старая версия Аппаратное обеспечение Windows PowerShell

Мониторинг Железа
Датчики температур
Кулера
Диски
Напряжение
и т.д.
Аватара пользователя
Артём Мамзиков
Admin
Сообщения: 804
Стаж: 5 лет 1 месяц
Откуда: Вологодская область
Поблагодарили: 33 раза
Контактная информация:

Старая версия Аппаратное обеспечение Windows PowerShell

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

Данный шаблон и скрипт разработан не мной оригинал находится по данной ссылке
Zabbix: LLD-мониторинг железа под Windows на PowerShell
Новая версия для Дисков
Zabbix: LLD-мониторинг дисков без UserParameter и скриптов на агентах
Разработчик AcidVenom

Является старой версией, но используется так как было сделано ранее и все работает, новые делаю уже через LLD
Установка Агента Zabbix + Аппаратное обеспечение Windows
Скрипт + Шаблон для Windows LLD Open Hardware Monitor
Скрипт + Шаблон LLD Для проверки Жестких Дисков HDD через smartmontools
Скрипт + Шаблон для Linux LLD LM-Sensors

Обзор шаблона в скриншётах
Аппаратное обеспечение Windows Пример последние данные
Аппаратное обеспечение Windows Пример последние данные
Аппаратное обеспечение Windows Триггеры все в одном (узле)
Аппаратное обеспечение Windows Триггеры все в одном (узле)
Аппаратное обеспечение Windows
Аппаратное обеспечение Windows
Аппаратное обеспечение Windows2
Аппаратное обеспечение Windows2
Аппаратное обеспечение Windows3
Аппаратное обеспечение Windows3
тест все в одном триггере
тест все в одном триггере
тест все в одном триггере1
тест все в одном триггере1

Скачать
Шаблон + 2 скрипта.zip
Шаблон + 2 скрипта.zip
(17.87 КБ) 53 скачивания
Для ручной установки была такая инструкция

Установка службы Zabbix Agent (подразумевается что конфиг агента уже настроен)
прописываем в конфиге UnsafeUserParameters=1 и UserParameter=ZScript[*], powershell C:\zabbix\Scripts\windows.$1.ps1 $2 $3 $4
Выполняем команды в CMD
C:/zabbix/zabbix_agentd.exe --config C:/zabbix/zabbix_agentd.win.conf --install
net start "Zabbix Agent"

cd C:\zabbix\nssm\win32
cd C:\zabbix\nssm\win64
nssm install OpenHardwareMonitor - установка
Service "OpenHardwareMonitor" installed successfully! - успешная установка
nssm start OpenHardwareMonitor - Запуск службы
nssm remove OpenHardwareMonitor - удаление

Проверка
Запустить командную стороку от имени администратора
Win + R выполнить cmd

Выполнить powershell
Далее
C:\zabbix\Scripts\windows.hard.ps1 discovery
или
C:\zabbix\Scripts\windows.hard.ps1 discovery temperature
C:\zabbix\Scripts\windows.hard.ps1 discovery voltage
C:\zabbix\Scripts\windows.hard.ps1 discovery fan
C:\zabbix\Scripts\windows.hard.ps1 VBAT


Для работы нужно разрешить запуск скриптов не имеющих цифровую подпись
Права админа повершел
Get-ExecutionPolicy
Set-ExecutionPolicy remoteSigned - подписанные скрипты
Set-ExecutionPolicy Unrestricted - все скрипты

обнаружение интерактивных служб «Обнаружение интерактивных служб»

Если железо другое надо изначально переименовать показатели в OpenHardwareMonitor убирать # чтоб сохранился конфигурационный файл.
Перво начально надо запускать powershell от имени админа и запустить 2 команды 2-ая с подтверждение Y
Get-ExecutionPolicy
Set-ExecutionPolicy Unrestricted
Установка smartmontools

Браундмауэр открыть порт что бы все работало в брандмауэре Windows создать правило для входящих подключений разрешающее работу с портом 10050

Варианты решения
HKEY_CURRENT_USER\Software\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\ScriptedDiagnostics\ExecutionPolicy
параметр Unrestricted
Аппаратное обеспечение Windows Реестр 1
Аппаратное обеспечение Windows Реестр 1
Аппаратное обеспечение Windows Реестр 1.1
Аппаратное обеспечение Windows Реестр 1.1
Аппаратное обеспечение Windows Реестр 2
Аппаратное обеспечение Windows Реестр 2
Аппаратное обеспечение Windows Реестр 2.1
Аппаратное обеспечение Windows Реестр 2.1
Аппаратное обеспечение Windows Разрешения повершел 3
Аппаратное обеспечение Windows Разрешения повершел 3
hdd
hdd
windows.hard.ps1
windows.hard.ps1
команды для запросов
Показать
Проверка на самом узле запускаем утилиту OpenHardwareMonitor смотрим что она нам показывает убираем # в именах запускаем службы проверяем еще раз чтоб обратно не появились # в именах

Проверка через скрипт на самом узле
Заходим в CMD и водим команду powershell выполняем все последующие команды должны начинаться на PS
Или же просто заходим в PowerShell и выполняем команды там кому как удобнее.

Ищем датчики температур
PS C:\zabbix\Scripts> ./windows.hard.ps1 discovery temperature

Ищем кулера
PS C:\zabbix\Scripts> ./windows.hard.ps1 discovery fan

Получаем данные для температуры подставляем найденный датчик
PS C:\zabbix\Scripts> ./windows.hard.ps1 3882 temperature

Со стороны заббикс сервера
Поиск температур
zabbix_get -s 192.168.355.28 -k ZScript[hard,discovery,temperature]

Получение значение температуры
zabbix_get -s 192.168.355.28 -k ZScript[hard,3882,temperature]

Постоянное значение получение напряжение батарейки биос
zabbix_get -s 192.168.355.28 -k ZScript[hard,VBAT]

И так далее подставляем искомые значения

Команда для поиска элементов
$items = Get-WmiObject -Namespace Root\OpenHardwareMonitor -Class sensor | Where-Object {$_.SensorType -eq "$2" -and $_.Name -notmatch "#|VBAT" -and $_.Parent -notmatch "hdd"}

Что здесь происходит
Получение таблицы для команды sensor обработка и вывод в переменную $items
Получение объектов WMI (Get-WmiObject) sensor получим все классы для пространства|фильтрации объектов является Where-Object позволяет протестировать каждый объект в конвейере и передать его дальше, не соответствие удаляется из конвеера
-eq равно; -and оба устловия должны быть истинны; -notmatch регулярные выражения для посика не соответсвия образцу; $2 входная переменная например temperature

Поиск соответствия $_.SensorType равно "$2 входная переменная например temperature" оба условия должны быть равны $_.Name исключить из поиска вывода значения содержащие # и VBAT условия должны быть равны $_.Parent исключить из поиска вывода значения содержащие hdd

Выполнив команду в повершелл
Get-WmiObject -Namespace Root\OpenHardwareMonitor -Class sensor

Получаем все данные для команды sensors

так же можно проверить идут ли данные таблица
Скрипт работает на запрос CMD следующего запроса:
wmic.exe /NAMESPACE:\\root\OpenHardwareMonitor PATH Sensor

Если ничего не возвращается читаем тут Как исправить запросы WMI

После чего можно запустить команду с фильтрацией подставить вместо $2 например temperature
Get-WmiObject -Namespace Root\OpenHardwareMonitor -Class sensor | Where-Object {$_.SensorType -eq "$2" -and $_.Name -notmatch "#|VBAT" -and $_.Parent -notmatch "hdd"}

Получаем датчики температуры чьи имена не содержат # так же из вывода убираем строки содержащие VBAT и hdd по этому мы не получи температуру для диска мы ее запросим другим скриптом тут ее исключаем.

Далее все найденное передаем в цикл и выводим в Jons data.

Примеры выполнения
3OpenHardwareMonitor
3OpenHardwareMonitor
2OpenHardwareMonitor
2OpenHardwareMonitor
3OpenHardwareMonitor
3OpenHardwareMonitor
Как происходит запрос в скрипт из заббикс серера
Показать
2 скрипта
windows.hard.ps1
windows.hdd.ps1

В скрипте заббикс агента для пользователя
UserParameter=ZScript[*], powershell C:\zabbix\Scripts\windows.$1.ps1 $2 $3 $4

Подставляем под звездочку любые значения ZScript[*]

Поиск
ZScript[hard,discovery,voltage]
ZScript[hard,discovery,temperature]
ZScript[hard,discovery,fan]
Скрипт по дискам
ZScript[hdd,discovery]


Пример Получаем для ключа на Заббикс сервере ZScript[hard,discovery,temperature]

UserParameter=ZScript[hard,discovery,temperature], powershell C:\zabbix\Scripts\windows.hard.ps1 discovery temperature

Получили входной ключ для скрипта
windows.hard.ps1 discovery temperature

PS C:\zabbix\Scripts> ./windows.hard.ps1 discovery temperature
{"data":[{"{#ID}":"3882", "{#NAME}":"Temperature 2"},{"{#ID}":"3881", "{#NAME}":"Temperature 1"}]}

PS C:\zabbix\Scripts> ./windows.hard.ps1 discovery fan
{"data":[{"{#ID}":"3884", "{#NAME}":"Fan 1"}]}
PS C:\zabbix\Scripts>

Нашли например 3882 имя Temperature 2
Подставялем
PS C:\zabbix\Scripts> ./windows.hard.ps1 3882 temperature
46

root@ZABBIXSERVER:~# zabbix_get -s 192.168.355.28 -k ZScript[hard,3882,temperature]
46

Или для скрипт заббикс агента будет
UserParameter=ZScript[hard,3882,temperature], powershell C:\zabbix\Scripts\windows.hard.ps1 3882 temperature

В заббиксе ключ будет выглядеть
ZScript[hard,3882,temperature]


Ключи в заббикс сервере
Переменная имени {#NAME}
ZScript[hard,{#ID},temperature]
ZScript[hrad,{#ID},voltage]
ZScript[hard,{#ID},fan]
Постоянный ключ
ZScript[hard,VBAT]

Для скрипта по дискам
ZScript[hdd,{#DISKID},fw]
ZScript[hdd,{#DISKID},model]
ZScript[hdd,{#DISKID},capacity]
ZScript[hdd,{#DISKID},attr]
ZScript[hdd,{#DISKID},info]
ZScript[hdd,{#DISKID},family]
ZScript[hdd,{#DISKID},serial]
ZScript[hdd,{#DISKID},status]
Подставляем разные значчения например 5
ZScript[hdd,{#DISKID},5]


Запускаете cmd, далее powershell и путь к скрипту с нужными параметрами
C:\zabbix\Scripts\windows.hard.ps1 discovery temperature
C:\zabbix\Scripts\windows.hard.ps1 discovery voltage
C:\zabbix\Scripts\windows.hard.ps1 discovery fan
C:\zabbix\Scripts\windows.hard.ps1 VBAT
C:\zabbix\Scripts\windows.hdd.ps1 discovery status




powershell
C:\zabbix\Scripts\windows.hdd.ps1 discovery serial
C:\zabbix\Scripts\windows.hdd.ps1 discovery status
C:\zabbix\Scripts\windows.hdd.ps1 discovery model
C:\zabbix\Scripts\windows.hdd.ps1 discovery family
C:\zabbix\Scripts\windows.hdd.ps1 discovery fw
C:\zabbix\Scripts\windows.hdd.ps1 discovery capacity

Windows PowerShell
Copyright (C) 2016 Microsoft Corporation. All rights reserved.

PS C:\Users\14-1> C:\zabbix\Scripts\windows.hdd.ps1 discovery serial
{"data":[{"{#DISKID}":"sda"}]}
PS C:\Users\14-1> C:\zabbix\Scripts\windows.hdd.ps1 discovery status
{"data":[{"{#DISKID}":"sda"}]}
PS C:\Users\14-1> C:\zabbix\Scripts\windows.hdd.ps1 discovery model
{"data":[{"{#DISKID}":"sda"}]}
PS C:\Users\14-1> C:\zabbix\Scripts\windows.hdd.ps1 discovery family
{"data":[{"{#DISKID}":"sda"}]}
PS C:\Users\14-1> C:\zabbix\Scripts\windows.hdd.ps1 discovery fw
{"data":[{"{#DISKID}":"sda"}]}
PS C:\Users\14-1> C:\zabbix\Scripts\windows.hdd.ps1 discovery capacity


бАТНИК РЯДОМ СО СКРИПТОМ
C:/zabbix/zabbix_agentd.exe --config C:/zabbix/zabbix_agentd.win.conf --test ZScript[hard,3849,temperature]
pause


# Получение таблицы для команды sensor обработка и вывод в переменную $items
# Получение объектов WMI (Get-WmiObject) sensor получим все классы для пространства| фильтрации объектов является Where-Object позволяет протестировать каждый объект в конвейере и передать его дальше, не соответствие удаляется из конвеера
# -eq равно; -and оба устловия должны быть истинны; -notmatch регулярные выражения для посика не соответсвия образцу
if ($1 -eq "discovery") {
$items = Get-WmiObject -Namespace Root\OpenHardwareMonitor -Class sensor | Where-Object {$_.SensorType -eq "$2" -and $_.Name -notmatch "#|VBAT" -and $_.Parent -notmatch "hdd"}

Поиск соответствия $_.SensorType равно "$2" оба условия должны быть равны $_.Name исключить из поиска вывода значения содержащие # и VBAT условия должны быть равны $_.Parent исключить из поиска вывода значения содержащие hdd


Get-WmiObject -Namespace Root\OpenHardwareMonitor -Class sensor | Where-Object {$_.SensorType -eq "temperature" -and $_.Name -notmatch "#|VBAT" -and $_.Parent -notmatch "hdd"}
Get-CimClass -Namespace Root\OpenHardwareMonitor -Class sensor



C:\Windows\System32>WMIC.exe /NAMESPACE:\\root\OpenHardwareMonitor PATH Sensor
Отсутствуют экземпляры.
No Instance(s) Available. Нет доступных экземпляров.


PS D:\Документы\Desktop\Температур через повер шел> Get-WmiObject -Namespace Root\OpenHardwareMonitor -LIST sensor


NameSpace: ROOT\OpenHardwareMonitor

Name Methods Properties
---- ------- ----------
Sensor {} {Identifier, Index, InstanceId, Max...}


UserParameter=ZScript[*],powershell C:\zabbix\Scripts\windows.$1.ps1 $1 $2 $3 $4

ZScript - указывается в настройках на сервере заббик
* -все команды в запросе от сервера
powershell - испоняемая программа
C:\zabbix\Scripts\ - путь до скрипта
windows.$1.ps1 - содержание начала имени скрипта файла .$1 - различные имена скрипта ps1 расширение

ZScript[hard,discovery,temperature]

ZScript - параметр для Сервера прописанный в конфиге агента UserParameter=ZScript
[hard определение скрипта это windows.hdd
discovery - первая команда в этом файле Ключ: discovery if ($1 -eq "discovery") {
temperature] - ключ команде датчиков температуры
вид ZScript[имя_скрипта, параметр1,.., параметрN]. Параметры передаются непосредственно в сам скрипт.

Ключ - Уникальный ключ элемента данных. [*] задает, что ключ может принимать параметры из скобок. Параметры указываются при настройке элемента данных.

Команда- Команда, которая выполняется для получения значения ключа.
Только для гибких пользовательских параметров:
Вы можете использовать ссылки на позиции $1…$9 для того, чтобы обратиться к соответствующему параметру в ключе элемента данных.
Zabbix разбирает параметры заключенные в [ ] ключа элемента данных и заменяет $1,…,$9 в команде соответственно.
$0 будет заменена оригинальной командой (до раскрытия $0,…,$9) для выполнения.
Ссылки на позиции интерпретируются Zabbix агентом независимо от того заключены ли они в двойные (“) или в одинарные (') кавычки.
Для использования ссылок на позиции без изменения, укажите двойной символ доллара - например, awk '{print $$2}'. В этом случае $$2 фактически превратится в $2 при выполнении команды.

https://www.zabbix.com/documentation/3. ... parameters


param($hw=»nvidiagpu», $hwid=0, $sensor=»temperature», $sensorid=0)

(Get-WmiObject -Namespace Root\OpenHardwareMonitor -Class sensor | where {$_.identifier -eq «/$hw/$hwid/$sensor/$sensorid»}).value

key = system.sensor[intelcpu,0,temperature,0]

param($hw, $hwid, $sensor, $sensorid)
(Get-WmiObject -Namespace Root\OpenHardwareMonitor -Class sensor | ?{$_.identifier -eq «/$hw/$hwid/$sensor/$sensorid»}).value


system.sensor[intelcpu/0/temperature/0]



состояния триггера от FALSE к TRUE или от TRUE к FALSE (возможно с промежуточным состоянием UNKNOWN)
Внутренние (internal) события генерируются самим Zabbix в двух случаях:
айтем стал не поддерживаемым (not supported)
либо триггер перешёл в неизвестное (unknown) состояние


Триггерные функции для NOTSUPPORTED элементов данных
Функция nodata() была переработана, чтобы сделать срабатывание триггеров проще в тех случаях, когда элемент данных становится недоступен.
Кроме того, функции date(), dayofweek(), dayofmonth(), now(), time(), которые в целом не очень то зависят от значения элемента данных,
теперь всегда просчитываются, в независимости в какой состоянии находится элемент данных.
Ну а самое главное, что теперь триггер не будет уходить в состояние UNKNOWN,
пока хотя бы одна часть логического ИЛИ может быть проверена.
Это позволит комбинировать несколько различных методов сбора данных для одного и того же события
Zabbix прокси на IBM DB2 базе данных имеет ограничение в 2048 байт на возвращаемое значение правил низкоуровневого обнаружения
В Zabbix прокси максимальное возвращаемое значение для правила низкоуровневого обнаружения составляет 4000 символов для Oracle DB и 2048 символов для IBM DB2

Периодически Item отваливались и получали статус: Not Supported.
Чтобы избавиться от этой ошибки, необходимо увеличить таймаут до 15-ти секунд
Всякие разные примеры команд
Показать
Команды
CMD >
WMIC.exe /NAMESPACE:\\root\OpenHardwareMonitor PATH Sensor
powershell >
Get-WmiObject -Namespace Root\OpenHardwareMonitor -Class sensor
Get-WmiObject -List -Namespace Root/OpenHardWareMOnitor
Get-WmiObject -Namespace Root\OpenHardwareMonitor -class Sensor
Get-WmiObject -Namespace Root/OpenHardWareMOnitor -class hardware
Get-WmiObject -Namespace Root\OpenHardwareMonitor -Class sensor | Where-Object {$_.SensorType -eq «Temperature»}

Пример
Microsoft Windows [Version 6.1.7601]
© Корпорация Майкрософт (Microsoft Corp.), 2009. Все права защищены.
C:\Windows\system32>powershell

C:\zabbix\Scripts\windows.hard.ps1 discovery fan
Ответ {"data":[{"{#ID}":"3873", "{#NAME}":"Fan 2"},{"{#ID}":"3872", "{#NAME}":"Fan 1"}]

C:\zabbix\Scripts\windows.hard.ps1 discovery voltage
Ответ {"data":[{"{#ID}":"3863", "{#NAME}":"+5V"},{"{#ID}":"3862", "{#NAME}":"+3.3V"},{"{#ID}":"3861", "{#NAME}":"DRAM"},{"{#ID}":"3860", "{#NAME}":"CPU VCore"}]}

C:\zabbix\Scripts\windows.hard.ps1 discovery temperature
Ответ {"data":[{"{#ID}":"3869", "{#NAME}":"Temperature 1"},{"{#ID}":"3848", "{#NAME}":"CPU Core 2"},{"{#ID}":"3871", "{#NAME}"
:"Temperature 3"},{"{#ID}":"3847", "{#NAME}":"CPU Core 1"},{"{#ID}":"3870", "{#NAME}":"Temperature 2"}]}

C:\zabbix\Scripts\windows.hard.ps1 3848 temperature
Ответ 26

C:\zabbix\Scripts\windows.hard.ps1 VBAT
Ответ 2.944

PS C:\Program Files\smartmontools\bin> C:\zabbix\Scripts\windows.hdd.ps1 discovery
Ответ {"data":[{"{#DISKID}":"sda"}]}

C:\zabbix\Scripts\windows.hdd.ps1 sda serial
Ответ 5VMFCF4Q

C:\zabbix\Scripts\windows.hdd.ps1 sda status
Ответ FAILED! - плохой
Ответ PASSED - хороший

C:\zabbix\Scripts\windows.hdd.ps1 sda model
Ответ ST3500418AS

C:\zabbix\Scripts\windows.hdd.ps1 sda family
Seagate Barracuda 7200.12

C:\zabbix\Scripts\windows.hdd.ps1 sda fw
CC38

C:\zabbix\Scripts\windows.hdd.ps1 sda capacity
500 GB

Пример
C:\zabbix\Scripts\windows.hdd.ps1 sda 9
17100
009 (09h) Power-On Hours (POH) Количество рабочих часов - количество часов, когда диск находился во включенном состоянии за весь срок с момента производства, в виде целочисленного значения в часах. Иногда встречаются модели накопителей, в которых внутреннее значение данного атрибута сохраняется в виде количества рабочих минут или секунд, а не часов. Достижение порогового значения данного атрибута означает выработку ресурса, заданного производителем ( MTBF - Mean Time Between Failures

powershell
C:\zabbix\Scripts\windows.hdd.ps1 discovery serial
C:\zabbix\Scripts\windows.hdd.ps1 discovery status
C:\zabbix\Scripts\windows.hdd.ps1 discovery model
C:\zabbix\Scripts\windows.hdd.ps1 discovery family
C:\zabbix\Scripts\windows.hdd.ps1 discovery fw
C:\zabbix\Scripts\windows.hdd.ps1 discovery capacity

Windows PowerShell
Copyright © 2016 Microsoft Corporation. All rights reserved.
PS C:\Users\14-1> C:\zabbix\Scripts\windows.hdd.ps1 discovery serial
{«data»:[{"{#DISKID}":«sda»}]}
PS C:\Users\14-1> C:\zabbix\Scripts\windows.hdd.ps1 discovery status
{«data»:[{"{#DISKID}":«sda»}]}
PS C:\Users\14-1> C:\zabbix\Scripts\windows.hdd.ps1 discovery model
{«data»:[{"{#DISKID}":«sda»}]}
PS C:\Users\14-1> C:\zabbix\Scripts\windows.hdd.ps1 discovery family
{«data»:[{"{#DISKID}":«sda»}]}
PS C:\Users\14-1> C:\zabbix\Scripts\windows.hdd.ps1 discovery fw
{«data»:[{"{#DISKID}":«sda»}]}
PS C:\Users\14-1> C:\zabbix\Scripts\windows.hdd.ps1 discovery capacity

локальной отрабатывает
C:\Users\14-1>smartctl --scan-open
/dev/sda -d ata # /dev/sda, ATA device
Схема windows.hard.ps1
Схема windows.hard.ps1
windows.hard.ps1
Показать

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

# 2017/02/13 AcidVenom v2
# Скрипт для обнаружения разных датчиков для Zabbix
param($1,$2)

# Автообнарежение датчиков температуры, напряжения, оборотов кулеров
# Ключи: discovery temperature/voltage/fan

# Получение таблицы для команды sensor обработка и вывод в переменную $items
# Получение объектов WMI (Get-WmiObject) sensor получим все классы для пространства|фильтрации объектов является Where-Object позволяет протестировать каждый объект в конвейере и передать его дальше, не соответствие удаляется из конвеера
# -eq равно; -and оба устловия должны быть истинны; -notmatch регулярные выражения для посика не соответсвия образцу; $2 входная переменная например temperature
if ($1 -eq "discovery") {
$items = Get-WmiObject -Namespace Root\OpenHardwareMonitor -Class sensor | Where-Object {$_.SensorType -eq "$2" -and $_.Name -notmatch "#|VBAT" -and $_.Parent -notmatch "hdd"}

# Поиск соответствия $_.SensorType равно "$2 входная переменная например temperature" оба условия должны быть равны $_.Name исключить из поиска вывода значения содержащие # и VBAT условия должны быть равны $_.Parent исключить из поиска вывода значения содержащие hdd

# Начало для вывода JONS data
write-host -NoNewline "{"
write-host -NoNewline "`"data`":["

# Переборка элементов циклом
$n = 0
foreach ($obj in $items) {
 $n = $n + 1
 $line =  "{`"{#ID}`":`"" + $obj.InstanceId + "`", `"{#NAME}`":`"" + $obj.Name + "`"}"
 If ($n -lt $items.Count) { $line = "$line,"}
 write-host -NoNewline $line
}

write-host -NoNewline "]"
write-host -NoNewline "}"

} 

# Зарезервированные переменные
# Ключи: VBAT получаем напряжение батарейки биос
elseif ($1 -eq "VBAT") {
    $obj = (Get-WmiObject -Namespace Root\OpenHardwareMonitor -Class sensor | Where-Object {$_.Name -eq "$1"}).Value -replace(",",".")
    Write-Host -NoNewline $obj
}


# Запрос значения по InstaceId от discovery
# 
else {
    if ((Get-WmiObject -Namespace Root\OpenHardwareMonitor -Class sensor | Where-Object {$_.InstanceId -eq "$1"}).SensorType -eq "Voltage") {
        $obj = (Get-WmiObject -Namespace Root\OpenHardwareMonitor -Class sensor | Where-Object {$_.InstanceId -eq "$1"}).Value -replace(",",".")}
    else {$obj = (Get-WmiObject -Namespace Root\OpenHardwareMonitor -Class sensor | Where-Object {$_.InstanceId -eq "$1"}).Value -replace(",.*","")}
    Write-Host -NoNewline $obj
}
windows.hdd.ps1
Показать

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

# 2017/04/12 AcidVenom v3
# Скрипт для обнаружения дисков и получения их данных для Zabbix

param($1,$2)

# Автообнарежение дисков
# Ключ: discovery
if ($1 -eq "discovery") {
try {
$items = smartctl-nc --scan-open | where {$_ -match "/dev/sd"}

write-host -NoNewline "{"
write-host -NoNewline "`"data`":["

$n = 0
foreach ($obj in $items) {
 $n = $n + 1
 if ((smartctl-nc -i $obj.substring(0,8) | where {$_ -match "SMART support is: Enabled"}) -ne $null) {
	If ($n -gt 1) {write-host -NoNewline ","}    
	$line =  "{`"{#DISKID}`":`"" + ($obj.substring(5,3)) + "`"}"
    write-host -NoNewline $line
    }
 }
write-host -NoNewline "]"
write-host -NoNewline "}"

}
catch {exit}
}

# Получение информации от дисков
# Ключи: 
else {
try {
if ($2 -eq "status") {
$obj = smartctl-nc -H /dev/$1 | where {$_ -match "result:"}
$obj = $obj.substring(50)
}
elseif ($2 -eq "model") {
$obj = smartctl-nc -i /dev/$1 | where {$_ -match "Device Model:"}
$obj = $obj.substring(18)
}
elseif ($2 -eq "family") {
$obj = smartctl-nc -i /dev/$1 | where {$_ -match "Model Family:"}
$obj = $obj.substring(18)
}
elseif ($2 -eq "fw") {
$obj = smartctl-nc -i /dev/$1 | where {$_ -match "Firmware Version:"}
$obj = $obj.substring(18)
}
elseif ($2 -eq "serial") {
$obj = smartctl-nc -i /dev/$1 | where {$_ -match "Serial Number:"}
$obj = $obj.substring(18)
}
elseif ($2 -eq "capacity") {
$obj = smartctl-nc -i /dev/$1 | where {$_ -match "User Capacity:"}
    if ($obj -match "User Capacity:") {
    $obj = $obj.Substring($obj.IndexOf("[")+1,$obj.IndexOf("]")-$obj.IndexOf("[")-1)
    }
    else {
    $obj = "N/A"
    }}


# Получение показателей SMART
# Значения без скобок и их содержимого
else {

$obj = smartctl-nc -A /dev/$1 | where {$_ -match "^ *$2"}
    try {$obj = $obj.Substring(87,$obj.IndexOf("(")-87)}
    catch {$obj = $obj.Substring(87)}
}}
catch {$obj = ""}

Write-Output $obj
}
Вложения
1OpenHardwareMonitor
1OpenHardwareMonitor
количество слов: 1855
demins
Новичок
Сообщения: 21
Стаж: 4 года 1 месяц

Старая верия Аппаратное обеспечение Windows PowerShell

Сообщение demins »

Добрый день! Скажите, пожалуйста, для работы скрипт на сервере нужен или все работает через powershell на агенте?
количество слов: 1
Аватара пользователя
Артём Мамзиков
Admin
Сообщения: 804
Стаж: 5 лет 1 месяц
Откуда: Вологодская область
Поблагодарили: 33 раза
Контактная информация:

Старая верия Аппаратное обеспечение Windows PowerShell

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

demins писал(а): Сб мар 07, 2020 12:29 скрипт на сервере нужен
Все работает через агента, скрипт на сервере не нужен.
количество слов: 5
demins
Новичок
Сообщения: 21
Стаж: 4 года 1 месяц

Старая верия Аппаратное обеспечение Windows PowerShell

Сообщение demins »

Спасибо! ОГРОМНОЕ!

Отправлено спустя 21 минуту 37 секунд:
В чем может быть проблема?

PS C:\Users\user> C:\zabbix\Scripts\windows.hard.ps1 discovery
{"data":[]}
PS C:\Users\user> C:\zabbix\Scripts\windows.hard.ps1 discovery temperature
{"data":[]}
PS C:\Users\user> C:\zabbix\Scripts\windows.hard.ps1 discovery fan
{"data":[]}
PS C:\Users\user>
количество слов: 44
Аватара пользователя
Артём Мамзиков
Admin
Сообщения: 804
Стаж: 5 лет 1 месяц
Откуда: Вологодская область
Поблагодарили: 33 раза
Контактная информация:

Старая верия Аппаратное обеспечение Windows PowerShell

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

Посмотри команды раздел под сполером команды для запросов
Проверь эту команду
wmic.exe /NAMESPACE:\\root\OpenHardwareMonitor PATH Sensor
количество слов: 7
demins
Новичок
Сообщения: 21
Стаж: 4 года 1 месяц

Старая верия Аппаратное обеспечение Windows PowerShell

Сообщение demins »

на рабочей машине не отрабатывает, пишет - Не возможно запустить приложение на вашем ПК.

1.взял новую машину, установил с 0 винду, установил из батника Auto install Zabbix Agent, настроил только ip ,
wmic.exe /NAMESPACE:\\root\OpenHardwareMonitor PATH Sensor отрабатывает,
smartmonitortools powershell отрабатывет,

2. Скачал zabbix appliance 4.4.6, устаовил, настроил таймаут = 15, сделал авторегистрацию , появился новый хост,

Напряжение батареи BIOS - Value "" of type "string" is not suitable for value type "Numeric (float)", больше данных нет((
количество слов: 36
Аватара пользователя
Артём Мамзиков
Admin
Сообщения: 804
Стаж: 5 лет 1 месяц
Откуда: Вологодская область
Поблагодарили: 33 раза
Контактная информация:

Старая верия Аппаратное обеспечение Windows PowerShell

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

demins писал(а): Сб мар 07, 2020 13:50 zabbix appliance 4.4.6
При установке пакета из exe надо сперва удалить старый агент службу и поставить новый и еще момент у нового прописывается (в службе) путь на новую конфигурацию она немного отличается в имени на это стоит обратить внимание, так же он ставится в папку Program Files она содержит пробел в имени надо экранировать команды пользовательские скрипты которые прописаны в конфиге. Если же сам агент данные передает а не работает ток передача скрипта возможно в ноdjq версии они ушли полностью от data там чисто данные jons идут хотя писали что поддерживаются и старые данные с data.
По порядку можно проверять должно все работать если нет искать где затык
wmic.exe /NAMESPACE:\\root\OpenHardwareMonitor PATH Sensor
Через повершел C:\zabbix\Scripts\windows.hard.ps1 VBAT
На самом сервере проверь что летит zabbix_get -s 192.168.355.28 -k ZScript[hard,VBAT]
количество слов: 42
demins
Новичок
Сообщения: 21
Стаж: 4 года 1 месяц

Старая верия Аппаратное обеспечение Windows PowerShell

Сообщение demins »

Вышла новая версия OHM , побывали с ней работать?
количество слов: 1
Аватара пользователя
Артём Мамзиков
Admin
Сообщения: 804
Стаж: 5 лет 1 месяц
Откуда: Вологодская область
Поблагодарили: 33 раза
Контактная информация:

Старая верия Аппаратное обеспечение Windows PowerShell

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

Да давно новых версий не было, а тут прям 2 вышло добавили поддержку нового железа в линейке nvidia и новые чипы судя по описанию на гитхабе)) Для старого железа не принципиально это для нового где железо новое и она там не работала сейчас возможно заработает.
количество слов: 2
demins
Новичок
Сообщения: 21
Стаж: 4 года 1 месяц

Старая верия Аппаратное обеспечение Windows PowerShell

Сообщение demins »

Добрый вечер!
установил , все работает.
Хочу уточнить, в шаблоне прототип Диск {#DISKID} - Температура [231]
а в smartmonitortools 7.0-1

231 SSD_Life_Left 0x0013 100 100 --- Pre-fail Always - 98
241 Lifetime_Writes_GiB 0x0012 100 100 --- Old_age Always - 5069
242 Lifetime_Reads_GiB

Нужно переделывать шаблон?
количество слов: 32
Ответить Вложения 19 Пред. темаСлед. тема

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