我使用rsyslog来监视我的系统日志并将它们发送到Logstash + Kibana。
我的系统日志消息记录为JSON。它们看起来像这样:
{"foo":"bar", "timegenerated": 43843274834}
rsyslog配置如下:
module(load="omelasticsearch")
#define a template to print all fields of the message
template(name="messageToES" type="list" option.json="on") {
property(name="msg")
}
*.* action(type="omelasticsearch"
server="localserverhere"
serverport="80"
template="messageToES")
Kibana很好,因为如果我对它运行CURL命令,它会收到记录。代码如下:
curl -XPOST myserver/test/bar -d '{"test": "baz", "timegenerated":1447145221519}'
当我运行rsyslogs并将其指向虚拟服务器时,我可以看到带有效json的传入请求。但是,当我将其指回我的logstash服务器时,它不会显示在logstash或kibana中。
有谁知道如何将syslogs作为json发送到Kibana / logstash?
答案 0 :(得分:0)
我从未使用它,但看起来你丢失了配置文件中的内容。文档有一个非常彻底的例子:
module(load="omelasticsearch")
template(name="testTemplate"
type="list"
option.json="on") {
constant(value="{")
constant(value="\"timestamp\":\"") property(name="timereported" dateFormat="rfc3339")
constant(value="\",\"message\":\"") property(name="msg")
constant(value="\",\"host\":\"") property(name="hostname")
constant(value="\",\"severity\":\"") property(name="syslogseverity-text")
constant(value="\",\"facility\":\"") property(name="syslogfacility-text")
constant(value="\",\"syslogtag\":\"") property(name="syslogtag")
constant(value="\"}")
}
action(type="omelasticsearch"
server="myserver.local"
serverport="9200"
template="testTemplate"
searchIndex="test-index"
searchType="test-type"
bulkmode="on"
queue.type="linkedlist"
queue.size="5000"
queue.dequeuebatchsize="300"
action.resumeretrycount="-1")
根据您要执行的操作,您似乎需要插入显示localserverhere
的{{1}}。看起来你有ES接受80端口的东西,所以你放入myserver.local
而不是80
。