В предыдущей статье было показано как можно настроить сбор логов с различных серверов под управлением Linux и FreeBSD на один используя syslog. Однако что делать если в сети есть ещё и машина под Windows?
Возникает разумное желание так же собирать EventLog из Windows на тот же сервер, что и логи с остальных серверов. Далее будет рассмотрено одно из возможных решений этой задачи.
Начальные условия у нас практически такие же, как и в предыдущей статье, с одним дополнением: в сети присутствует один (или несколько - не суть важно) сервер под Windows.
Самым удобным решением этой задачи является вариант с отсылкой сообщений из EventLog Windows в syslog на сервере сбора логов. Для этого можно использовать инструмент evtsys, разработанный в Purdue Univercity.
Для установки нужно скачать архив со страницы проекта и распаковать его в директорию %systemroot%\system32 (Обычно это C:\Windows\system32).
После распаковки нужно запустить командную строку: «Пуск» -> «Программы» -> «Стандартные» -> «Командная строка». И выполнить в ней следующие команды:
%SystemDrive% cd %SystemRoot%\System32 evtsys -i -h 192.168.2.1 net start evtsys
Первыми двумя командами осуществляется переход в директорию с файлами утилиты, третья устанавливает evtsys как системную службу (она получит имя "Eventlog to Syslog"). Последняя команда запускает эту службу.
После этого системные логи из EventLog начнут дублироваться в удалённый Syslog.
Если по какой-то причине нужно удалить evtsys то в командной строке нужно выполнить следующие команды:
%SystemDrive% cd %SystemRoot%\System32 net stop evtsys evtsys -u del evtsys.*
Здесь сначала останавливается служба, потом удаляется запись о ней из реестра системы и наконец удаляются сами файлы утилиты.
Отдельно нужно оговориться о том, что в русской версии Windows сообщения пересылаются в кодировке cp1251, потому для чтения логов на сервере сбора логов имеет смысл воспользоваться примерно такой командой:
iconv -f cp1251 192.168.2.201-notice.log | less
На этом всё. Приятной работы!