Конфигурация оборудования пользовательских ПК в Icinga2
Общая
В данной статье представлен скрипт, позволяющий отображать в системе мониторинга Icinga2 такой состав оборудования как модель CPU, информацию о номере, количестве, объеме и номерах занимаемых слотов ОЗУ, модель HDD и его статусе, модель и производителе ПК, количество и модель подключенных дисплеев а так-же имя ПК и учетной записи активного пользователя.
Скрипт проверялся в ОС Debian 10
Для работы плагина нам понадобится WMI Client. Скачать можно https://assets.nagios.com/downloads/nagiosxi/agents/wmi-1.3.14.tar.gz
Подробная установка описана в статье Безагентный мониторинг Windows систем
Скрип доступен для загрузки на https://l.itcrowd.top/f/cec8c3551e4642bdbc58/
Для установки поместите в папку с плагинами. По умолчанию \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
https://itcrowd.top/icinga-wmi-check-hardware#sigProId81db8439f9
- Просмотров: 6764