Skip to main content

Metrics Plugin

Prometheus-compatible metrics exporter for monitoring server performance and tracking custom application metrics. The plugin supports Counter, Gauge, Histogram, and Summary metric types.

Installation​

$ composer require phpstreamserver/metrics

Usage Example​

server.php
<?php

require __DIR__ . '/vendor/autoload.php';

use PHPStreamServer\Core\Server;
use PHPStreamServer\Core\Worker\SupervisedWorker;
use PHPStreamServer\Plugin\Metrics\MetricsPlugin;
use PHPStreamServer\Plugin\Metrics\RegistryInterface;
use Revolt\EventLoop;

$server = new Server();

$server->addPlugin(
new MetricsPlugin(listen: '0.0.0.0:8081'),
);

$server->addWorker(
new SupervisedWorker(
name: 'Worker',
count: 2,
onStart: function (SupervisedWorker $worker): void {
$registry = $worker->container->getService(RegistryInterface::class);

$counter = $registry->registerCounter(
namespace: 'app',
name: 'test_counter',
help: 'This is a test counter',
labels: ['pid'],
);

EventLoop::repeat(1, function () use ($counter) {
$counter->inc(['pid' => (string) \posix_getpid()]);
});
},
),
);

exit($server->run());

Built-in Metrics​

PHPStreamServer registers these metrics automatically when the Metrics plugin is installed and registered. HTTP and Scheduler metrics are included when their corresponding plugins are also installed and registered.

MetricLabelsDescription
phpss_supervisor_workersnoneCurrent number of registered workers.
phpss_supervisor_processesnoneCurrent number of running processes.
phpss_supervisor_worker_reloads_totalnoneTotal number of worker reloads.
phpss_supervisor_process_crashes_totalnoneTotal number of process crashes.
phpss_supervisor_process_memory_bytespidMemory usage of each process in bytes.
phpss_http_requests_totalstatusTotal number of handled HTTP requests.
phpss_http_request_duration_secondsstatusHTTP request duration.
phpss_scheduler_tasksnoneCurrent number of registered tasks.
phpss_scheduler_task_runs_totalnoneTotal number of scheduled task runs.

Plugin Configuration​

🧩 MetricsPlugin​

Plugin class: MetricsPlugin

ParameterTypeDefaultDescription
listenstring|ListenrequiredThe address on which the metrics server listens. Metrics are exposed at /metrics.