Sleuth服務跟蹤:整合 Logstash
假設前面的案例中,我們已經實現了服務呼叫之間的鏈路追蹤,但是這些日誌是分散在各個機器上的,就算出現問題了,我們想快速定位,也得從各個機器把日誌整合起來,再去查問題。這個時候就需要引入日誌分析系統了,比如
ELK
,可以將多臺伺服器上的日誌資訊統一收集起來,在出問題的時候我們可以輕鬆根據
traceId
來搜尋出對應的請求鏈路資訊。
一、ELK 簡介
ELK 由三個元件組成:
-
Elasticsearch
是個開源分散式搜尋引擎,它的特點有分散式、零配置、自動發現、索引自動分片、索引副本機制、restful
風格介面、多資料來源、自動搜尋負載等。 -
Logstash
是一個完全開源的工具,它可以對日誌進行收集、分析、並儲存以供以後使用。 -
kibana
是一個開源和免費的工具,它可以為Logstash
和ElasticSearch
提供日誌分析友好的Web介面,可以彙總、分析和搜尋重要資料日誌。
ELK官網: https:///cn/
二、輸出 JSON 格式日誌
可以透過
logback
來輸出Json格式的日誌,讓
Logstash
收集儲存到
Elasticsearch
中,然後在
kibana
中檢視。想要輸入Json格式的資料需要加一個依賴:
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder </artifactId>
<version>4.8</version>
<scope>runtime</scope>
</dependency>
然後建立一個
logback-spring.xml
檔案。配置 logstash 需要收集的資料格式如下:
<!-- Appender to log to file in a JSON format --><appender name= "logstash"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>$ {LOG FILE}.json</file>
<rollingPolicy
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_FILE}.json.%d{yyyy-MM-dd}.gz</fileNamePattern>
<maxHistory>7</maxHistory>
</rollingPolicy>
<encoder class = "net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder"> <providers> <timestamp> <timeZone>UTC</timeZone> </timestamp> <pattern> <pattern> { "severity": "%level", "service": "${spr ingAppName:-}", "trace": "%X{X-B3-TraceId:-}", "span": "%X{X-B3-SpanId:-}", "parent": "%X{X-B3-ParentSpanId:-}", "exportable": "%X{X-Span-Export:-}", "pid": "${PID:-}", "thread": "%thread", "class": "%logger{40}", "rest": "&message "
}
</pattern>
</pattern>
</providers>
</encoder>
</appender>
詳細的配置資訊可參考:
https:/
http://
github.com/spring-cloud
-samples/
sleuth-documentation-apps/blob/master/service1/src/main/resources/ logback-spring.xml
整合好後就能在輸出的日誌目錄中看到有一個以
.json
結尾的日誌檔案了,裡面的資料格式是Json形式的,直接可以透過
Logstash
進行收集。
{
"timestamp": "2017-11-30T01 :48:32.221+00: 00",
"severity" : "DEBUG" ,
"service":" fsh-substitution",
"trace": "41b5a575c26eeea1" ,
"span": "41b5a575c2 6eeeal" ,
"parent": "41b5a575c26eeea1",
"exportable": " false",
"pid": "12024",
"thread": "hystrix-fsh-house- 10" ,
"class": "c.f.a. client . fsh. house . HouseRemoteClient",
"rest": "[HouseRemoteC1 ient#hosueInfo] <--- END HTTP ( 796-byte body ) "
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69964492/viewspace-2767285/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Sleuth服務跟蹤大廠高頻面試題:整合 Zipkin面試題
- Spring Cloud 專題之七:Sleuth 服務跟蹤SpringCloud
- ⑦SpringCloud 實戰:引入Sleuth元件,完善服務鏈路跟蹤SpringGCCloud元件
- Dubbo 整合 Pinpoint 做分散式服務請求跟蹤分散式
- 阿里高階架構師教你使用Spring Cloud Sleuth跟蹤微服務阿里架構SpringCloud微服務
- 使用Spring Cloud Sleuth和OpenTelemetry實現分散式跟蹤SpringCloud分散式
- 像跟蹤分散式服務呼叫那樣跟蹤 Go 函式呼叫鏈分散式Go函式
- Spring Cloud實戰系列(七) - 服務鏈路追蹤Spring Cloud SleuthSpringCloud
- Spring Cloud Sleuth 和 Zipkin 進行分散式跟蹤使用指南SpringCloud分散式
- Dubbo學習系列之十八(Skywalking服務跟蹤)
- springcloud整合sleuthSpringGCCloud
- Zipkin — 微服務鏈路跟蹤.微服務
- 業餘草 SpringCloud教程 | 第九篇: 服務鏈路追蹤(Spring Cloud Sleuth)(Finchley版本)SpringGCCloud
- ASP.NET Core整合Zipkin鏈路跟蹤ASP.NET
- Windows 下配置 Logstash 為後臺服務Windows
- 第6章 Sleuth--鏈路追蹤
- Spring Cloud Alibaba(14)---SpringCloudAlibaba整合SleuthSpringCloudGC
- 跟我學SpringCloud | 第十一篇:使用Spring Cloud Sleuth和Zipkin進行分散式鏈路跟蹤SpringGCCloud分散式
- (十二)JAVA springboot微服務b2b2c電子商務系統:使用Spring Cloud Sleuth和Zipkin進行分散式鏈路跟蹤JavaSpring Boot微服務Cloud分散式
- 微服務分散式跟蹤工具Brave簡介微服務分散式
- 高效的任務跟蹤管理工具
- 免費廣告效果監測服務,實現全鏈路營銷效果跟蹤
- Java多使用者商城系統B2B2C原始碼-(九)服務鏈路追蹤(Spring Cloud Sleuth)Java原始碼SpringCloud
- sp_trace_setfilter sqlserver篩選跟蹤或跟蹤過濾FilterSQLServer
- 跟AWS學極致服務
- Gateway整合Netty服務GatewayNetty
- SpringBoot整合Tomcat服務Spring BootTomcat
- go-micro整合鏈路跟蹤的方法和中介軟體原理Go
- 主力跟蹤戰法
- 反跟蹤技術
- go-zero docker-compose 搭建課件服務(八):整合jaeger鏈路追蹤GoDocker
- 分散式服務呼叫鏈追蹤分散式
- 基於OpenTelemetry實現Java微服務呼叫鏈跟蹤Java微服務
- git的跟蹤分支和遠端跟蹤分支學習筆記Git筆記
- Python 服務端整合 騰訊雲 IM 服務Python服務端
- go-kit微服務:服務鏈路追蹤Go微服務
- 技術管理之路四、任務管理:如何跟蹤執行?
- 微服務整合Spring Cloud Zipkin實現鏈路追蹤並整合Dubbo微服務SpringCloud