Здравствуйте! Прохожу курс “от 0 до Linux админа” на платформе Yodo и столкнулся с такой проблемой: не получается корректно собирать и упорядочивать логи с моих Windows серверов на syslog сервере, который работает на openSUSE Leap 16 с rsyslog. Сами Windows серверы пересылают события через SolarWinds Event Log Forwarder for Windows.
Я хочу организовать структуру папок, где для каждого сервера будет своя папка, а внутри нее — файлы логов для событий безопасности, событий Windows, событий Active Directory и так далее. Но на данный момент все события с каждого сервера фильтруются в один файл, из которого очень сложно и долго извлекать полезную информацию.
Пытался настроить динамическую структуру имен файлов и правила фильтрации, но это не сработало, и я не могу понять, что именно пошло не так. Вот что у меня сейчас настроено:
template(name="SolarWindsDynamicPath" type="list") {
constant(value="/var/log/syslog/servers/")
property(name="hostname")
constant(value="/")
property(name="$now")
constant(value="-")
property(name="msg" regex.expression="MSWinEventLog#[0-9]+#([A-Za-z0-9 ]+)" regex.submatch="1" regex.nomatchmode="FIELD" caseconversion="lower")
constant(value=".log")
}
template(name="CleanLogLine" type="list") {
property(name="timestamp" dateFormat="rfc3339")
constant(value=" ")
property(name="hostname")
constant(value=" ")
property(name="rawmsg" controlcharacters="drop")
constant(value="\n")
}
if ($msg contains "MSWinEventLog") then {
action(type="omfile" dynaFile="SolarWindsDynamicPath" template="CleanLogLine")
stop
}
Конфигурация проходит проверку синтаксиса rsyslogd, но не работает, и логи серверов попадают в общий ‘warn’ лог-файл, указанный в rsyslog.conf. Буду признателен за любую помощь или совет!