我正在使用带有filebeat的ELK堆栈。
filebeat.conf
filebeat:
prospectors:
-
paths:
- /home/ubuntu/logs_*
input_type: log
output:
logstash:
hosts: [${LOGSTASH_PORT_5044_TCP_ADDR}]
index: filebeat
console:
pretty: true
这是从文件 logs_test
传递日志示例日志
{"name":"test","statusCode":0,"deployment":"production","hostname":"ip-random-address","level":30,"jobName":"testJob","date":"2016-07-18T03:15:02.075Z","jobType":"script","msg":"","time":"2016-07-18T03:15:02.076Z","v":0}
我想在字段statusCode为1
时对外部URL进行HTTP调用整个日志对象正在传递给logstash。
我的 logstash配置
input {
beats {
port => 5044
codec => "json"
}
}
output {
if ([statusCode] and [statusCode] == 1) {
http {
format=>"message"
http_method=>"post"
url=>"http://www.example.com"
message=>'{"text": "%{some_pattern_matcher}"}'
}
}
}
[问题] " some_pattern_matcher" 应该将所有字段发送到HTTP请求。
PS:%{mesage}不起作用。
答案 0 :(得分:0)
input {
beats {
port => 5044
codec => "json"
}
}
filter{
grok{
match => { "message" => "%{GREEDYDATA:data}" }
}
}
output {
if ([statusCode] and [statusCode] == 1) {
http {
format=>"message"
http_method=>"post"
url=>"http://www.example.com"
message=> %{data}
}
}
}
我还没有尝试过。所以尝试这个,让我知道这个解决方案是否有效。如果没有,请发布你得到的错误。