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

Main

Оценка: 98.83% - 6 Голосов

Общая

В данной статье представлен скрипт, позволяющий отображать в системе мониторинга 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 и имени файла:

{code}

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

{lang}text{highlight}{end-code}

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

Синтаксис:

{code}

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

{lang}bash{highlight}{end-code}

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

{code}

username=username@domain
password=userpassword

{lang}text{highlight}{end-code} 

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

 

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

{code}

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 - имя дисплея"

{lang}bash{highlight}{end-code}

 

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

{code}

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"
}

{lang}bash{highlight}{end-code}

 

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

{code}

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

{lang}bash{highlight}{end-code}

 

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

{code}

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)
}

{lang}bash{highlight}{end-code}

 

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

{code}

vars.os = "Windows_users"

{lang}bash{highlight}{end-code}

 

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

 

 

 

 

  • Просмотров: 7035

You have no rights to post comments