Конфигурация оборудования пользовательских ПК в 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
- Просмотров: 5773