kislayphp / metrics
High-performance C++ PHP extension providing comprehensive metrics collection and monitoring for PHP microservices
Package info
Language:Shell
Type:php-ext
Ext name:ext-kislayphp_metrics
pkg:composer/kislayphp/metrics
Requires
- php: >=8.2
Suggests
- kislayphp/config: Configurable metrics collection
- kislayphp/core: HTTP/HTTPS server metrics
- kislayphp/discovery: Service health metrics
- kislayphp/eventbus: Real-time metrics streaming
- kislayphp/gateway: API gateway metrics
- kislayphp/queue: Queue processing metrics
Provides
This package is not auto-updated.
Last update: 2026-03-19 02:14:44 UTC
README
Application metrics for PHP microservices. Counter, gauge, histogram, and timer types with zero instrumentation overhead. Prometheus-compatible export.
Part of the KislayPHP ecosystem.
โจ What It Does
kislayphp/metrics provides C++-backed metrics primitives for PHP applications. All metric operations use atomic operations โ measuring your code doesn't slow it down.
<?php $metrics = new Kislay\Metrics\Collector(); $metrics->counter('requests_total')->increment(); $metrics->histogram('request_duration_ms')->observe($ms); echo $metrics->export(); // Prometheus text format
๐ฆ Installation
pie install kislayphp/metrics
Enable in php.ini:
extension=kislayphp_metrics.so
๐ Quick Start
<?php $metrics = new Kislay\Metrics\Collector(); // Counter โ monotonically increasing $metrics->counter('http_requests_total', ['method' => 'GET', 'status' => '200']) ->increment(); // Gauge โ value that goes up and down $metrics->gauge('active_connections')->set(42); $metrics->gauge('queue_depth')->increment(); $metrics->gauge('queue_depth')->decrement(); // Histogram โ distribution of values $start = microtime(true); // ... handle request ... $metrics->histogram('request_duration_seconds') ->observe(microtime(true) - $start); // Timer (convenience wrapper for histogram) $timer = $metrics->timer('db_query_seconds')->start(); // ... run query ... $timer->stop(); // Export as Prometheus text format $app->get('/metrics', function($req, $res) use ($metrics) { $res->send($metrics->export(), 'text/plain; version=0.0.4'); });
๐ Public API
namespace Kislay\Metrics; class Collector { public function counter(string $name, array $labels = []): Counter; public function gauge(string $name, array $labels = []): Gauge; public function histogram(string $name, array $labels = [], array $buckets = []): Histogram; public function timer(string $name, array $labels = []): Timer; public function export(): string; // Prometheus text format public function reset(): void; } class Counter { public function increment(float $by = 1): void; public function get(): float; } class Gauge { public function set(float $value): void; public function increment(float $by = 1): void; public function decrement(float $by = 1): void; public function get(): float; } class Histogram { public function observe(float $value): void; } class Timer { public function start(): TimerHandle; } class TimerHandle { public function stop(): float; }
Legacy aliases: KislayPHP\Metrics\*
๐ Ecosystem
core ยท gateway ยท discovery ยท metrics ยท queue ยท eventbus