logstash怎么收集logback产生的日志

知-一 发布于 2016/05/30 13:38
阅读 4K+
收藏 0

目前正在集成elk,通过logstash收集logback产生的日志,elk已搭建好部署在同一台机器(我个人pc)


下面是logstash的配置作为服务通过tcp的方式收集日志

通过telnet的方式 能够 收集到数据 传给es

下面是logback的配置,logstash-logback-encoder已经添加到工程

下面是测试

程序运行后控制台可以输出日志 ,但是logstash并没有收集到日志es看不到。请问这是为什么啊???


加载中
0
Feng_Yu
Feng_Yu

你先output到标准输出上看看解析结果对不,然后调试没问题了再output到es

output {
    stdout {
        codec => "rubydebug"
    }
}

另外,你用log.error打印的日志根本不是json格式吧?你用json_line解析肯定有问题。


我的名字叫李猜
我的名字叫李猜
回复 @知-一 : 解决了么 是不是异步输出的问题?
知-一
知-一
回复 @山重水复没有路 : 参考给我回复的,貌似输出的不是json格式,debug调试的时候就报错了,所以根本收集不到
山重水复没有路
我想问下,你最后弄好了吗?
知-一
知-一
谢谢,正在看~
0
滑稽阿狸

你好,我想问下,你最后弄好了吗?我也按照你的配置做了。可是logstash上接受不到。

<?xml version="1.0" encoding="UTF-8"?>
<configuration  scan="true" scanPeriod="30 seconds">
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder charset="UTF-8"> <!-- encoder 可以指定字符集,对于中文输出有意义 -->
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
        </encoder>
    </appender>
    <appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <destination>127.0.0.1:9250</destination>
        <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" />
    </appender>
 <!-- 设置日志级别 -->
    <root level="info">                   
        <appender-ref ref="STDOUT" />
        <appender-ref ref="logstash" />
    </root>
</configuration>

这个是maven里面的pom配置
<dependency> 
   <groupId>org.slf4j</groupId> 
   <artifactId>jcl-over-slf4j</artifactId> 
   <version>1.6.1</version> 
</dependency> 
<dependency> 
   <groupId>ch.qos.logback</groupId> 
   <artifactId>logback-classic</artifactId> 
   <version>1.1.2</version> 
   <optional>true</optional>
</dependency> 
<dependency>
   <groupId>ch.qos.logback</groupId>
   <artifactId>logback-core</artifactId>
   <version>1.1.2</version>
</dependency>


<dependency>
   <groupId>net.logstash.logback</groupId>
   <artifactId>logstash-logback-encoder</artifactId>
   <version>4.5.1</version>
</dependency>
这个是我在logstash。conf中的配置,只在input中配置了这个tcp。然后output采用标准输出。

tcp{
mode => "server"
port =>  9250
}
的配置。

0
那坨屎有——毒
那坨屎有——毒

1,在项目pom.xml文件中加上依赖:

<dependency>
  <groupId>net.logstash.logback</groupId>
  <artifactId>logstash-logback-encoder</artifactId>
  <version>4.8</version>
</dependency>

2,在项目logback.xml配置文件中加入一下代码:

 <appender name="stash"         class="net.logstash.logback.appender.LogstashTcpSocketAppender">
      <destination>127.0.0.1:4560</destination>

      <!-- encoder is required -->
      <encoder class="net.logstash.logback.encoder.LogstashEncoder" />
  </appender>

和下面:

    <root level="INFO">
        <appender-ref ref="console" />
        <appender-ref ref="rollingFile" />
        <appender-ref ref="errorAppender" />
        <appender-ref ref="OTHERPLACE"/>
        <appender-ref ref="stash"/>
    </root>

3,logstash  bin 目录下的配置文件***.conf文件中:

input {
    tcp {
        port => 4560
        codec => json_lines
    }
}
output{
  elasticsearch {
    host => "localhost"
    port => "9200"
    protocol => "http"
    index => "logstash-test"
  }
}




返回顶部
顶部