Журналы не соответствуют ни одному из моих условий, но это должно

#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")