#rsyslog
Вопрос:
Прежде всего, это информация о моей архитектуре :
- Программное обеспечение : Rsyslog v8.24
- ОС : Debian 9.13
- Файл : /etc/rsyslog.d/splunk.conf
- Язык файла : расширенный или RainerScript
У меня есть эти 3 строки в моем файле :
# Aruba Networks logs filtering
ruleset(name="ArubaNetworksPort") {
if (re_match($msg, "AP:aaa-bbb01-ccc-ap")) then {
action(type="omfile" dynaFile="ArubaNetworksPath")
}
# VMware ESX logs filtering
ruleset(name="EsxPort") {
if (re_match($hostname, "tree-[a-zA-Z]{3}to[0-9]{3}")) then {
action(type="omfile" dynaFile="EsxPath")
}
}
# Unclassified logs filtering
ruleset(name="RemoteLogPort") {
*.* action(type="omfile" dynaFile="RemoteLogPath")
}
template (name="ArubaNetworksPath" type="string" string="/var/log/rsyslog/aruba-networks/%FROMHOST%/aruba-networks.log")
template (name="EsxPath" type="string" string="/var/log/rsyslog/esxvmware/%FROMHOST%/esxvmware.log")
template (name="RemoteLogPath" type="string" string="/var/log/remote/unclassified/%FROMHOST%/unclassified.log")
input(type="imudp" port="514" ruleset="ArubaNetworksPort")
input(type="imudp" port="514" ruleset="EsxPort")
input(type="imudp" port="514" ruleset="RemoteLogPort")
И когда я напрямую проверяю журналы, я вижу, что в сообщении или имени хоста прослушивателей оно совпадает с моими фильтрами, в то время как журналы переходят в «RemoteLogPath» вместо «ArubaNetworksPath» или «EsxPath».
Есть идеи, что происходит ? Я могу предоставить информацию, если вам нужна какая-то информация, просто спросите меня.
Ответ №1:
Вы не можете привязать один и тот же ввод к нескольким наборам правил. См., например, этот вопрос. Вы, наверное, просто хотите чего-то подобного:
ruleset(name="RemoteLogPort") {
if (re_match($msg, "AP:aaa-bbb01-ccc-ap")) then {
action(type="omfile" dynaFile="ArubaNetworksPath")
} else if (re_match($hostname, "tree-[a-zA-Z]{3}to[0-9]{3}")) then {
action(type="omfile" dynaFile="EsxPath")
} else {
action(type="omfile" dynaFile="RemoteLogPath")
}
}
input(type="imudp" port="514" ruleset="RemoteLogPort")