摘要:經(jīng)過一番考察吧,對于鏈路追蹤,我們選用了這個日志追蹤工具。日志收集使用注解主要對出入?yún)⒓爱惓P判倪M行收集處理。另外對進行簡單封裝,提供等方法,這些方法輸入的日志也進行收集存儲。
目前我司各系統(tǒng)的日志管理比較原始,使用logback打日志到log文件,雖然有服務管理平臺,但記錄的日志也僅僅是前置機調用后臺系統(tǒng)的出入?yún)?,當遇到問題時查日志較為麻煩。
登錄VPN-打開服務器-找到日志目錄-打開日志文件-搜索
而這個過程也僅僅是在一臺服務器上的操作,一般需要看前置機、后臺系統(tǒng)甚至服務管理平臺。
當用戶較少時,通過先后順序等其他標志還能查到,但當調用量稍多后就很難判斷哪個日志是哪個操作發(fā)出的。
另外,我司產(chǎn)品前臺面向用戶,后臺與多家公司產(chǎn)品有大量互相調用,當用戶遇到問題首先投訴的是我司產(chǎn)品,如在日志中找不到問題點,背鍋的就是我們。
任務有2個
經(jīng)過一番考察吧,對于鏈路追蹤,我們選用了Tlog這個日志追蹤工具。主頁鏈接:yomahub.com/tlog/
主要考慮點是:
不過對HttpClient是侵入式的,需要加攔截器
這個攔截器的實現(xiàn)還是頗為簡單
public class TLogHttpClientInterceptor implements HttpRequestInterceptor { private static final Logger log = LoggerFactory.getLogger(TLogHttpClientInterceptor.class); @Override public void process(final HttpRequest request, final HttpContext context) throws HttpException, IOException { Args.notNull(request, "HTTP request"); String traceId = TLogContext.getTraceId(); if(StringUtils.isNotBlank(traceId)) { String appName = TLogSpringAware.getProperty("spring.application.name"); request.addHeader(TLogConstants.TLOG_TRACE_KEY, traceId); request.addHeader(TLogConstants.TLOG_SPANID_KEY, SpanIdGenerator.generateNextSpanId()); request.addHeader(TLogConstants.PRE_IVK_APP_KEY, appName); request.addHeader(TLogConstants.PRE_IVK_APP_HOST, LocalhostUtil.getHostName()); request.addHeader(TLogConstants.PRE_IP_KEY, LocalhostUtil.getHostIp()); } else { log.debug("[TLOG]鏈湴threadLocal鍙橀噺娌℃湁姝g‘浼犻?抰raceId,鏈璋冪敤涓嶄紶閫抰raceId"); } }}
不過需要注意的點是,有一些方法使用了Hutool高版本提供的方法,注意項目中版本沖突的解決。
對Tlog的集成還有一個問題,公司使用的服務管理平臺由其他部門開發(fā)管理,需要該部門協(xié)同解決,不過好在我們可以拿到源碼????????
日志存儲自然不希望對當前業(yè)務有任何影響,考慮到系統(tǒng)并發(fā)量并不是很大,就采用線程池來調用日志系統(tǒng)存庫。
使用注解主要對出入?yún)⒓爱惓P判倪M行收集處理。另外對logback進行簡單封裝,提供info()、error()等方法,這些方法輸入的日志也進行收集、存儲。 因業(yè)務特殊性,需要使用的系統(tǒng)都復用一套自定義注解、公共切面方法,并在切面中完成特殊業(yè)務的處理。
頗多細節(jié)就不多寫了,本文主要就是介紹整體思路,對于調用量說多不多的系統(tǒng)還可以。
?
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://www.ezyhdfw.cn/yun/124529.html
摘要:當云平臺出現(xiàn)網(wǎng)絡故障系統(tǒng)故障等問題,這對云租戶用戶有時甚至是致命的,所以不少是由高級別開發(fā)人員轉型而來。目前國內(nèi)各大云廠商也基本都提供了應用運維平臺,包括騰訊藍鯨阿里華為等。 DevOps 全鏈路 下圖是我們熟知的軟件研發(fā)環(huán)節(jié),在迭代頻率高的研發(fā)組織里,一天可能要經(jīng)歷多次如下循環(huán)。對于用戶群體龐大或者正在經(jīng)歷大幅業(yè)務擴張的企業(yè)研發(fā)組織,除了重點關注應用的快速上線之外,如何保障應用的高可...
摘要:一個客戶端請求從發(fā)出到被響應經(jīng)歷了哪些組件哪些微服務請求總時長每個組件所花時長等信息我們有必要了解和收集,以幫助我們定位性能瓶頸進行性能調優(yōu),因此監(jiān)控整個微服務架構的調用鏈十分有必要,本文將闡述如何使用搭建微服務調用鏈追蹤中心。 showImg(https://segmentfault.com/img/remote/1460000014553707); 概述 一個完整的微服務系統(tǒng)包含...
摘要:學習路線編程基礎語言語言基礎數(shù)據(jù)類型面向對象接口容器異常泛型反射注解流集合類加載機制字節(jié)碼執(zhí)行機制 Java學習路線 Java編程基礎 Java語言 Java語言基...
摘要:我們會寫切面來攔截對這些業(yè)務類和類的調用。切面定義何時攔截一個方法以及做什么和在一起成為切面連接點當代碼開始執(zhí)行,并且切點的條件滿足時,通知被調用。 前言 這篇文章會幫助你使用Spring Boot Starter AOP實現(xiàn)AOP。我們會使用AspectJ實現(xiàn)四個不同的通知(advice),并且新建一個自定義的注解來追蹤方法的執(zhí)行時間。 你將會了解 什么是交叉分割關注點(cross...
閱讀 3691·2021-11-23 09:51
閱讀 2904·2021-11-23 09:51
閱讀 748·2021-10-11 10:59
閱讀 1775·2021-09-08 10:43
閱讀 3302·2021-09-08 09:36
閱讀 3362·2021-09-03 10:30
閱讀 3354·2021-08-21 14:08
閱讀 2288·2021-08-05 09:59