日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
SpringCloud構(gòu)建微服務(wù)架構(gòu):分布式服務(wù)跟蹤(整合logstash)

Spring Cloud構(gòu)建微服務(wù)架構(gòu):分布式服務(wù)跟蹤(整合logstash)

作者:翟永超 2018-04-02 15:01:31


分布式 引入基于日志的分析系統(tǒng)是一個(gè)不錯(cuò)的選擇,比如:ELK平臺(tái),它可以輕松的幫助我們來(lái)收集和存儲(chǔ)這些跟蹤日志,同時(shí)在需要的時(shí)候我們也可以根據(jù)Trace ID來(lái)輕松地搜索出對(duì)應(yīng)請(qǐng)求鏈路相關(guān)的明細(xì)日志。

創(chuàng)新互聯(lián)主營(yíng)銀海網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,成都App制作,銀海h5成都微信小程序搭建,銀海網(wǎng)站營(yíng)銷(xiāo)推廣歡迎銀海等地區(qū)企業(yè)咨詢(xún)

通過(guò)之前的入門(mén)示例,我們已經(jīng)為trace-1和trace-2引入了Spring Cloud Sleuth的基礎(chǔ)模塊spring-cloud-starter-sleuth,實(shí)現(xiàn)了為各微服務(wù)的日志信息中添加跟蹤信息的功能。但是,由于日志文件都離散的存儲(chǔ)在各個(gè)服務(wù)實(shí)例的文件系統(tǒng)之上,僅僅通過(guò)查看日志文件來(lái)分析我們的請(qǐng)求鏈路依然是一件相當(dāng)麻煩的差事,所以我們還需要一些工具來(lái)幫助我們集中的收集、存儲(chǔ)和搜索這些跟蹤信息。引入基于日志的分析系統(tǒng)是一個(gè)不錯(cuò)的選擇,比如:ELK平臺(tái),它可以輕松的幫助我們來(lái)收集和存儲(chǔ)這些跟蹤日志,同時(shí)在需要的時(shí)候我們也可以根據(jù)Trace ID來(lái)輕松地搜索出對(duì)應(yīng)請(qǐng)求鏈路相關(guān)的明細(xì)日志。

ELK平臺(tái)主要有由ElasticSearch、Logstash和Kiabana三個(gè)開(kāi)源免費(fèi)工具組成:

  • Elasticsearch是個(gè)開(kāi)源分布式搜索引擎,它的特點(diǎn)有:分布式,零配置,自動(dòng)發(fā)現(xiàn),索引自動(dòng)分片,索引副本機(jī)制,restful風(fēng)格接口,多數(shù)據(jù)源,自動(dòng)搜索負(fù)載等。
  • Logstash是一個(gè)完全開(kāi)源的工具,他可以對(duì)你的日志進(jìn)行收集、過(guò)濾,并將其存儲(chǔ)供以后使用。
  • Kibana 也是一個(gè)開(kāi)源和免費(fèi)的工具,它Kibana可以為 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以幫助您匯總、分析和搜索重要數(shù)據(jù)日志。

Spring Cloud Sleuth在與ELK平臺(tái)整合使用時(shí),實(shí)際上我們只要實(shí)現(xiàn)與負(fù)責(zé)日志收集的Logstash完成數(shù)據(jù)對(duì)接即可,所以我們需要為L(zhǎng)ogstash準(zhǔn)備json格式的日志輸出。由于Spring Boot應(yīng)用默認(rèn)使用了logback來(lái)記錄日志,而Logstash自身也有對(duì)logback日志工具的支持工具,所以我們可以直接通過(guò)在logback的配置中增加對(duì)logstash的appender,就能非常方便的將日志轉(zhuǎn)換成以json的格式存儲(chǔ)和輸出了。

下面我們來(lái)詳細(xì)介紹一下在快速入門(mén)示例的基礎(chǔ)上,如何實(shí)現(xiàn)面向Logstash的日志輸出配置:

  • 在pom.xml依賴(lài)中引入logstash-logback-encoder依賴(lài),具體如下:
  
 
 
  1.  
  2.   net.logstash.logback 
  3.   logstash-logback-encoder 
  4.   4.6 
  5.  
  • 在工程/resource目錄下創(chuàng)建bootstrap.properties配置文件,將spring.application.name=trace-1配置移動(dòng)到該文件中去。由于logback-spring.xml的加載在application.properties之前,所以之前的配置logback-spring.xml無(wú)法獲取到spring.application.name屬性,因此這里將該屬性移動(dòng)到***加載的bootstrap.properties配置文件中。
  • 在工程/resource目錄下創(chuàng)建logback配置文件logback-spring.xml,具體內(nèi)容如下:
  
 
 
  1.  
  2.  
  3.      
  4.        
  5.      
  6.      
  7.      
  8.      
  9.     
  10.               value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr([${springAppName:-},%X{X-B3-TraceId:-},%X{X-B3-SpanId:-},%X{X-Span-Export:-}]){yellow} %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}"/> 
  11.  
  12.      
  13.      
  14.                     
  15.             INFO 
  16.          
  17.           
  18.             ${CONSOLE_LOG_PATTERN} 
  19.             utf8 
  20.         
  21.      
  22.  
  23.      
  24.      
  25.         ${LOG_FILE}.json 
  26.          
  27.             ${LOG_FILE}.json.%d{yyyy-MM-dd}.gz 
  28.             7 
  29.          
  30.          
  31.              
  32.                  
  33.                     UTC 
  34.                  
  35.                  
  36.                      
  37.                         { 
  38.                           "severity": "%level", 
  39.                           "service": "${springAppName:-}", 
  40.                           "trace": "%X{X-B3-TraceId:-}", 
  41.                           "span": "%X{X-B3-SpanId:-}", 
  42.                           "exportable": "%X{X-Span-Export:-}", 
  43.                           "pid": "${PID:-}", 
  44.                           "thread": "%thread", 
  45.                           "class": "%logger{40}", 
  46.                           "rest": "%message" 
  47.                         } 
  48.                      
  49.                  
  50.              
  51.          
  52.      
  53.        
  54.      
  55.          
  56.          
  57.      
  58.  

對(duì)logstash支持主要通過(guò)名為logstash的appender實(shí)現(xiàn),內(nèi)容并不復(fù)雜,主要是對(duì)日志信息的格式化處理,上面為了方便調(diào)試查看我們先將json日志輸出到文件中。

完成上面的改造之后,我們?cè)賹⒖焖偃腴T(mén)的示例運(yùn)行起來(lái),并發(fā)起對(duì)trace-1的接口訪問(wèn)。此時(shí)我們可以在trace-1和trace-2的工程目錄下發(fā)現(xiàn)有一個(gè)build目錄,下面分別創(chuàng)建了以各自應(yīng)用名稱(chēng)命名的json文件,該文件就是在logback-spring.xml中配置的名為logstash的appender輸出的日志文件,其中記錄了類(lèi)似下面格式的json日志:

  
 
 
  1. {"@timestamp":"2016-12-04T06:57:58.970+00:00","severity":"INFO","service":"trace-1","trace":"589ee5f7b860132f","span":"a9e891273affb7fc","exportable":"false","pid":"19756","thread":"http-nio-9101-exec-1","class":"c.d.TraceApplication$$EnhancerBySpringCGLIB$$a9604da6","rest":"======"} 
  2. {"@timestamp":"2016-12-04T06:57:59.061+00:00","severity":"INFO","service":"trace-1","trace":"589ee5f7b860132f","span":"2df8511ddf3d79a2","exportable":"false","pid":"19756","thread":"http-nio-9101-exec-1","class":"o.s.c.a.AnnotationConfigApplicationContext","rest":"Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@64951f38: startup date [Sun Dec 04 14:57:59 CST 2016]; parent: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@4b8c8f15"} 

我們除了可以通過(guò)上面的方式生成json文件之外,也可以使用LogstashTcpSocketAppender將日志內(nèi)容直接通過(guò)Tcp Socket輸出到logstash服務(wù)端,比如:

  
 
 
  1.  
  2.   127.0.0.1:9250 
  3.   ... 
  4.  

本文完整示例:

讀者可以根據(jù)喜好選擇下面的兩個(gè)倉(cāng)庫(kù)中查看trace-1和trace-2兩個(gè)項(xiàng)目:

  • Github:https://github.com/dyc87112/SpringCloud-Learning/
  • Gitee:https://gitee.com/didispace/SpringCloud-Learning/

【本文為51CTO專(zhuān)欄作者“翟永超”的原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)通過(guò)51CTO聯(lián)系作者獲取授權(quán)】


文章名稱(chēng):SpringCloud構(gòu)建微服務(wù)架構(gòu):分布式服務(wù)跟蹤(整合logstash)
鏈接分享:http://www.dlmjj.cn/article/cddeccg.html