Конфигурация оборудования пользовательских ПК в Icinga2

Main

Оценка: 99.5% - 4 Голосов

Общая

В данной статье представлен скрипт, позволяющий отображать в системе мониторинга Icinga2 такой состав оборудования как модель CPU, информацию о номере, количестве, объеме и номерах занимаемых слотов ОЗУ, модель HDD и его статусе, модель и производителе ПК, количество и модель подключенных дисплеев а так-же имя ПК и учетной записи активного пользователя.

Скрипт проверялся в ОС Debian 10

Для работы плагина нам понадобится WMI Client. Скачать можно https://assets.nagios.com/downloads/nagiosxi/agents/wmi-1.3.14.tar.gz

Подробная установка описана в статье Безагентный мониторинг Windows систем

Скрип доступен для загрузки на https://lib.itcrowd.top/f/4959a0a3f3c94d1b94b8/

Для установки поместите в папку с плагинами. По умолчанию \usr\lib\nagios\plugins

Параметры скрипта:

[-A] - путь к файлу аутентификации;

[-H] - имя или IP-адрес узла;

[-C] - команда для исполнения:

displaybyid - отобразить ID дисплея. Работает вместе с параметром [-I]

cpuinfo - информация о CPU

meminfo - информация о RAM

pcmodel - производитель и модель ПК

username - имя ПК и активного пользователя

smartstatinfo - модель диска и его статус

[-I] - путь к файлу с моделями дисплеев.

По умолчанию в системе стоит драйвер "Стандартный монитор", что не дает определить точную модель. Но в системе так-же хранится ID дисплея, поэтому создав файл с сопоставлением ID и модели можно понять какой дисплей подключен к ПК.

Пример файла с сопоставлением ID и имени файла:

DELD065,Dell U2715H подключен через Displayport
DELD066,Dell U2715H подключен через miniDisplayport
DELD067,Dell U2715H подключен через HDMI 1
DELD069,Dell U2715H подключен через HDMI 2
SAM08A4,Samsung S19B300n подключен через VGA
ACI25F1,ASUS VE258 подключен через DVI

И так далее... Обычно "зоопарк" мониторов в организации не особо большой)

Синтаксис:

wmi_check_hardware.sh -A /path/to/file -C command -I /path/to/file -H hostname\ip

Пример файла авторизации:

username=username@domain
password=userpassword
 

Настройка для работы в Icinga2

 

Файл /etc/icinga2/conf.d/commands.conf

object CheckCommand "wmi_check_hardware" {
 import "plugin-check-command"
 command = [ PluginDir + "/wmi_check_hardware.sh" ]
 arguments = {
 "-H" = "$host.address$"
 "-A" = "$auth_file$"
 "-C" = "$wmi_check_info$"
 "-I" = "$id_file$"
 }
 vars.wmi_check_info = "$service.vars.checkwmiinfo$"
 vars.auth_file = "файл авторизации"
 vars.id_file = "файл ID - имя дисплея"
} 

 

Файл /etc/icinga2/conf.d/services.conf

apply Service "User mem info" {
 import "wmi_hardwarecheck"
 display_name = "Информация о RAM"
 vars.checkwmiinfo = "memoryinfo"
enable_perfdata = false
assign where host.vars.os == "Windows_users"
}
apply Service "User cpu info" {
 import "wmi_hardwarecheck"
 display_name = "Информация о CPU"
 vars.checkwmiinfo = "cpuinfo"
enable_perfdata = false
assign where host.vars.os == "Windows_users"
}
apply Service "User display info" {
 import "wmi_hardwarecheck"
 display_name = "Информация о Дисплее"
 vars.checkwmiinfo = "displaybyid"
# enable_perfdata = false
assign where host.vars.os == "Windows_users"
}
apply Service "User hdd info" {
 import "wmi_hardwarecheck"
 display_name = "Информация о Диске"
 vars.checkwmiinfo = "smartstatinfo"
enable_perfdata = false
assign where host.vars.os == "Windows_users"
}
apply Service "User username info" {
 import "wmi_hardwarecheck"
 display_name = "Имя ПК и его пользователя"
 vars.checkwmiinfo = "username"
enable_perfdata = false
assign where host.vars.os == "Windows_users"
}
apply Service "User pcmodel info" {
 import "wmi_hardwarecheck"
 display_name = "Информация о моделе ПК"
 vars.checkwmiinfo = "pcmodel"
enable_perfdata = false
assign where host.vars.os == "Windows_users"
}

 

Файл /etc/icinga2/conf.d/templates.conf

template Service "wmi_hardwarecheck" {
 import "generic-service"
 check_command = "wmi_check_hardware"
 check_interval = 30m
 retry_interval = 3m
 }

 

Файл /etc/icinga2/conf.d/groups.conf

object ServiceGroup "displaybyid service" {
 display_name = "Модель дисплея"
assign where match("displaybyid", service.vars.checkwmiinfo)
}
object ServiceGroup "cpuinfo service" {
 display_name = "Модель CPU"
assign where match("cpuinfo", service.vars.checkwmiinfo)
}
object ServiceGroup "meminfo service" {
 display_name = "Информация об установленной ОЗУ"
assign where match("meminfo", service.vars.checkwmiinfo)
}
object ServiceGroup "pcmodel service" {
 display_name = "Информация о модели ПК"
assign where match("pcmodel", service.vars.checkwmiinfo)
}
object ServiceGroup "username service" {
 display_name = "Имя ПК и его пользователя"
assign where match("username", service.vars.checkwmiinfo)
}
object ServiceGroup "smartstatinfo service" {
 display_name = "Информация о установленных дисках"
assign where match("smartstatinfo", service.vars.checkwmiinfo)
}

 

В конфигурацию узла необходимо добавить

vars.os = "Windows_users"

 

Далее проверяем конфигурацию service icinga2 checkconfig и если все хорошо то перезапускаем службу service icinga2 restart

 

View the embedded image gallery online at:
https://itcrowd.top/icinga-wmi-check-hardware#sigProId81db8439f9

 

 

 

Добавить комментарий


Logo