Как избежать экранирования данных конкретной папки в фильтре logstash - PullRequest
0 голосов
/ 11 сентября 2018

Есть ли способ избежать определенной папки / dir при обработке фильтра logstash, говоря, что у меня есть ситуация, когда я собираю журналы из двух разных сущностей, одна из них - Linux Hosts, а другая - сетевые журналы в одном месте,Тем не менее, для хоста Linux приходят с их именами по отдельности, поэтому я использую подстановочный знак, чтобы получить их все для обработки (/scratch/rsyslog/*/messages.log), но проблема в том, что теперь у него есть отдельная папка с именем «Sep», предназначенная для сетевых журналов, а также

Хотя у меня есть два разных фильтра для обоих, но для "syslog" он принимает все как подстановочный знак, так как я могу избежать этого "Sep " данные папки не могут быть обработаны во время syslog обработки фильтра.

Ниже приведен мой фильтр logstash.

#  cat /etc/logstash/conf.d/logstash-syslog.conf | grep -v "#"
input {
  file {
    path => [ "/scratch/rsyslog/*/messages.log" ]
    type => "syslog"
  }
  file {
    path => [ "/scratch/rsyslog/Sep/messages.log" ]
    type => "apic_logs"
  }
}

filter {
  if [type] == "syslog" {
    grok {
      match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp } %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
      add_field => [ "received_at", "%{@timestamp}" ]
      remove_field => ["@version", "host", "message", "_type", "_index", "_score", "path"]
    }
    syslog_pri { }
    date {
      match => [ "syslog_timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
 }
}
  if [type] == "apic_logs" {
    grok {
      match => { "message" => "%{CISCOTIMESTAMP:syslog_timestamp} %{CISCOTIMESTAMP} %{SYSLOGHOST:syslog_hostname} (?<prog>[\w._/%-]+) %{SYSLOG5424SD:fault_code}%{SYSLOG5424SD:fault_state}%{SYSLOG5424SD:crit_info}%{SYSLOG5424SD:log_severity}%{SYSLOG5424SD:log_info} %{GREEDYDATA:syslog_message}" }
      add_field => [ "received_at", "%{@timestamp}" ]
      remove_field => ["@version", "host", "message", "_type", "_index", "_score", "path"]
   }
 }
}
output {
        if [type] == "syslog" {
        elasticsearch {
                hosts => "my-elk:9200"
                manage_template => false
                index => "syslog-%{+YYYY.MM.dd}"
                document_type => "messages"
  }
 }
}

output {
        if [type] == "apic_logs" {
        elasticsearch {
                hosts => "my-elk:9200"
                manage_template => false
                index => "apic_logs-%{+YYYY.MM.dd}"
                document_type => "messages"
  }
 }
}

logstash 6.2.4

...