Skip to content

Export Cluster Metrics

Export Cluster Metrics

When cluster mode is enabled, Queue Autoscale publishes a Redis-backed cluster summary and exposes flattened metrics through the main facade/service.

Expose a JSON endpoint

use Cbox\LaravelQueueAutoscale\Facades\LaravelQueueAutoscale;
use Illuminate\Support\Facades\Route;

Route::get('/internal/queue-autoscale/cluster', function () {
    return response()->json(LaravelQueueAutoscale::cluster());
});

Expose Prometheus-style metrics

use Cbox\LaravelQueueAutoscale\Facades\LaravelQueueAutoscale;
use Illuminate\Support\Facades\Route;

Route::get('/internal/queue-autoscale/metrics', function () {
    $lines = [];

    foreach (LaravelQueueAutoscale::clusterMetrics() as $metric) {
        $labels = [];

        foreach ($metric['labels'] as $key => $value) {
            if ($value === null) {
                continue;
            }

            $labels[] = sprintf('%s="%s"', $key, addslashes((string) $value));
        }

        $suffix = $labels === [] ? '' : '{'.implode(',', $labels).'}';
        $lines[] = sprintf('%s%s %s', $metric['name'], $suffix, (string) $metric['value']);
    }

    return response(implode("\n", $lines)."\n", 200, [
        'Content-Type' => 'text/plain; version=0.0.4',
    ]);
});

React to host scaling signals

use Cbox\LaravelQueueAutoscale\Events\ClusterScalingSignalUpdated;
use Illuminate\Support\Facades\Event;
use Illuminate\Support\Facades\Log;

Event::listen(ClusterScalingSignalUpdated::class, function (ClusterScalingSignalUpdated $event): void {
    Log::info('queue-autoscale cluster host signal', [
        'cluster_id' => $event->clusterId,
        'leader_id' => $event->leaderId,
        'action' => $event->action,
        'reason' => $event->reason,
        'current_hosts' => $event->currentHosts,
        'recommended_hosts' => $event->recommendedHosts,
        'current_capacity' => $event->currentCapacity,
        'required_workers' => $event->requiredWorkers,
    ]);
});

This is the easiest way to feed host-scale advisories into cboxdk/laravel-queue-monitor, your own dashboard, or an external autoscaling controller.