2015-11-10 5 views
3

Я использую rsyslog для просмотра моих системных журналов и отправки их в Logstash + Kibana.Отправить JSON от rsyslog до 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 или kibana.

Кто-нибудь знает, как отправить syslogs как json в Kibana/logstash?

+0

Вы не «отправляете» что-либо в кибану, а отправляете его в поиск elastics и даете кибане запросить его для вас. –

+0

Проверьте журналы логсташа и elasticsearch. Добавьте stdout {} вывод строки в logstash, чтобы узнать, что он думает. Включение отладки в logstash (флаг командной строки). –

ответ

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, где он показывает myserver.local. Также похоже, что у вас есть ES, принимающий материал на порту 80, так что вы бы поставили 80 вместо 9200.