最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

springboot?sleuth?日志跟蹤問題記錄

 更新時間:2023年07月06日 10:42:11   作者:xiaogui918  
Spring?Cloud?Sleuth是一個在應(yīng)用中實現(xiàn)日志跟蹤的強有力的工具,使用Sleuth庫可以應(yīng)用于計劃任務(wù)?、多線程服務(wù)或復雜的Web請求,尤其是在一個由多個服務(wù)組成的系統(tǒng)中,這篇文章主要介紹了springboot?sleuth?日志跟蹤,需要的朋友可以參考下

springboot sleuth 日志跟蹤

Spring Cloud Sleuth是一個在應(yīng)用中實現(xiàn)日志跟蹤的強有力的工具。使用Sleuth庫可以應(yīng)用于計劃任務(wù) 、多線程服務(wù)或復雜的Web請求,尤其是在一個由多個服務(wù)組成的系統(tǒng)中。當我們在這些應(yīng)用中來診斷問題時,即使有日志記錄也很難判斷出一個請求需要將哪些操作關(guān)聯(lián)在一起。

如果想要診斷復雜操作,通常的解決方案是在請求中傳遞唯一的ID到每個方法來識別日志。而Sleuth可以與日志框架Logback、SLF4J輕松地集成,通過添加獨特的標識符來使用日志跟蹤和診斷問題。

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-sleuth</artifactId>
    <version>2.1.1.RELEASE</version>
</dependency>

SLF4J 配置 http://m.fzitv.net/article/71692.htm

在使用slf4j打印日志時會打印traceId,通過這ID可以把整個請求鏈給找出來.

如下是打印出來的實例

2019-06-19 17:16:21.453 [00c62017e97b7823,00c62017e97b7823] [http-nio-8777-exec-1]

需要把traceId給前端,使用aop,在每個返回結(jié)果中增加traceId字段

import brave.Tracer;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import com.google.gson.Gson;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;;import javax.servlet.http.HttpServletRequest;
@Aspect   //定義一個切面
@Configuration
@Slf4j
public class TraceAspect {
    // 定義切點Pointcut
    @Pointcut("execution(* com.gf.controller..*.*(..))")
    public void excudeService() {
    }
    @Autowired
    Tracer tracer;
    @Around("excudeService()")
    public Object doAround(ProceedingJoinPoint pjp) throws Throwable {
        RequestAttributes ra = RequestContextHolder.getRequestAttributes();
        ServletRequestAttributes sra = (ServletRequestAttributes) ra;
        HttpServletRequest request = sra.getRequest();
        String url = request.getRequestURL().toString();
        String method = request.getMethod();
        String uri = request.getRequestURI();
        String queryString = request.getQueryString();
        log.info("請求開始, 各個參數(shù), url: {}, method: {}, uri: {}, params: {}", url, method, uri, queryString);
        // result的值就是被攔截方法的返回值
        Object result = pjp.proceed();
        JSONObject dd = JSONObject.parseObject(JSON.toJSONString(result));
        dd.put("traceId",tracer.currentSpan().context().traceIdString());
        log.info("請求結(jié)束,controller的返回值是 {} - {}", tracer.currentSpan().toString(), dd.toJSONString());
        return dd;
    }
}

Spring Boot 中的分布式追蹤及使用

隨著互聯(lián)網(wǎng)應(yīng)用程序的復雜性不斷增加,分布式系統(tǒng)已經(jīng)成為了許多企業(yè)級應(yīng)用程序的標配。在分布式系統(tǒng)中,由于服務(wù)之間的調(diào)用關(guān)系錯綜復雜,很難追蹤到一個請求在整個系統(tǒng)中的執(zhí)行路徑和時間,這就給排查問題和性能優(yōu)化帶來了巨大的挑戰(zhàn)。為了解決這個問題,分布式追蹤技術(shù)應(yīng)運而生。本文將介紹 Spring Boot 中的分布式追蹤技術(shù)及其使用方法。

分布式追蹤的概念

分布式追蹤(Distributed Tracing)是一種用于追蹤分布式系統(tǒng)中請求的執(zhí)行路徑和時間的技術(shù)。在分布式系統(tǒng)中,由于請求可能會經(jīng)過多個服務(wù)節(jié)點,因此需要在請求流程中添加唯一的標識符(Trace ID),并將 Trace ID 傳遞給所有相關(guān)的服務(wù)節(jié)點。每個服務(wù)節(jié)點在處理請求時,都需要將 Trace ID 記錄在請求的上下文中,并將請求的上下文信息傳遞給下一個服務(wù)節(jié)點。這樣,就可以通過 Trace ID 來追蹤一個請求在整個系統(tǒng)中的執(zhí)行路徑和時間。在追蹤過程中,還需要記錄每個服務(wù)節(jié)點處理請求的時間和耗時,以便分析和優(yōu)化系統(tǒng)性能。

Spring Cloud Sleuth

Spring Cloud Sleuth 是 Spring Cloud 中的一個分布式追蹤框架,它提供了基于 Trace ID 的請求追蹤功能,可以協(xié)助開發(fā)人員快速追蹤分布式系統(tǒng)中的請求執(zhí)行路徑和時間,并幫助排查問題和優(yōu)化性能。

Spring Cloud Sleuth 使用 Zipkin 來存儲和展示分布式追蹤信息,Zipkin 是一個開源的分布式追蹤系統(tǒng),可以用于存儲和展示分布式系統(tǒng)中的請求追蹤信息。

Spring Boot 中的分布式追蹤

Spring Boot 集成了 Spring Cloud Sleuth,可以非常方便地實現(xiàn)分布式追蹤功能。在 Spring Boot 應(yīng)用程序中,只需要添加以下依賴:

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

添加這些依賴后,Spring Boot 應(yīng)用程序就可以自動配置分布式追蹤功能,并將追蹤信息發(fā)送到 Zipkin 服務(wù)器。

在應(yīng)用程序中,可以通過 Tracer 接口來創(chuàng)建 Trace ID,并將 Trace ID 記錄在請求的上下文中:

@Autowired
private Tracer tracer;
@GetMapping("/hello")
public String hello() {
    Span span = tracer.nextSpan().name("hello").start();
    try (Tracer.SpanInScope ws = tracer.withSpan(span)) {
        // 處理請求
        return "Hello World!";
    } finally {
        span.finish();
    }
}

在每個服務(wù)節(jié)點中,都需要將 Trace ID 記錄在請求的上下文中,并將請求的上下文信息傳遞給下一個服務(wù)節(jié)點。Spring Boot 可以通過 RestTemplateFeign 來自動傳遞請求的上下文信息,只需要在 RestTemplateFeign 中添加相應(yīng)的配置即可:

@Bean
public RestTemplate restTemplate() {
    return new RestTemplateBuilder()
            .interceptors(new TraceRestTemplateInterceptor(tracer()))
            .build();
}
@Bean
public Feign.Builder feignBuilder() {
    return Feign.builder().requestInterceptor(new TraceFeignRequestInterceptor(tracer()));
}

Zipkin 的使用

Zipkin 是一個用于存儲和展示分布式追蹤信息的系統(tǒng),可以用于分析和優(yōu)化分布式系統(tǒng)的性能。在 Spring Boot 中,可以通過以下步驟來使用 Zipkin:

1.下載并啟動 Zipkin 服務(wù)器

可以從 Zipkin 的官網(wǎng)下載 Zipkin 服務(wù)器,并啟動 Zipkin 服務(wù)器。啟動 Zipkin 服務(wù)器后,可以在瀏覽器中訪問 http://localhost:9411 來查看 Zipkin 的 Web 界面。

2.配置 Spring Boot 應(yīng)用程序發(fā)送追蹤信息到 Zipkin 服務(wù)器

在 Spring Boot 應(yīng)用程序中,可以通過以下配置來將追蹤信息發(fā)送到 Zipkin 服務(wù)器:

spring:
  zipkin:
    base-url: http://localhost:9411

3.查看分布式追蹤信息

在啟動 Spring Boot 應(yīng)用程序后,可以通過訪問應(yīng)用程序的端點來觸發(fā)請求,并在 Zipkin 的 Web 界面中查看分布式追蹤信息。在 Zipkin 的 Web 界面中,可以查看每個請求的 Trace ID、請求流程中的服務(wù)節(jié)點、服務(wù)節(jié)點的執(zhí)行時間和耗時等信息。

總結(jié)

分布式追蹤技術(shù)是解決分布式系統(tǒng)中請求執(zhí)行路徑和時間無法追蹤的問題的關(guān)鍵技術(shù)之一。

Spring Boot 集成了 Spring Cloud Sleuth 和 Zipkin,使得分布式追蹤變得非常簡單。

在 Spring Boot 應(yīng)用程序中,可以通過添加相應(yīng)的依賴和配置來實現(xiàn)分布式追蹤功能,并將追蹤信息發(fā)送到 Zipkin 服務(wù)器。

使用分布式追蹤技術(shù)可以幫助開發(fā)人員更好地管理和監(jiān)控分布式系統(tǒng),并提高系統(tǒng)的可靠性和性能。

到此這篇關(guān)于Spring Boot 中的 Sleuth 簡介及使用方法的文章就介紹到這了,更多相關(guān)Spring Boot Sleuth使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mybatis中如何實現(xiàn)一個標簽執(zhí)行多個sql語句

    mybatis中如何實現(xiàn)一個標簽執(zhí)行多個sql語句

    這篇文章主要介紹了mybatis中如何實現(xiàn)一個標簽執(zhí)行多個sql語句問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • java集合中l(wèi)ist的用法代碼示例

    java集合中l(wèi)ist的用法代碼示例

    這篇文章主要介紹了java集合中l(wèi)ist的用法代碼示例,分享了相關(guān)代碼,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • 你要知道IDEA的這些必備插件

    你要知道IDEA的這些必備插件

    這篇文章主要介紹了你要知道IDEA的這些必備插件,文中有非常詳細的圖文示例及代碼,對正在使用IDEA的小伙伴們有很好的幫助喲,需要的朋友可以參考下
    2021-05-05
  • 關(guān)于Spring?Cloud實現(xiàn)日志管理模塊

    關(guān)于Spring?Cloud實現(xiàn)日志管理模塊

    這篇文章主要介紹了關(guān)于Spring?Cloud實現(xiàn)日志管理模塊問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • SpringBoot使用OpenCV的超詳細步驟

    SpringBoot使用OpenCV的超詳細步驟

    最近有個項?需要對圖?圖像進?處理,使?到了開源框架OpenCV,所以下面這篇文章主要給大家介紹了關(guān)于SpringBoot使用OpenCV的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-04-04
  • 淺談java8 stream flatMap流的扁平化操作

    淺談java8 stream flatMap流的扁平化操作

    這篇文章主要介紹了淺談java8 stream flatMap流的扁平化操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • springboot+springmvc實現(xiàn)登錄攔截

    springboot+springmvc實現(xiàn)登錄攔截

    這篇文章主要介紹了springboot+springmvc實現(xiàn)登錄攔截,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-10-10
  • Java中獲取webapp路徑問題詳解

    Java中獲取webapp路徑問題詳解

    這篇文章主要介紹了Java中獲取webapp路徑問題詳解,WebApp是指基于Web的?系統(tǒng)和?應(yīng)用,其作用是向廣大的最終用戶發(fā)布一組復雜的內(nèi)容和功能,本文詳解了關(guān)于獲取路徑時候可能出現(xiàn)的問題,需要的朋友可以參考下
    2023-07-07
  • 完美解決springboot項目出現(xiàn)”java: 錯誤: 無效的源發(fā)行版:17“問題(圖文詳解)

    完美解決springboot項目出現(xiàn)”java: 錯誤: 無效的源發(fā)行版:17“問題(圖文詳解)

    這篇文章主要介紹了完美解決springboot項目出現(xiàn)”java: 錯誤: 無效的源發(fā)行版:17“問題,本文通過圖文并茂的形式給大家介紹的非常詳細,需要的朋友可以參考下
    2023-04-04
  • Java中如何判斷中文字符串長度

    Java中如何判斷中文字符串長度

    這篇文章主要介紹了Java中如何判斷中文字符串長度問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05

最新評論

马鞍山市| 柘荣县| 苗栗县| 北流市| 哈尔滨市| 炎陵县| 巍山| 拜城县| 武山县| 胶州市| 临夏县| 博白县| 桐庐县| 互助| 吴旗县| 武平县| 石家庄市| 松桃| 南城县| 丽江市| 乌拉特中旗| 长治市| 台山市| 乌什县| 阿巴嘎旗| 独山县| 那曲县| 彰化县| 武邑县| 天气| 长海县| 如皋市| 东乌珠穆沁旗| 广州市| 江陵县| 开化县| 沂水县| 宜阳县| 剑阁县| 南丹县| 包头市|