Spring集成Rabbitmq收集Logback日誌,利用進行Logstash數據整理存儲到Elasticsearch中

項目中咱們經常使用的是把Logback打印的日誌存儲到文件中保存到硬盤上,這樣不利於日誌的收集和分析。html

如下演示在SpringBoot中經過rabbitmq收集logback日誌存儲到Elasticsearch中。spring

環境準備:安裝RabbitMQ,安裝Elasticsearch和Elasticsearch-Head(可視化插件),安裝Logstash.====》以前博客已經介紹過了。springboot

pom.xml

引入spring-amqp微信

<dependency>
    <groupId>org.springframework.amqp</groupId>
    <artifactId>spring-rabbit</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

 

logback-spring.xml

<!--logback日誌寫入rabbitmq -->
    <appender name="RabbitMq" class="org.springframework.amqp.rabbit.logback.AmqpAppender">
        <layout>
            <pattern><![CDATA[ %d %p %t [%c] - <%m>%n ]]></pattern>
        </layout>
        <!--rabbitmq地址 -->
        <addresses>localhost:5672</addresses>
        <abbreviation>36</abbreviation>
        <includeCallerData>true</includeCallerData>
        <applicationId>bootsis</applicationId>
        <username>springcloud</username>
        <password>123456</password>
        <!--路郵件 -->
        <!--{applicationId} -->
        <!--%property{applicationId}.%c.%p 收集不到日誌 -->
        <!--最後改成精確匹配了 很是重要 -->
        <routingKeyPattern>bootsis</routingKeyPattern>
        <generateId>true</generateId>
        <charset>UTF-8</charset>
        <durable>true</durable>
        <deliveryMode>NON_PERSISTENT</deliveryMode>
        <declareExchange>true</declareExchange>
        <autoDelete>false</autoDelete>
    </appender>

   <root level="INFO">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="INFO_FILE" />
        <appender-ref ref="WARN_FILE" />
        <appender-ref ref="ERROR_FILE" />
        <!--這塊也要添加-->
        <appender-ref ref="RabbitMq" /> 
    </root>

 

Logstash配置

在logstash安裝目錄的bin目錄下新建app

logstash-rabbitmq.conf   ====>從消息隊列讀日誌elasticsearch

配置以下,logstash整合rabbitmq詳細配置見https://www.elastic.co/guide/en/logstash/current/plugins-inputs-rabbitmq.htmlide

input { 
   rabbitmq {
       type =>"all"
       durable => true
       exchange => "logs"
	   exchange_type => "topic"
	   key => "bootsis"
	   host => "localhost"
	   port => 5672
	   user => "springcloud"
	   password => "123456"
	   queue => "boot-sis-mq"
       auto_delete => false
    
  }	
 }

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

額外:從文件目錄讀日誌spring-boot

input { 
   file {
     type => "server"
     path  =>["E:\home\logs\boot\info.log","E:\home\logs\boot\error.log","E:\home\logs\boot\trace.log","E:\home\logs\boot\warn.log"]
  }
 }

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

以上配置完成,啓動rabbitmq,logstash(logstash -f logstash-rabbitmq.conf),elasticsearch,elasticsearch-head,springboot項目。ui

控制檯一直在打印日誌spa

訪問http://localhost:9100/

rabbitmq消息狀態 

後期也能夠整合Kinbana

     

微信公衆號

                          
相關文章
相關標籤/搜索