dadadog : 塞入監控程式 =================== Created by mru huang, last modified on Apr 13, 2020 datadog塞入監控程式 ------------- [https://docs.datadoghq.com/tracing/manual\_instrumentation/php](https://docs.datadoghq.com/tracing/manual_instrumentation/php) 安裝套件 `composer require datadog/dd-trace` 監控程式引用 請`use DDTrace\GlobalTracer;` 監聽段落 這部分寫在監聽的function內部,從想要監聽的開頭之上 `$scope = \DDTrace\GlobalTracer::get()->startActiveSpan('TrafficLimit.handle666666');` 監聽完成區段的結尾 `$scope->close();` 範例 ``` public function handle($request, Closure $next)     { //開始監聽         $scope = \\DDTrace\\GlobalTracer::get()->startActiveSpan('TrafficLimit.handle666666');         $route\_name         = $request->route()->getName();         $redis\_key\_limit    = $route\_name.'\_limit';         $dont\_save          = in\_array($route\_name, $this->dont\_save\_route\_name);         if ($dont\_save == false) {             $defaultGlobalTrafficLimit = config('mmrm.default\_global\_traffic\_limit', 100);             $trafficLimit = config('trafficLimit.'.$route\_name, $defaultGlobalTrafficLimit);             $luaForSettingMissingLimitKey = <<< LUA if redis.call("exists",KEYS\[1\]) == 0 then     redis.call("set",KEYS\[1\],ARGV\[1\]) end LUA;             Redis::connection('app\_traffic\_limit')->eval($luaForSettingMissingLimitKey, 1, $redis\_key\_limit, $trafficLimit);             $luaForDecrementingLimitKey = <<< LUA return tonumber(redis.call("get",KEYS\[1\])) > 0 and redis.call("decr",KEYS\[1\]) or -1 LUA;             throw\_unless(                 Redis::connection('app\_traffic\_limit')->eval($luaForDecrementingLimitKey, 1, $redis\_key\_limit) >= 0,                 new RateLimitExceededException('API rate limit exceeded.')             );         } //監聽自訂塞入的內容 $scope->getSpan()->setTag('註解標籤', '註解內容');         //結束監聽         $scope->close();         return $next($request);     } ``` 加入註解 `$scope->getSpan()->setTag('註解標籤', '註解內容');` web api apm塞程式部分紀錄 ------------------ mmrm\_app\_api -------------- middleware 1. HeaderCheck 1. 多request的內容tag 2. Traffic:imit