murderxchip / laravel-trace-log by murderxchip

基于HTTP的链路日志跟踪Laravel/Lumen插件,A trace logger SDK for http request between Laravel/Lumen apps by supplying enhanced GuzzleClient implementation
140
10
0
Package Data
Maintainer Username: murderxchip
Maintainer Contact: 7853151@qq.com (qinming)
Package Create Date: 2019-04-11
Package Last Update: 2019-08-29
Home Page:
Language: PHP
License: Unknown
Last Refreshed: 2024-03-27 03:23:16
Package Statistics
Total Downloads: 140
Monthly Downloads: 0
Daily Downloads: 0
Total Stars: 10
Total Watchers: 0
Total Forks: 0
Total Open Issues: 1

###Lumen/Laravel 服务链路日志跟踪,采用header传递自定义trace信息方式聚合请求链路日志,本地json结构化存储方便elk采集。

使用方法:

  1. 安装 项目composer.json中引入

    "repositories": [
             {
                 "type": "git",
                 "url": "https://github.com/murderxchip/laravel-trace-log.git"
             }
        ],
    

    "require" 字段增加

    "cactus/tracelog": "v1.0.1"
    
    composer update cactus/tracelog 
    
  2. 注册provider

    $app->register(\Cactus\TraceLog\TraceLogServiceProvider::class);
    
  3. 引入middleware 在bootstrap/app.php 增加

    $app->middleware([
         \Cactus\TraceLog\TraceLogMiddleWare::class
    ]);
    
  4. 日志路径 日志默认存储位置为 storage/logs 下 json 目录为json格式输出

  5. 微服务中 guzzle 默认 Client替换为 \Cactus\Trace\HttpClient 实例

    $client = new HttpClient();
    

    或者直接使用 app('rpcClient') 此为GuzzleClient扩展客户端,接口方法保持一直

  6. 输出示例

{
	"message": "apilog",
	"context": {
		"apitrace": {
			"Host": "server.test",
			"Method": "GET",
			"Headers": "{\"connection\":[\"keep-alive\"],\"accept\":[\"*/*\"],\"accept-encoding\":[\"gzip, deflate\"],\"user-agent\":[\"python-requests/2.21.0\"],\"host\":[\"cactusserver-mall.test\"],\"content-length\":[\"\"],\"content-type\":[\"\"]}",
			"PathInfo": "/version",
			"QueryString": null,
			"Protocol": "HTTP/1.1",
			"IP": "127.0.0.1",
			"User-Agent": "python-requests/2.21.0",
			"Params": "[]",
			"RequestUri": "/version",
			"RequestTime": "2019-04-11 14:20:36",
			"Response": "{\"data\":{\"version\":\"Lumen (5.5.2) (Laravel Components 5.5.*)\"},\"meta\":{\"timestamp\":1554963636.89317,\"response_time\":0.0965871810913086}}",
			"Status": 200,
			"ResponseTime": "2019-04-11 14:20:36",
			"ElapseTime": "9ms"
		}
	},
	"level": 200,
	"level_name": "INFO",
	"channel": "lumen",
	"datetime": {
		"date": "2019-04-11 14:20:36.917776",
		"timezone_type": 3,
		"timezone": "Asia/Shanghai"
	},
	"extra": {
		"uid": "c36ea4f2386368c1bff60ed0"
	},
	"Trace": {
		"TraceId": "trace:15549636365caedcb4de348",
		"TraceIndex": "0.1",
		"TracePath": "/Path"
	}
}

Trace信息会通过header进行传递