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