我正在尝试将一部分消息发送到Flowdock作为Logstash的输出。不幸的是,由于this issue,我基本上没有回复为什么我的消息没有成功。简单地说到一个基本的例子,即使我将输出配置更改为以下内容,我也会看到问题:
output {
http {
http_method => "post"
url => "https://api.flowdock.com/v1/messages/team_inbox/API_TOKEN"
format => "message"
content_type => "application/json"
message => "{\"source\":\"logstash\",\"from_address\":\"me@example.com\", \"subject\":\"Log Message\", \"content\":\"test\"}"
}
}
我知道,输出通常是有效的,因为如果我将以下内容添加到输出中,我会看到写入该文件的日志消息:
file {
path => "/mnt/test.log"
}
我也知道我发送给Flowdock的http消息应该可以使用
curl -X POST https://api.flowdock.com/v1/messages/team_inbox/API_TOKEN -d "{\"source\":\"logstash\",\"from_address\":\"me@example.com\",\"subject\":\"Log Message\",\"content\":\"test\"}" -H "Content-Type: application/json"
会将消息发布到团队收件箱。
有没有办法解决这个问题,以确定我的logstash输出失败的原因?
答案 0 :(得分:3)
我会先将Logstash的请求发送到刚刚输出收到的请求的服务,例如RequestBin,然后开始调试此问题。
类似的东西:
output {
http {
http_method => "post"
url => "http://requestb.in/<created_id>"
format => "message"
content_type => "application/json"
message => "{\"source\":\"logstash\",\"from_address\":\"me@example.com\",\"subject\":\"Log Message\", \"content\":\"test\"}"
}
}
在您确定Logstash正在进行的请求是正确的之后,请接受该请求(最好是确切的数据)并尝试使用curl
或其他方式将其发送到Flowdock。
此时,您应该能够告诉为什么请求在任何一方都失败并相应地通知该方(即打开https://logstash.jira.com/secure/Dashboard.jspa的票证或发送电子邮件至support@flowdock.com)。