spiral / roadrunner-metrics
RoadRunner: Prometheus metrics RPC
Fund package maintenance!
roadrunner-server
Requires
- php: >=8.1
- psr/log: >=2.0
- spiral/goridge: ^4.0
- spiral/roadrunner: ^2023.1 || ^2024.1
Requires (Dev)
- jetbrains/phpstorm-attributes: ^1.0
- phpunit/phpunit: ^10.0
- vimeo/psalm: >=5.8
Suggests
- spiral/roadrunner-cli: Provides RoadRunner installation and management CLI tools
README
RoadRunner Metrics Plugin
This repository contains the codebase PHP bridge using RoadRunner Metrics plugin.
Installation:
To install RoadRunner extension:
composer require spiral/roadrunner-metrics
You can use the convenient installer to download the latest available compatible version of RoadRunner assembly:
composer require spiral/roadrunner-cli --dev vendor/bin/rr get
Configuration
Enable metrics service in your .rr.yaml
file:
rpc: listen: tcp://127.0.0.1:6001 server: command: "php worker.php" http: address: "0.0.0.0:8080" metrics: address: "0.0.0.0:2112"
Usage
To publish metrics from your application worker:
<?php declare(strict_types=1); use Nyholm\Psr7\Factory;use Spiral\Goridge;use Spiral\RoadRunner; include "vendor/autoload.php"; $worker = new RoadRunner\Http\PSR7Worker( RoadRunner\Worker::create(), new Factory\Psr17Factory(), new Factory\Psr17Factory(), new Factory\Psr17Factory() ); # Create metrics client $metrics = new RoadRunner\Metrics\Metrics( Goridge\RPC\RPC::create(RoadRunner\Environment::fromGlobals()->getRPCAddress()) ); # Declare counter $metrics->declare( 'http_requests', RoadRunner\Metrics\Collector::counter() ->withHelp('Collected HTTP requests.') ->withLabels('status', 'method'), ); while ($req = $worker->waitRequest()) { try { $response = new \Nyholm\Psr7\Response(); $response->getBody()->write("hello world"); # Publish metrics for each request with labels (status, method) $metrics->add('http_requests', 1, [ $response->getStatusCode(), $req->getMethod(), ]); $worker->respond($rsp); } catch (\Throwable $e) { $worker->getWorker()->error((string)$e); $metrics->add('http_requests', 1, [503,$req->getMethod(),]); } }
License:
The MIT License (MIT). Please see LICENSE
for more information. Maintained
by Spiral Scout.