Laravel を Prometheus に接続するコード例

不言
リリース: 2019-03-02 14:09:57
転載
3608 人が閲覧しました

この記事では、Laravel を Prometheus に接続するためのコード例を紹介します。これには一定の参考価値があります。必要な友人は参考にしてください。お役に立てれば幸いです。

元の基準に基づいてカウンターカウンターを増やします:

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 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:segmentfault.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート