2015-04-14 6 views
3

Я пытаюсь реализовать централизованный лог-сервер, используя стек ELK: Elasticsearch, Logstash, Kibana. Он будет получать журналы из многих приложений. В принципе у меня есть приложение, которое использует Tomcat Logback со следующей конфигурацией:Отправить журналы Tomcat в Logstash

<appender name="ROLLING" 
    class="ch.qos.logback.core.rolling.RollingFileAppender"> 
    [...] 
</appender> 

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 
    <encoder> 
     <pattern>%date %-5level %logger - %msg%n</pattern> 
    </encoder> 
</appender> 


<appender name="stash" class="net.logstash.logback.appender.LogstashTcpSocketAppender"> 
    <remoteHost>my_remote_host</remoteHost> 
    <port>5000</port> 

    <encoder class="net.logstash.logback.encoder.LogstashEncoder" /> 
</appender> 


<root level="DEBUG"> 
    <appender-ref ref="ROLLING" /> 
    <appender-ref ref="STDOUT" /> 
    <appender-ref ref="stash" /> 
</root> 

Так теоретически это должно отправить через TCP все журналы Logback ... На my_remote_host я разворачивал elasticsearch , логсташ и кибана. И все они работают. Это конфигурация для logstash:

input { 
    stdin { 
    type => "human" 
    } 
    tcp { 
    port => 5000 
    codec => "json" 
    mode => "server" 
    } 
} 

output { 
    stdout {} 
    elasticsearch { 
    host => "my_remote_host" 
    } 
} 

Если я печатаю что-то STDIN в моем logstash например, успешно индексирует мой вход. Кроме того, если я отправлю по http запрос на my_remote_host: 5000, он успешно регистрирует полученные данные.

Проблема заключается в том, что журнал не посылает какие-либо данные с помощью LogstashTcpSocketAppender. Даже используя простой SocketAppender, он не работает ... Я делаю что-то неправильно? Кажется, он почему-то отказывается писать в эту розетку, но ни о чем не жалуется.

ответ

0

Я немного опоздал с решением, потому что сегодня столкнулся с той же проблемой. В случае, если кто-то другой столкнется с подобной проблемой в будущем.

Я установил Logback <configuration debug="true">

Вы заметите, что не в состоянии написать OutputStream. Поэтому я просмотрел версии библиотек журнала, используемых LogstashEncoder, они были более старой версией 1.1.6, и я использовал 1.2.1. Я перешел на старую версию, и все сработало нормально.

1

посмотреть в каталоге catalina.out для журналов регистрации журналов. Также убедитесь, что у вас нет каких-либо брандмауэров на месте (или группы безопасности, если вы в AWS)

я также использовать другой кодек при отправке журналов от кота/Logback к logstach

tcp { 
     port => 4560 
     codec => json_lines 
     tags => ["app"] 
    } 

я используйте этот тег в фильтрах и выведите разделы, поскольку logback потребляет журналы из нескольких мест.

Смежные вопросы