【发布时间】:2017-07-04 10:35:51
【问题描述】:
环境
- Ubuntu 16.04
- Logstash 5.2.1
- 弹性搜索 5.1
我已经配置了我们的 Deis 平台,可以毫无问题地将日志发送到我们的 Logstack 节点。但是,我对 Ruby 还是很陌生,而正则表达式并不是我的强项。
日志示例:
2017-02-15T14:55:24UTC deis-logspout[1]: 2017/02/15 14:55:24 routing all to udp://x.x.x.x:xxxx\n
Logstash 配置:
input {
tcp {
port => 5000
type => syslog
codec => plain
}
udp {
port => 5000
type => syslog
codec => plain
}
}
filter {
json {
source => "syslog_message"
}
}
output {
elasticsearch { hosts => ["foo.somehost"] }
}
Elasticsearch 输出:
"@timestamp" => 2017-02-15T14:55:24.408Z,
"@version" => "1",
"host" => "x.x.x.x",
"message" => "2017-02-15T14:55:24UTC deis-logspout[1]: 2017/02/15 14:55:24 routing all to udp://x.x.x.x:xxxx\n",
"type" => "json"
期望的结果:
"@timestamp" => 2017-02-15T14:55:24.408Z,
"@version" => "1",
"host" => "x.x.x.x",
"type" => "json"
"container" => "deis-logspout"
"severity level" => "Info"
"message" => "routing all to udp://x.x.x.x:xxxx\n"
如何将消息中的信息提取到各自的字段中?
【问题讨论】:
-
您的意思是将您的 message 提取到四个不同的 fields (您提到的部分)?正如我从上面的 ES output 中看到的那样,您是否已经这样做了。那么你的问题是什么?关于方法?
-
对不起,如果不够简洁,我更新了问题。
标签: ruby regex elasticsearch logstash deis