swoft 日誌鏈路追蹤

2021-09-29 17:01:03 字數 2022 閱讀 5769

該庫主要通過設定traceid,spanid,來實現日誌鏈路記錄,保證同一請求的鏈路traceid一致;

並且增加redishandler可以將日誌直接記錄到redis中(協程方式),後續可以通過elk同步日誌;另外通過日誌配置增加version、inte***ce、method、params、cost(時間消耗)的日誌記錄

該庫的日誌記錄級別為info,請開啟相關日誌級別記錄。

composer require nango/swoft-tracker
bean.php檔案中進行配置;

//rpc中介軟體

'servicedispatcher' => [

'middlewares' => [

swofttracker\middleware\rpctracemiddleware::class

],],

如果應用需要對外提供http服務,並且內部需要通過rpc呼叫其他微服務的話,則需要在bean.php中進行以下配置:

首先增加http中介軟體:

],],另外,rpc client增加extender配置:

'user'              => [

'class' => serviceclient::class,

'host' => '192.168.152.55',

... ...

'packet' => bean('rpcclientpacket'),

'extender' => bean(swofttracker\middleware\traceextender::class)

],

以上配置就可以實現,多服務之間呼叫時的日誌鏈路追蹤。

使用redishandler,可以指定連線池,將業務redis庫和日誌庫隔離開;簡單配置如下:

'class' => swofttracker\middleware\redishandler::class,

'redispool' => 'redis.log-pool',

'levels' => 'info,error,warning',

],//可以在logger配置中增加items選項來設定日誌記錄消耗時間,rpc請求方法等;

'logger' => [

'flushrequest' => false,

'enable' => true,

'json' => true,

'items' => [

'traceid',

'spanid',

'version',

'inte***ce',

'method',

'params',

'cost'

],],

如果需要在非swoft框架中通過rpc呼叫swoft的微服務的話,需要在ext中增加traceid引數,如下:

$traceid = uniqid();

$req = [

"jsonrpc" => '2.0',

"method" => sprintf("%s::%s::%s", $version, $class, $method),

'params' => [12,'type'],

'id' => '',

'ext' => ['traceid' => $traceid],

];//發起呼叫

... ...

go 鏈路追蹤 go micro 鏈路追蹤

本片介紹go micro中使用jaeger作為鏈路追蹤的使用 jaeger相關知識請見官方文件,這裡使用docker啟動gaeger,作為測試使用 啟動jaeger docker run d p 6831 6831 udp p 16686 16686 jaegertracing all in one...

鏈路追蹤 一文讀懂鏈路追蹤

原文 在微服務橫行的時代,服務化思維逐漸成為了程式設計師的基本思維模式,但是,由於絕大部分專案只是一味地增加服務,並沒有對其妥善管理,當介面出現問題時,很難從錯綜複雜的服務呼叫網路中找到問題根源,從而錯失了止損的 時機。而鏈路追蹤的出現正是為了解決這種問題,它可以在複雜的服務呼叫中定位問題,還可以在...

輕量級日誌鏈路追蹤框架 TLog

先引入jar包 1.1.0 t log.version com.yomahub groupid tlog all spring boot starter artifactid version dependency 有兩種使用方式 方式一 位元組碼增強 public class runner 進行日誌...