【问题标题】:LogstashTcpSocketAppender is not sending logs to LogstashLogstashTcpSocketAppender 没有将日志发送到 Logstash
【发布时间】:2017-06-11 06:56:28
【问题描述】:

我在 Spring Boot 应用程序中使用 Docker ELK 堆栈。所有三个组件均已启动并分别在 http://192.168.99.100:5601/http://192.168.99.100:9200/ 和 192.168.99.100:5000 运行。

我的 logback-spring.xml 看起来像:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/base.xml"/>
<appender name="stash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
    <keepAliveDuration>5 minutes</keepAliveDuration>
    <reconnectionDelay>10 second</reconnectionDelay>
    <waitStrategyType>sleeping</waitStrategyType>
    <destination>192.168.99.100:5000</destination>
    <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
        <providers>
            <mdc/> <!-- MDC variables on the Thread will be written as JSON fields-->
            <context/> <!--Outputs entries from logback's context -->
            <logLevel/>
            <loggerName/>
            <pattern>
                    {
                    "timestamp": "%date{\"yyyy-MM-dd'T'HH:mm:ss,SSSXXX\", UTC}",
                    "level": "%level",
                    "logger": "%logger",
                    "message": "%message",
                    "logstashMarkers": "%marker"
                    }
                </pattern>
            <threadName/>
            <message/>
            <logstashMarkers/> <!-- Useful so we can add extra information for specific log lines as Markers-->
            <arguments/> <!--or through StructuredArguments-->
           <stackTrace>
                <fieldName>stackTrace</fieldName>
                <throwableConverter class="net.logstash.logback.stacktrace.ShortenedThrowableConverter">
                    <exclude>net\.sf\.cglib\..*</exclude>
                    <maxDepthPerThrowable>30</maxDepthPerThrowable>
                    <rootCauseFirst>true</rootCauseFirst>
                </throwableConverter>
            </stackTrace>
        </providers>
    </encoder>
</appender>

<root level="INFO">
    <appender-ref ref="stash"/>
</root>

问题是我无法在 Kibana 中看到我的日志,我怀疑 LogstashTcpSocketAppender 没有将日志发送到 Logstash。有没有一种方法可以验证 LogstashTcpSocketAppender 是否正在向 Logstash 发送日志?

【问题讨论】:

  • 在调试模式下启动logstash。然后运行你的 spring boot 应用并检查
  • logstash.yml-->config.debug: true。该属性已设置,但未显示任何消息
  • 转到 /usr.share/logstash 并键入 bin/logstash -f path/to/logstash.conf --log.level 调试。确保您以 sudo 身份登录。
  • &lt;pattern&gt;&lt;pattern&gt;...&lt;/pattern&gt;&lt;/pattern&gt; 因为原因...(见:github.com/logstash/logstash-logback-encoder#provider_pattern

标签: java spring spring-boot docker-compose elastic-stack


【解决方案1】:

-检查消息是否发送到 elasticsearsh : 192.168.99.100:9200/_search

-检查索引是否已创建: 192.168.99.100:9200/_cat/indices

-实际上,如果您想查看应该在 kibana 中的索引中创建的结果(与在 elasticsearh 中创建的名称/模式相同):

并通过修改时间在kibana中验证:

【讨论】:

    猜你喜欢
    • 2022-01-14
    • 1970-01-01
    • 2019-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-09
    • 1970-01-01
    • 2014-08-29
    相关资源
    最近更新 更多