Безагентный мониторинг Windows систем

Main

Оценка: 85.72% - 14 Голосов

Общая

Одной из возможностей системы мониторинга Icinga2 является безагентный мониторинг операционных систем Windows при помощи плагина  check_wmi_plus. Как вы наверное уже поняли основывается он на инструменте управления Windows WMI.

Данный плагин находится в свободном распространении и доступен для загрузки на http://www.edcint.co.nz/checkwmiplus/

В статье рассматривается установка в ОС Debian 10

Подготовка к установке check_wmi_plus

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

apt update
apt upgrade
apt install libmonitoring-plugin-perl pkg-config libconfig-inifiles-perl libdatetime-perl libscalar-list-utils-perl libnumber-format-perl autoconf build-essential

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

Производим загрузку:

wget http://www.openvas.org/download/wmi/wmi-1.3.14.tar.bz2

Распаковываем:

tar xvf wmi-1.3.14.tar.bz2

Переходим в папку:

cd wmi-1.3.14

Для успешной установки необходимо отредактировать файл pidl:

nano Samba/source/pidl/pidl

583 строку заменить на:

@$pidl || die "Failed to parse $idl_file";

Компилируем данный клиент:

make "CPP=gcc -E -ffreestanding"

Компиляция займёт несколько минут.

В конце компиляции могут появится ошибки - это допустимо.

Файл wmic после компиляции появится в /bin/

Проверяем правильность работы клиента.

Для этого нам понадобится узел под управление ОС Windows.

Возможные ошибки и их устранение описаны тут.

На сервере под управлением Windows необходимо создать учётную запись с правами Администратора, от чьего имени плагин будет обращаться к ОС Windows.

Команда для проверки работоспособности WMI Клиента:

wmic -U [domain/]adminuser%password //host "select caption from Win32_OperatingSystem"

Если все сделано правильно то вывод ответа клиента будет примерно такой:

CLASS: Win32_ComputerSystem
Caption
Microsoft Windows Server 2012 R2 Standard

Возможные ошибки и их устранение.

Ошибка NT_STATUS_ACCESS_DENIED - Access denied

[wmi/wmic.c:196:main()] ERROR: Login to remote object.
NTSTATUS: NT_STATUS_ACCESS_DENIED - Access denied

1. Проверяем настройки брандмауэра Windows.

Должны быть разрешены входящие соединения для Инструментария управления Windows.

Брандмауэр

2. В том случае, если у вас не используется Active Directory то необходим проследить, что бы созданный вами пользователь, помимо группы Администраторы, входил в группу Пользователи DCOM.

Ошибка NT code 0x80041003

[wmi/wmic.c:196:main()] ERROR: Login to remote object.
NTSTATUS: NT code 0x80041003 - NT code 0x80041003

1. Данная ошибка так же появляется, если не используется Active Directory. И для ее устранения необходимо добавить созданного пользователя в группу безопасности инструментария управления Windows CIMV2 и добавить ему все возможные права.

WMI Security

 

UPD: Ошибка NT_STATUS_ACCESS_DENIED - Access denied связанная с обновлением серверов KB5014692

14 июня 2022 г. Microsoft выпустила исправление KB5004442 для Windows Server для устранения уязвимости, описанной в CVE-2021-26414. Этот патч обеспечивает новую «усиленную безопасность» для WMI.

Для решения следует внести изменения в реестр Windows и перезагрузить систему.

Путь: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Ole\AppCompat
Имя значения: "RequireIntegrityActivationAuthenticationLevel"
Тип: dword
Значение: 0x00000000

 

Установка check_wmi_plus.

Скачиваем и распаковываем check_wmi_plus:

wget http://edcint.co.nz/checkwmiplus/sites/default/files/check_wmi_plus.v1.63.tar.gz
tar xzvf check_wmi_plus.v1.63.tar.gz

В данном архиве есть несколько папок и файлов:

1. Для простоты описания работы плагина файл check_wmi_plus.pl после распаковки был помещен в /usr/lib/nagios/plugins/;

2. Папка etc в архиве содержит папку check_wmi_plus - ее перемещаем в /etc/ со всем ее содержимым;

3. После перемещения папки переходим  /etc/check_wmi_plus и переименовываем check_wmi_plus.conf.sample в check_wmi_plus.conf.

Настройка check_wmi_plus.conf

Для успешной работы плагина check_wmi_plus необходимо внести несколько изменений в /etc/check_wmi_plus/check_wmi_plus.conf

1. $base_dir= указать папку расположения плагина. В моем случае $base_dir='/usr/lib/nagios/plugins';

2. $wmic_command= указать путь к wmic клиенту, который мы установили выше. В моем случае:

$wmic_command="/bin/wmic";

Для проверки работоспособности плагина выполним команду:

/usr/lib/nagios/plugins/check_wmi_plus.pl -H host_address -u [domain/]adminuser -p password -s os -m info

И получим ответ на подобии:

OK - OS is Microsoft Windows 7 Профессиональная , Service Pack 1, Installation Timestamp=20161205140553.000000+180 (0.9 days old)|'OS Installation Age'=0.9days;

Описание работы плагина check_wmi_plus в commands.conf

Прежде чем описать работу плагина нам необходимо создать файл хранящий данные о авторизации на сервере Windows.

Сделаем это простым методом:

В Папке с /etc/icinga2/ создаём файл wmi.auth и наполняем его следующими строками:

username=adminuser
password=password
domain=[domain]

Далее описываем работу плагина в файле /etc/icinga2/conf.d/commands.conf

object CheckCommand "check_wmi" {
  import "plugin-check-command"
  command = [ PluginDir + "/check_wmi_plus.pl" ]
  arguments = {
    "--inidir" = "$wmi_inidir$"
    "-H" = "$host.address$"
    "-A" = "$wmi_authfile_path$"
    "-m" = "$check_mode$"
    "-s" = "$wmi_submode$"
    "-a" = "$wmi_arg1$"
    "-o" = "$wmi_arg2$"
    "-3" = "$wmi_arg3$"
    "-4" = "$wmi_arg4$"
    "-y" = "$wmi_delay$"
    "-w" = "$wmi_warn$"
    "-c" = "$wmi_crit$"
    "--nodatamode" = {
      set_if = "$wmi_nodatamode$"
    }
  }
  vars.wmi_authfile_path = "/etc/icinga2/wmi.auth"
  vars.wmi_inidir = "/etc/check_wmi_plus/check_wmi_plus.d"
  vars.wmi_nodatamode = false
}

Описываем шаблон плагина

В /etc/icinga2/conf.d/templates.conf

template Service "wmi-service" {
  import "generic-service"
  check_command = "check_wmi"
  check_interval = 1m
  retry_interval = 1m
}

Описываем сервис на примере сбора информации о версии установленной ОС

В файле /etc/icinga2/conf.d/services.conf

apply Service "Windows Version" {
  import "wmi-service"
  vars.check_mode = "info"
  vars.wmi_submode = "os"
  assign where host.vars.os == "Windows"
  ignore where host.vars.disable_wmi
}

Полный перечень команд, поддерживающихся плагином можно посмотреть тут.

Ставим на мониторинг машину под управлением ОС Windows.

Так как в предыдущей статье мы решили разделять машин по операционной системе то в папке /etc/icinga2/conf.d/ создаём файл windows.conf и добавляем в него следующие строки:

object Host "произвольное название объекта хоста" {
  address = "Ip адрес или DNS имя"
  display_name = "Отображаемое имя хоста в веб-интерфейсе"
  check_command = "hostalive"
  vars.os = "Windows"
  vars.group = "windows"
}

Проверяем конфигурацию Icinga2:

service icinga2 checkconfig

Перезапускаем сервис Icinga2:

service icinga2 restart

После этого ваш узел будет добавлен в мониторинг и и вы увидите его в вашем веб-интерфейсе.

Ошибка NT code 0x80041010

Данная ошибка может указывать как на сломанные счётчики производительности Windows, так и на проблемы доступа к state-файлу на сервере Icinga2.

Проверить права доступа поможет команда:

ls -ls /tmp/*.state

Все выведенные файлы должны иметь право на чтение и запись для того пользователя, от чьего имени запущена Icinga2.

Файлы с неправильным доступом можно просто удалить.

rm -rf /tmp/*.state

  • Просмотров: 18540
Комментарии   
0 #1 Дмитрий 02.03.2018 18:23
Не рабочий вариант, ни как не смог настроить.

cp bin /bin/wmic нет такого файла или каталога,
вообще не компилируется, хотелось бы увидеть мануалы по настройке или на debian 9
или хотя бы рабочие под debian 8, жаль а так много полезного по данному софту.
Цитировать
0 #2 admin 02.03.2018 18:37
Цитирую Дмитрий:
Не рабочий вариант, ни как не смог настроить.


Вариант рабочий под Debian 8 и 9 - подтверждение https://itcrowd.top/%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%BE%D0%B5/icinga2demo. Напишите в личку
Цитировать
0 #3 Олег 13.11.2018 17:46
выдает ошибку при проверке конфигурации Icinga2
ругается на завершающий символ.
голову я себе уже сломал


* checking Icinga2 configuration. Check '/var/log/icinga2/startup.log' for details.
adman@icinga:~$ sudo service icinga2 checkconfig
* checking Icinga2 configuration
information/cli: Icinga application loader (version: r2.7.0-1)
information/cli: Loading configuration file(s).
critical/config: Error: syntax error, unexpected $end, expecting '}'
Location: in /etc/icinga2/conf.d/commands.conf: 165:1-165:1
/etc/icinga2/conf.d/commands.conf(163): vars.wmi_inidir = "/etc/check_wmi_plus/check_wmi_plus.d/"
/etc/icinga2/conf.d/commands.conf(164): vars.wmi_nodatamode = flase
/etc/icinga2/conf.d/commands.conf(165): }
^

* checking Icinga2 configuration. Check '/var/log/icinga2/startup.log' for details.
Цитировать
0 #4 admin 13.11.2018 18:53
Цитирую Олег:
выдает ошибку при проверке конфигурации Icinga2
ругается на завершающий символ.
голову я себе уже сломал


Раз выдает значит ошибка - пришлите файл на e-mail, посмотрю
Цитировать
Добавить комментарий