Search by

technobase / laravel-system-status

codezardasht

Self-hosted status page, uptime monitor and incident tracker for Laravel: health checks, real traffic, automatic incidents, Telegram / Slack / Discord alerts, SLA reports and security monitoring.

Package info

github.com/TechnoBase-krd/laravel-system-status

pkg:composer/technobase/laravel-system-status

Statistics

Installs: 44

Dependents: 0

Suggesters: 0

Stars: 4

Open Issues: 0

v1.10.0 2026-10-28 10:48 UTC

README

Latest Version on Packagist Total Downloads PHP Version License

A self-hosted status page, uptime monitor and incident tracker for Laravel. It shows whether every part of your application works (database, Redis, queues, APIs, backoffice screens, payment and delivery integrations), keeps 90 days of uptime history, opens incidents by itself and alerts you on Telegram, Slack, Discord, mail or webhooks. Like githubstatus.com, but inside your own Laravel app.

Laravel status page with 24 hours of uptime history

Features

  • Health checks (probes): database, Redis, Horizon, queues, HTTP endpoints, CDN, TLS certificate expiry, disk space, DNS, TCP ports, failed jobs, and your own integrations.
  • Real traffic monitoring: every request is counted per route; 5xx error rates and slow p95 response times change the status.
  • Signals: one line around paid or side-effect calls (SMS, OTP, social login, AI APIs).
  • No false alarms: two checks must agree, flapping is grouped, and a failure caused by a dependency is folded into one alert.
  • Incidents: opened and resolved automatically, or posted by hand with a timeline and a postmortem.
  • Maintenance windows and deploy markers: planned work raises no alert; incidents show "6 min after deploy v1.8.2".
  • Alerts: Telegram, mail, Slack, Discord, signed webhooks and Laravel events.
  • Security monitoring (opt-in): scanners, SQL injection and XSS attempts, brute-force logins, logins from new countries, honeypots, auto-block with Cloudflare.
  • SLA reports: monthly uptime per component, as a page, CSV or PDF.
  • History: 1 hour (live), 24 hours, 7 days and 90 days.
  • Languages: English, Arabic and Sorani Kurdish, right to left included.
  • Works with PostgreSQL, MySQL / MariaDB and SQLite, inside your admin layout or as a standalone page. Optional Laravel Pulse card.

Requirements

PHP 8.3+, Laravel 12 or 13, Redis (for traffic counters) and a running scheduler. Details in Installation.

Quick start

composer require technobase/laravel-system-status
php artisan vendor:publish --tag=system-status-config
php artisan migrate
php artisan status:doctor     # checks the setup

Open /system-status as a Super Admin. The package registers the page, counts traffic and schedules status:check every minute by itself; you only need the Laravel scheduler running.

Then describe your application as components in config/system-status.php:

use Spatie\Health\Checks\Checks\DatabaseCheck;
use Technobase\SystemStatus\Probes\HttpEndpointProbe;
use Technobase\SystemStatus\Probes\SpatieCheckProbe;

'groups' => [
    'platform' => [
        'database' => ['probes' => [['class' => SpatieCheckProbe::class, 'with' => ['check' => DatabaseCheck::class], 'every' => 1]]],
    ],
    'mobile_api' => [
        'api_orders' => [
            'probes' => [['class' => HttpEndpointProbe::class, 'with' => ['path' => '/api/v1/health'], 'every' => 2]],
            'uris' => ['api/v1/orders*'],     // real traffic on these routes counts too
            'depends_on' => ['database'],
        ],
    ],
],

Choose alert channels (Telegram is the default):

'alerts' => [
    'channels' => ['slack'],      // any of telegram, mail, slack, discord
    'slack_webhook' => env('SYSTEM_STATUS_SLACK_WEBHOOK'),
],
php artisan status:test-alert

The full walkthrough is in Installation and setup.

Screenshots

Real time (1 hour) 7 days
Real-time uptime bars 7-day uptime history
Component details Ongoing problem
Component requests, errors and latency Degraded component with failing routes
Arabic (RTL) Phone
Arabic right-to-left status page Mobile status page

Documentation

Topic
How it works how a component's status is decided
Installation and setup requirements, integration steps, deployment
Configuration reference every option
Probes and signals built-in probes, custom probes, signals, latency, dependencies
Incidents and maintenance incidents, maintenance windows, deploy markers
Alerts and events channels, webhooks, Laravel events
Security monitoring suspicious activity, auto-block, security probes
SLA reports monthly uptime reports
Access, layout and translations roles, branding, languages, Pulse card
Commands and tables artisan commands, database tables
Troubleshooting common problems and fixes
Upgrading and contributing upgrades, releases, tests

Common commands

php artisan status:doctor                          # check the setup
php artisan status:check                           # run the checks now
php artisan status:routes --fallback               # routes that match no component
php artisan status:maintenance --all --minutes=15  # start a maintenance window
php artisan status:deploy 1.8.2                    # record a deploy
php artisan status:report --previous               # last month's uptime

Upgrading

composer update technobase/laravel-system-status
php artisan migrate

1.x releases never break config keys, routes, translations or events. See CHANGELOG.md.

Contributing

Issues and pull requests are welcome. Run composer test and composer lint, and use Conventional Commits. See Contributing.

License

MIT. See LICENSE. Made by TechnoBase.