是否可以使用logback附加程序将日志发送到kafka / rabbit-mq,然后发送到Logstash(弹性堆栈)?

时间:2020-05-05 17:15:33

标签: logstash elastic-stack elk spring-logback distributed-tracing

上下文

  • 云中的微服务
  • 使用Spring Boot logback.xml开发组件
  • 我们需要日志聚合

目前,我可以通过TCP进行操作,但是我认为这在AWS云中还不够可扩展,我可以使用某些队列发送日志吗?

微服务>附加程序logback.xml>队列> Logstash> Elasticsearch

Appender


    <appender name="STASH"
              class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <destination>localhost:5000</destination>

        <encoder
                class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
            <providers>
                <mdc/>
                <context/>
                <logLevel/>
                <loggerName/>

                <pattern>
                    <pattern>
                        {
                        "serviceName": "clients-component",
                        "type": "business-capability"
                        }
                    </pattern>
                </pattern>

                <threadName/>
                <message/>
                <logstashMarkers/>
                <stackTrace/>
            </providers>
        </encoder>
    </appender>

logstash.conf

input { tcp { port => 5000 codec => "json" } } 

output { elasticsearch { hosts => ["localhost:9200"]} }

1 个答案:

答案 0 :(得分:0)

您可以将Logstash配置为从消息队列使用,而不会出现任何问题。

当前Logstash具有一些消息队列的输入,例如KafkaRabbitMQRedis

由于您使用的是AWS,logstash也将输入AWS SQS

您可以检查official documentation

中的所有logstash输入