在原有的基础上增加counter计数器:
namespace app\http\middleware;use closure;use illuminate\http\request;use traumferienwohnungen\prometheusexporter\middleware\abstractresponsetimemiddleware;class prometheusmonitor extends abstractresponsetimemiddleware{ protected function getroutenames() { $routenames = []; foreach (\route::getroutes() as $route){ $routenames[] = '/'.ltrim($route->uri(), '/'); } return $routenames; } /** * handle an incoming request. * * @param \illuminate\http\request $request * @param \closure $next * @return mixed */ public function handle(request $request, closure $next) { if (defined('laravel_start')){ $start = laravel_start; } elseif (defined('lumen_start')){ $start = lumen_start; } else { $start = microtime(true); } $this->request = $request; /** @var \illuminate\http\response $response */ $response = $next($request); $route_name = $this->getroutename(); $method = $request->getmethod(); $status = $response->getstatuscode(); $duration = microtime(true) - $start; $duration_milliseconds = $duration * 1000.0; $this->countrequest($route_name, $method, $status, $duration_milliseconds); $this->initrequestmetrics($method, $status); return $response; } public function getroutename(){ return request()->getrequesturi(); } public function initrequestmetrics($method, $status) { $namespace = config('prometheus_exporter.namespace_http_server'); $labelnames = $this->getrequestcounterlabelnames(); $name = 'request_wuc'; $help = 'http_requests count'; $counter = $this->registry->getorregistercounter( $namespace, $name, $help, $labelnames ); $counter->incby(1, [$this->getroutename(), $method, $status]); }}
以上就是laravel接入prometheus的代码示例的详细内容。
