洛格斯塔什.按职位编号获取字段



Background

我有一个方案:来自我的应用程序的日志通过 rsyslog 到中央日志服务器,然后到 Logstash 和 Elasticsearch。来自应用程序的日志是纯 JSON,但 rsyslog 会在日志中添加"时间戳"、"应用程序名称"和"服务器名称"文件。日志变成这样:

timestamp app-name server-name [JSON]

问题

如何使用 Logstash 过滤器删除前三个字段?我可以按位置编号获取字段(如在awk中)并执行以下操作吗:

filter {
  somefilter_name {
      remove_field => $1, $2, $3 
  }
}

或者也许我的愿景完全错误,我必须以另一种方式做到这一点?

谢谢!

使用 grok{} 来匹配它们(它们本身可能很有用!)并将事件的其余部分放回 [message] 字段中:

给定输入如下:

2015-06-16 13:37:30 myApp myServer { "jsonField": "jsonValue" }

而这个配置:

grok {
     pattern => "%{TIMESTAMP_ISO8601:timestamp} %{WORD:app} %{WORD:server} %{GREEDYDATA:message}"
     overwrite => [ "message" ]
}
json {
    source => "message"
}

将生成此文档:

{
   "message" => "{ "jsonField": "jsonValue" }",
   "@version" => "1",
   "@timestamp" => "2015-06-16T20:38:55.658Z",
   "host" => "0.0.0.0",
   "timestamp" => "2015-06-16 13:37:30",
   "app" => "myApp",
   "server" => "myServer",
   "jsonField" => "jsonValue"
}

相关内容

  • 没有找到相关文章

最新更新