博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Laravel接入Prometheus
阅读量:5978 次
发布时间:2019-06-20

本文共 1933 字,大约阅读时间需要 6 分钟。

在原有的基础上增加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]);    }}

转载地址:http://fzpox.baihongyu.com/

你可能感兴趣的文章
一些设计思想的汇集(2)
查看>>
GRUB and LVM and EVMS
查看>>
List集合的迭代器方法
查看>>
ECShop替换FCKeditor编辑器为KindEditor
查看>>
oracle 11g EM停止后无法启动
查看>>
面向对象是软件开发范式的根本性颠覆: 主体建模, 非目标导向, 松耦合, 非逻辑分解, 软件进化...
查看>>
OSI七层模型和TCP/IP四层模型
查看>>
ceph学习笔记之七 数据平衡
查看>>
windows下的php的memcache扩展的安装及memcache最新下载地址
查看>>
YOLOv3: 训练自己的数据(绝对经典版本1)
查看>>
POJ 1150 The Last Non-zero Digit 《挑战程序设计竞赛》
查看>>
asp.net C# 将数据导出到Execl汇总
查看>>
Could not find artifact com.sun:tools:jar:1.5.0 解决办法
查看>>
神经网络---Hessian矩阵
查看>>
TreeMap之floorKey
查看>>
phpstorm xdebug remote配置
查看>>
iOS 无限后台运行
查看>>
STL札记3-2(hashtable关联容器set、map)
查看>>
Android 打开屏幕旋转
查看>>
MySQL索引背后的数据结构及算法原理
查看>>