乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      解決SpringCloud 分布式日志采集的完整流程!

       昵稱10087950 2022-06-16 發(fā)布于江蘇

      由于微服務(wù)架構(gòu)中每個(gè)服務(wù)可能分散在不同的服務(wù)器上,因此需要一套分布式日志的解決方案。spring-cloud提供了一個(gè)用來trace服務(wù)的組件sleuth。它可以通過日志獲得服務(wù)的依賴關(guān)系。基于sleuth,可以通過現(xiàn)有的日志工具實(shí)現(xiàn)分布式日志的采集。

      這里使用的是ELK,也就是elasticsearch、logstash、kibana。

      一、sleuth

      第一步:sleuth管理端

      sleuth一般單獨(dú)放在一個(gè)工程中。需要添加如下依賴

      <dependency>  
              <groupId>io.zipkin.java</groupId>  
              <artifactId>zipkin-autoconfigure-ui</artifactId>  
              <scope>runtime</scope>  
          </dependency> 
            
          <dependency>  
              <groupId>io.zipkin.java</groupId>  
              <artifactId>zipkin-server</artifactId>  
          </dependency>  

      配置服務(wù)注冊(cè)中心的地址

      eureka: 
        client: 
          serviceUrl: 
            defaultZone: http://localhost:1111/eureka/

      啟動(dòng)類加入服務(wù)發(fā)現(xiàn)的注解和zipkin的注解,如下

      package com.wlf.demo;
       
      import org.springframework.boot.SpringApplication;
      import org.springframework.boot.autoconfigure.SpringBootApplication;
      import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
       
      import zipkin.server.EnableZipkinServer;
       
      @EnableDiscoveryClient 
      @EnableZipkinServer  
      @SpringBootApplication  
      public class Application {
         
          public static void main(String[] args) {  
              SpringApplication.run(Application.classargs);  
          }  
       
      }

      這個(gè)時(shí)候啟動(dòng)并訪問該微服務(wù)的地址,可以看到zipkin的管理頁面了

      第二步:被管理的微服務(wù)端

      在我們的其他微服務(wù)端需要簡單的配置,納入到zipkin的管理之中

      引入依賴

      <dependency>  
               <groupId>org.springframework.cloud</groupId>  
               <artifactId>spring-cloud-starter-sleuth</artifactId>  
           </dependency>  
           
           <dependency>  
               <groupId>org.springframework.cloud</groupId>  
               <artifactId>spring-cloud-sleuth-zipkin</artifactId>  
           </dependency>

      加入如下配置

      spring: 
        sleuth: 
          sampler: 
             percentage: 1
        zipkin: 
          base-url: http://localhost:9411

      spring.sleuth.sampler.percentage:這個(gè)參數(shù)的意思是抓取100%的日志,只有通過抓取日志,才能獲知依賴關(guān)系。但是如果始終抓取日志的話對(duì)性能會(huì)有影響,因此可以自己配置。一般在開發(fā)環(huán)境,該值設(shè)置為1,生產(chǎn)環(huán)境視情況而定。

      spring.zipkin.base-url:為第一步配置的zipkin管理端微服務(wù)的地址

      現(xiàn)在分別啟動(dòng)服務(wù)注冊(cè)中心,網(wǎng)關(guān),需要的微服務(wù),以及sleuth。

      隨便調(diào)用一個(gè)微服務(wù)

      圖片

      然后我們可以看到相關(guān)的跟蹤日志

      圖片

      同樣我們也可以看到微服務(wù)之間的依賴關(guān)系,這里是通過網(wǎng)關(guān)調(diào)用了myservice-consumer-feign微服務(wù),然后通過myservice-consumer-feign微服務(wù)調(diào)用了myservice-provider微服務(wù)

      圖片

      二、搭建ELK

      1、elasticsearch的安裝與配置,由于之前的文章已經(jīng)介紹了elasticsearch的單點(diǎn),集群的安裝,head插件的安裝。這里不再總結(jié)。

      2、kibana的安裝,沒什么好說的,解壓,運(yùn)行就可以了

      3、logstash的安裝,解壓即可

      在config下新建配置文件

      output {
      input {
        tcp {
            port => 4560
            codec => json_lines
        }
      }
       
      output {
        elasticsearch {
           hosts => ["192.168.160.66:9200","192.168.160.88:9200","192.168.160.166:9200"]
           index => "applog"
        }
      }

      其中port為端口號(hào),codec表示通過json格式,elasticsearch.hosts表示elasticsearch的地址,這里是集群。index 為日志存儲(chǔ)的elasticsearch索引。

      啟動(dòng)需要調(diào)用bin下的logstash命令,通過-f指定配置文件

      4、使用kibana

      啟動(dòng)elasticsearch、head、kibana、logstash

      創(chuàng)建索引applog

      圖片

      將applog配置到kibana中,在index pattern中輸入我們的applog索引

      圖片
      圖片

      最后點(diǎn)擊create即可

      點(diǎn)擊菜單中的discover即可查看日志

      圖片

      三、logback配置

      spring-cloud、logstash都是支持logback的,因此需要為微服務(wù)配置好相應(yīng)的logback-spring.xml

      這里值得注意的是,在spring-boot中,logback-spring.xml的加載在application.yml之前。而我們需要在logback-spring.xml中使用spring.application.name。因此,我們需要把spring.application.name配置提到bootstrap.yml中。

      加載順序?yàn)閎ootstrap.yml,logback-spring.xml,application.yml

      相比普通的logback-spring.xml,我們主要配置這幾樣?xùn)|西spring.application.name,logstash的appender

      這里提供一個(gè)logback-spring.xml的例子

      <?xml version="1.0" encoding="UTF-8"?>
      <configuration scan="true" scanPeriod="10 seconds">
                    
          <springProperty scope="context" name="springAppName" 
              source="spring.application.name" />
                
                    
          <property name="CONSOLE_LOG_PATTERN"
                    value="%date [%thread] %-5level %logger{36} - %msg%n" />
                      
                          
          <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
           <withJansi>true</withJansi>
        <encoder>
                 <pattern>${CONSOLE_LOG_PATTERN}</pattern>
           <charset>utf8</charset>
           </encoder>
          </appender>      
          
          <appender name="logstash"
           class="net.logstash.logback.appender.LogstashTcpSocketAppender">

           <destination>192.168.160.66:4560</destination> 
           <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
            <providers>
             <timestamp>
              <timeZone>UTC</timeZone>
             </timestamp>
             <pattern>
              <pattern>
               {
                 "severity":"%level",
                 "service": "${springAppName:-}",  
                                "trace": "%X{X-B3-TraceId:-}",  
                                "span": "%X{X-B3-SpanId:-}",  
                                "exportable": "%X{X-Span-Export:-}",  
                                "pid": "${PID:-}",  
                                "thread": "%thread",  
                                "class": "%logger{40}",  
                                "rest": "%message"  
               }
              </pattern>
             </pattern>
            </providers>
           </encoder>
          </appender>
          
          <appender name="dailyRollingFileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
         <File>main.log</File>
         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
           <FileNamePattern>main.%d{yyyy-MM-dd}.log</FileNamePattern>
           <maxHistory>30</maxHistory>         
         </rollingPolicy>
         <encoder>
           <Pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{35} - %msg %n</Pattern>
         </encoder>        
          <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
           <level>DEBUG</level>
         </filter>
       </appender>
                
          <springProfile name="!production"> 
              <logger name="com.myfee" level="DEBUG" />
              <logger name="org.springframework.web" level="INFO"/>
              <root level="info">  
               <appender-ref ref="stdout" />  
               <appender-ref ref="dailyRollingFileAppender" />  
               <appender-ref ref="logstash" /> 
           </root> 
          </springProfile>
          
          <springProfile name="production"> 
        <logger name="com.myfee" level="DEBUG" />
              <logger name="org.springframework.web" level="INFO"/>
              <root level="info">  
               <appender-ref ref="stdout" />  
               <appender-ref ref="dailyRollingFileAppender" /> 
               <appender-ref ref="logstash" />  
           </root> 
       </springProfile>
      </configuration>

      我們把message信息配置到了rest字段中。

      三、查詢?nèi)罩?/h3>

      啟動(dòng)服務(wù)注冊(cè)中心,網(wǎng)關(guān),需要的微服務(wù),以及sleuth。

      啟動(dòng)elasticsearch,head,kibana,logstash,隨便運(yùn)行一個(gè)服務(wù),比如

      圖片

      這里會(huì)輸出一行日志,內(nèi)容為myService-provider userController,通過網(wǎng)關(guān)調(diào)用

      圖片

      eclipse控制臺(tái)輸出日志

      圖片

      在kibana中搜索日志

      圖片

      我們看到日志信息在rest字段中。另外,通過trace和span還可以跟蹤到整個(gè)微服務(wù)的調(diào)用過程。到此為止,整個(gè)日志采集就搭建完成了。系統(tǒng)上線后只需要在elasticsearch中就能搜索到各個(gè)服務(wù)器上,各個(gè)微服務(wù)的日志內(nèi)容了。

      來源:blog.csdn.net/guduyishuai/article/details/79228306

      ps:如果您覺文章有用,動(dòng)動(dòng)小手點(diǎn)個(gè)在看,點(diǎn)個(gè)再走吧

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多