【发布时间】:2018-09-28 07:41:37
【问题描述】:
我有一个 logstash.conf 文件,我在其中为两种不同类型的日志定义了两个不同的路径,一个用于system logs,另一个用于network logs。但是,这些日志被收集在与/scratch/rsyslog 相同的目录位置,它在转储日志之前为每个主机创建一个单独的文件夹,例如..
1) /scratch/rsyslog/server01/messages.log
系统日志
/scratch/rsyslog/server02/messages.log等等
2) 对于网络日志,类似:
/scratch/rsyslog/Sep/messages.log
以下是这两种日志的输入过滤器和路径。现在的问题是我正在使用通配符来匹配以获取所有带有* 的名称,这里path => [ "/scratch/rsyslog/*/messages.log" ] 可以获取所有内容。
input {
file {
path => [ "/scratch/rsyslog/*/messages.log" ]
type => "syslog"
}
file {
path => [ "/scratch/rsyslog/Sep/messages.log" ]
type => "apic_logs"
}
}
所以,在 系统日志 的第一个路径中,我需要以小写字母开头,其中可能包含一些数字,例如 server01。
也许我在想
^[a-z0-9]
而在第二个路径是 network logs 我需要得到第一个字母以大写字母开头的小写字母(这些是月份名称,通常就像我提到的 Sep 一样,它会在当月自行更改结束)。
也许 ^[A-Z].* 第二个
我正在寻找适合这种情况的正则表达式。 任何帮助将不胜感激。
【问题讨论】:
标签: regex logstash logstash-grok logstash-configuration