This repository contains the codebase PHP bridge using RoadRunner Metrics plugin.
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
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"
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(),]);
}
}
The MIT License (MIT). Please see LICENSE
for more information. Maintained
by Spiral Scout.