rmdev/pulse-manticore

Manticore Search monitoring card for Laravel Pulse

Maintainers

Package info

github.com/Renato27/laravel-pulse-manticore

pkg:composer/rmdev/pulse-manticore

Statistics

Installs: 4

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

1.0.0 2026-04-13 15:20 UTC

This package is auto-updated.

Last update: 2026-04-13 16:06:59 UTC


README

Manticore Search monitoring card for Laravel Pulse.

Metrics

Global

  • QPS (queries per second, delta-based)
  • Average query latency
  • Active connections
  • Memory usage
  • Uptime
  • Command breakdown (searches, inserts, updates, deletes)

Per table (collected in parallel via HTTP pool)

  • Total searches
  • Queries per minute (QPM)
  • Average latency (ms)
  • p95 latency (ms)
  • p99 latency (ms)

Tables are sorted by total searches descending. Latency columns are color-coded: green < 100ms, yellow 100–500ms, red ≥ 500ms.

Installation

Via Packagist

composer require rmdev/pulse-manticore

Via local path (development)

Add to your Laravel project's composer.json:

"repositories": [
    {
        "type": "path",
        "url": "../pulse-manticore"
    }
],
"require": {
    "rmdev/pulse-manticore": "*"
}
composer require rmdev/pulse-manticore

Configuration

Add the recorder to config/pulse.php:

use RmDev\PulseManticore\Recorders\ManticoreRecorder;

'recorders' => [
    ManticoreRecorder::class => [
        'host'      => env('MANTICORE_HOST', 'http://localhost'),
        'http_port' => env('MANTICORE_HTTP_PORT', 9308),
        'tables'    => [
            'only_prefixes'   => [],
            'only_suffixes'   => [],
            'except_prefixes' => [],
            'except_contains' => [],
            'except_suffixes' => [],
            'only_types'      => [],
        ],
    ],
],

Add to your .env:

MANTICORE_HOST=http://manticore
MANTICORE_HTTP_PORT=9308

Table filters

All filters default to [] (no filtering). Filters are applied in this order:

Filter Type Description
only_prefixes string[] Include only tables whose name starts with one of the given prefixes
only_suffixes string[] Include only tables whose name ends with one of the given suffixes
except_prefixes string[] Exclude tables whose name starts with one of the given prefixes
except_contains string[] Exclude tables whose name contains one of the given substrings
except_suffixes string[] Exclude tables whose name ends with one of the given suffixes
only_types string[] Include only tables of the given types (local, distributed, rt)

Examples:

// Show only distributed tables, excluding test and staging tables
'tables' => [
    'only_types'      => ['distributed'],
    'except_suffixes' => ['test', 'staging'],
],

// Show only tables with a specific prefix, excluding historic data tables
'tables' => [
    'only_prefixes'   => ['orders', 'products'],
    'except_contains' => ['historic', 'archive'],
],

// Exclude all test and temporary tables regardless of prefix
'tables' => [
    'except_suffixes' => ['test'],
    'except_contains' => ['tmp', 'temp'],
],

Avoiding noise in Slow Outgoing Requests

The recorder makes HTTP requests to Manticore every 15s. To prevent these from appearing in the Pulse Slow Outgoing Requests card, add an ignore rule:

Recorders\SlowOutgoingRequests::class => [
    // ...
    'ignore' => [
        '#' . preg_quote(env('MANTICORE_HOST', 'manticore'), '#') . '#',
    ],
],

Dashboard

Publish the Pulse dashboard if you haven't already:

php artisan vendor:publish --tag=pulse-dashboard

Add the card to resources/views/vendor/pulse/dashboard.blade.php:

<livewire:pulse.manticore-card cols="4" />

Publishing views

To customize the card view:

php artisan vendor:publish --tag=pulse-manticore-views

Requirements

  • PHP 8.2+
  • Laravel 11 or 12
  • Laravel Pulse ^1.0
  • Livewire ^3.0
  • Manticore Search with HTTP API enabled (port 9308 by default)