本篇文章给大家带来的内容是关于laravel接入prometheus的代码示例,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
在原有的基础上增加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的代码示例的详细内容,更多请关注php中文网其它相关文章!
                        
                        每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
                
                                
                                
                                
                                
                                
                                Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号