該庫主要通過設定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 進行日誌...