【问题标题】:regex for logstash.conf input filter pathlogstash.conf 输入过滤器路径的正则表达式
【发布时间】: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


    【解决方案1】:

    很遗憾,文件插件中的路径不支持正则表达式。它只支持通配符。

    【讨论】:

    • logstash 之外的一种可能性是编写一个基于正则表达式的 bash 脚本,在另一个位置创建指向这些文件夹的符号链接。然后,logstash 可以从新位置存储。该脚本可以由 cron 调度,并为任何新文件夹添加新的符号链接。
    • @hmm ,但这对我不起作用。我们可以在@rsyslog.conf 做点什么吗?
    • 我意识到 `^[A-Z].*` 这不是正则表达式,而是我相信可以使用的通配符。
    猜你喜欢
    • 2019-11-13
    • 2015-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多