Skip to content

learnkit-dev/laravel-prometheus

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LearnKit Laravel Prometheus

Laravel package voor het exporteren van Prometheus metrics met configureerbare exporters.

Installatie

Installeer het package via Composer:

composer require learnkit/laravel-prometheus

Publiceer de configuratie:

php artisan vendor:publish --tag=prometheus-config

Configuratie

Environment Variabelen

Voeg de volgende variabelen toe aan je .env bestand:

# Enable About Exporter
PROMETHEUS_EXPORT_ABOUT=true

# Automatically register routes (optional, default: true)
PROMETHEUS_AUTO_REGISTER_ROUTES=true

# Customize endpoint (optional)
PROMETHEUS_ENDPOINT=/metrics

# Customize middleware (optional)
PROMETHEUS_MIDDLEWARE=web

Config Bestand

Het config/prometheus.php bestand bevat alle configuratie opties:

return [
    'endpoint' => env('PROMETHEUS_ENDPOINT', '/metrics'),
    'middleware' => env('PROMETHEUS_MIDDLEWARE', 'web'),
    'auto_register_routes' => env('PROMETHEUS_AUTO_REGISTER_ROUTES', true),

    'exporters' => [
        'about' => [
            'enabled' => env('PROMETHEUS_EXPORT_ABOUT', false),
            'class' => \LearnKit\Prometheus\Exporters\AboutExporter::class,
        ],
    ],
];

Routes Configuratie

Automatische Route Registratie (Standaard)

Standaard registreert het package automatisch de /metrics route. Dit is de makkelijkste manier om te beginnen.

PROMETHEUS_AUTO_REGISTER_ROUTES=true

Handmatige Route Registratie

Als je meer controle wilt over waar en hoe de routes geregistreerd worden, kun je automatische registratie uitschakelen:

PROMETHEUS_AUTO_REGISTER_ROUTES=false

En vervolgens in je routes/web.php of een andere routes file:

use LearnKit\Prometheus\Facades\PrometheusRoutes;

// Gebruik standaard configuratie
PrometheusRoutes::routes();

// Of met custom opties
PrometheusRoutes::routes([
    'middleware' => ['web', 'auth'],
    'endpoint' => '/custom-metrics',
]);

Gebruik

Metrics Endpoint

Na installatie is er automatisch een /metrics endpoint beschikbaar dat alle metrics in Prometheus formaat teruggeeft.

Bezoek: http://your-app.test/metrics

About Exporter

De About Exporter verzamelt alle informatie van het php artisan about commando en exporteert dit als Prometheus info metrics.

Activeer via:

PROMETHEUS_EXPORT_ABOUT=true

Dit exporteert metrics zoals:

  • laravel_about_environment_info (Laravel versie, PHP versie, etc.)
  • laravel_about_drivers_info (Database, cache, session drivers)
  • En meer...

Custom Exporters

Je kunt je eigen exporters toevoegen door de Exporter interface te implementeren:

<?php

namespace App\Exporters;

use LearnKit\Prometheus\Exporters\Contracts\Exporter;
use Spatie\Prometheus\Facades\Prometheus;

class MyCustomExporter implements Exporter
{
    public function export(): void
    {
        Prometheus::addGauge('my_metric')
            ->value(100)
            ->labels(['label' => 'value']);
    }

    public function isEnabled(): bool
    {
        return config('prometheus.exporters.my_custom.enabled', false);
    }
}

Voeg deze toe aan config/prometheus.php:

'exporters' => [
    'about' => [
        'enabled' => env('PROMETHEUS_EXPORT_ABOUT', false),
        'class' => \LearnKit\Prometheus\Exporters\AboutExporter::class,
    ],
    'my_custom' => [
        'enabled' => env('PROMETHEUS_EXPORT_MY_CUSTOM', false),
        'class' => \App\Exporters\MyCustomExporter::class,
    ],
],

Beveiliging

Het wordt aangeraden om de metrics endpoint te beveiligen via middleware:

// config/prometheus.php
'middleware' => ['web', 'auth', 'admin'],

Of gebruik IP whitelisting in je nginx/apache configuratie.

Requirements

  • PHP 8.2+
  • Laravel 11.x of 12.x
  • Spatie Laravel Prometheus package

Author

Sebastiaan Kloos Email: [email protected]

License

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages