PHP code example of vntrungld / prometheus-exporter
1. Go to this page and download the library: Download vntrungld/prometheus-exporter library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
vntrungld / prometheus-exporter example snippets
return [
// Enable or disable the exporter
'enabled' => env('PROMETHEUS_EXPORTER_ENABLED', true),
// Metric namespace prefix
'namespace' => env('PROMETHEUS_EXPORTER_NAMESPACE', 'laravel'),
// Endpoint path (e.g., /metrics)
'path' => env('PROMETHEUS_EXPORTER_PATH', 'metrics'),
// Optional security token
'token' => env('PROMETHEUS_EXPORTER_TOKEN'),
// Middleware for the metrics endpoint
'middleware' => [
\Vntrungld\PrometheusExporter\Middlewares\Authorize::class,
],
// Tier-based collector configuration (useful for K8s deployments)
'tier' => env('PROMETHEUS_EXPORTER_TIER', 'default'),
'tiers' => [
'default' => [
'collectors' => [
\Vntrungld\PrometheusExporter\Collectors\TestCollector::class,
],
'sets' => [],
],
],
];
namespace App\Collectors;
use Vntrungld\PrometheusExporter\Collectors\Collector;
use Vntrungld\PrometheusExporter\Prometheus;
class RequestsCollector implements Collector
{
public function register(Prometheus $prometheus): void
{
$prometheus->addCounter('http_requests_total')
->help('Total number of HTTP requests')
->labels(['method', 'status'])
->value(100, ['GET', '200'])
->value(50, ['POST', '201']);
}
}
'tiers' => [
'default' => [
'collectors' => [
\App\Collectors\RequestsCollector::class,
],
'sets' => [],
],
],
$prometheus->addCounter('jobs_processed_total')
->help('Total number of processed jobs')
->labels(['queue'])
->value(150, ['default'])
->value(75, ['emails']);
$prometheus->addGauge('queue_size')
->help('Current queue size')
->labels(['queue'])
->value(42, ['default']);
$prometheus->addHistogram('http_request_duration_seconds')
->help('HTTP request duration in seconds')
->labels(['endpoint'])
->value(0.25, ['/api/users']);
$prometheus->addSummary('http_request_duration_summary')
->help('HTTP request duration summary')
->labels(['endpoint'])
->value(0.25, ['/api/users']);
namespace App\Collectors;
use Vntrungld\PrometheusExporter\Collectors\CollectorSet;
class ApiCollectorSet implements CollectorSet
{
public function collectors(): array
{
return [
RequestsCollector::class,
ResponseTimeCollector::class,
ErrorsCollector::class,
];
}
}
'tiers' => [
'api' => [
'collectors' => [],
'sets' => [
\App\Collectors\ApiCollectorSet::class,
],
],
],
'tier' => env('PROMETHEUS_EXPORTER_TIER', 'default'),
'tiers' => [
'default' => [
'collectors' => [TestCollector::class],
'sets' => [],
],
'api' => [
'collectors' => [],
'sets' => [ApiCollectorSet::class],
],
'worker' => [
'collectors' => [],
'sets' => [WorkerCollectorSet::class],
],
],
use Vntrungld\PrometheusExporter\Facades\Prometheus;
Prometheus::addCounter('custom_metric')
->help('A custom metric')
->value(1);
'middleware' => [
\Vntrungld\PrometheusExporter\Middlewares\Authorize::class,
\App\Http\Middleware\IpWhitelist::class,
],
bash
php artisan vendor:publish --tag=prometheus-exporter.config