Безагентный мониторинг Windows систем
Общая
Одной из возможностей системы мониторинга 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 и добавить ему все возможные права.
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
https://itcrowd.top/bezagentnyj-monitoring-windows-sistem#sigProId2e813ce6be
Все выведенные файлы должны иметь право на чтение и запись для того пользователя, от чьего имени запущена Icinga2.
Файлы с неправильным доступом можно просто удалить.
rm -rf /tmp/*.state
- Просмотров: 18540
cp bin /bin/wmic нет такого файла или каталога,
вообще не компилируется, хотелось бы увидеть мануалы по настройке или на debian 9
или хотя бы рабочие под debian 8, жаль а так много полезного по данному софту.
Вариант рабочий под Debian 8 и 9 - подтверждение https://itcrowd.top/%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%BD%D0%BE%D0%B5/icinga2demo. Напишите в личку
ругается на завершающий символ.
голову я себе уже сломал
* 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.
Раз выдает значит ошибка - пришлите файл на e-mail, посмотрю
RSS лента комментариев этой записи