cronitor/laravel

Laravel integration for Cronitor scheduler provisioning and job telemetry

Maintainers

Package info

github.com/cronitorio/cronitor-laravel

pkg:composer/cronitor/laravel

Transparency log

Statistics

Installs: 1

Dependents: 0

Suggesters: 0

Stars: 1

Open Issues: 0

v0.1.0 2026-02-19 07:07 UTC

This package is not auto-updated.

Last update: 2026-08-26 22:54:45 UTC


README

Laravel integration for Cronitor scheduler provisioning and runtime telemetry.

Installation

composer require cronitor/laravel

Publish config:

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

What it does

  1. Provisions monitors from Laravel scheduler definitions at deploy time.
  2. Sends runtime telemetry for scheduled tasks (run, complete, fail).
  3. Sends runtime telemetry for queue jobs (run, complete, fail).

Settings reference

// config/cronitor.php
return [
    'enabled' => env('CRONITOR_ENABLED', true),
    'api_key' => env('CRONITOR_API_KEY'),
    'api_version' => env('CRONITOR_API_VERSION'),
    'environment' => env('CRONITOR_ENVIRONMENT'),

    'monitor_defaults' => [],
    'ignored_jobs' => [],
    'ignored_tasks' => [],
];

enabled

  • Type: bool
  • Default: true (CRONITOR_ENABLED)
  • Global on/off switch for the package.

api_key

  • Type: string
  • Default: null (CRONITOR_API_KEY)
  • Required for cronitor:sync and runtime telemetry pings.

api_version

  • Type: string|null
  • Default: null (CRONITOR_API_VERSION)
  • Optional API version passed to the Cronitor client.

environment

  • Type: string|null
  • Default: null (CRONITOR_ENVIRONMENT)
  • Optional environment tag passed to the Cronitor client.

monitor_defaults

  • Type: array
  • Default: []
  • Default fields merged into every monitor created by cronitor:sync.
  • Common fields:
    • notify (string[]) notification list keys.
    • group (string) Cronitor group key.
  • Reserved fields are ignored from this block: key, type, name, schedule.

ignored_jobs

  • Type: string[]
  • Default: []
  • Skip queue telemetry for matching queue raw names or resolved keys.

ignored_tasks

  • Type: string[]
  • Default: []
  • Skip scheduler sync and scheduler telemetry for matching task summary or key.

Example:

'monitor_defaults' => [
    'notify' => ['devops-alerts'],
    'group' => 'platform-jobs',
],

Sync behavior

Sync is a deploy-time operation. It creates/updates Cronitor monitors directly from Schedule::events() so they appear in the dashboard immediately, before first execution. The sync payload includes each task's monitor key, display name, and cron schedule.

Dry run:

php artisan cronitor:sync --dry-run

Apply sync:

php artisan cronitor:sync

Runtime telemetry behavior

Scheduler events

  • ScheduledTaskStarting -> run
  • ScheduledTaskFinished -> complete
  • ScheduledTaskFailed -> fail

Queue events

  • JobProcessing -> run
  • JobProcessed -> complete
  • JobFailed -> fail

Deploy flow (recommended)

  1. Deploy code with cronitor/laravel installed.
  2. Run php artisan cronitor:sync during deploy.
  3. Start/continue scheduler and queue workers. Runtime telemetry updates provisioned monitors.

Docker testing

Run the package tests fully in Docker:

docker build -t cronitor-laravel-test .
docker run --rm cronitor-laravel-test

Custom queue key contract

If your queued object implements Cronitor\Laravel\Contracts\DefinesCronitorKey, that key is used.

use Cronitor\Laravel\Contracts\DefinesCronitorKey;

class ShipOrder implements DefinesCronitorKey
{
    public function cronitorKey(): string
    {
        return 'ship-order';
    }
}

Additional docs

  • docs/architecture.md
  • docs/rollout-checklist.md