Есть ли способ избежать определенной папки / 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