Logstash:如何将文件名添加为字段



我正在使用 Logstash + Elasticsearch + Kibana 来概述我的 Tomcat 日志文件。

对于每个日志条目,我需要知道它来自的文件的名称。我想将其添加为字段。有没有办法做到这一点?我用谷歌搜索了一下,我只找到了这个 SO 问题,但答案不再是最新的。

到目前为止,我看到的唯一解决方案是为每个可能的文件名指定单独的配置,具有不同的"add_field",如下所示:

input {
  file {
     type => "catalinalog"
     path => [ "/path/to/my/files/catalina**" ]
     add_field => { "server" => "prod1" }
  }
}

但是,每次有新的可能文件名时,我都需要重新配置 logstash。有什么更好的主意吗?

嗨,

我添加了一个 grok 过滤器来执行此操作。我只想使用文件名而不是路径,但您可以根据需要进行更改。

filter {
  grok {
    match => ["path","%{GREEDYDATA}/%{GREEDYDATA:filename}.log"]
  }
}
如果您想将

消息和文件名合并到一个事件中:

filter {
grok {
    match => { 
        message => "ERROR (?<function>[S]*)"
        }
}
grok {
    match => { 
        path => "%{GREEDYDATA}/%{GREEDYDATA:filename}.log"
        }
}}  

ElasticSearch 中的结果(专注于"文件名"和"函数"字段):

"_index": "logstash-2016.08.03",
    "_type": "logs",
    "_id": "AVZRyEI49-A6kyBCq6Yt",
    "_score": 1,
    "_source": {
      "message": "27/07/16 12:16:18,321 ERROR blaaaaaaaaa.internal.com",
      "@version": "1",
      "@timestamp": "2016-08-03T19:01:33.083Z",
      "path": "/home/admin/mylog.log",
      "host": "my-virtual-machine",
      "function": "blaaaaaaaaa.internal.com",
      "filename": "mylog"
    }

相关内容

  • 没有找到相关文章

最新更新