0

语境

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

目前我可以通过 TCP 做到这一点,但我认为这在 AWS 云中的可扩展性不够,我可以使用一些 Queue 发送日志吗?

微服务 > appender logback.xml > 队列 > Logstash > Elasticsearch

附加器


    <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"]} }
4

1 回答 1

0

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

目前 Logstash 有一些消息队列的输入,比如KafkaRabbitMQRedis

由于您使用的是 AWS,因此 logstash 也有AWS SQS的输入。

你可以在官方文档中查看所有的logstash输入

于 2020-05-05T22:18:40.987 回答