Skip to content

Laravel Monitoring Configuration

After installation, Uplinkr’s configuration file is available at config/uplinkr.php. This guide explains all available configuration options.

Configure where and how uplinkr stores probe results, project settings, and archive data.

'storage' => [
'disk' => env('UPLINKR_STORAGE_DISK', 'local'),
]

The Laravel filesystem disk where uplinkr stores all data. Must be a valid disk configured in config/filesystems.php. Common values: local, s3, public.

'path' => env('UPLINKR_STORAGE_PATH', 'uplinkr'),
'probe_results' => env('UPLINKR_STORAGE_PROBE_RESULTS', 'probes'),
'probe_filename_separator' => env('UPLINKR_PROBE_FILENAME_SEPARATOR', '@'),
  • path: Base directory where all uplinkr data is stored
  • probe_results: Subdirectory within each project for probe result files
  • probe_filename_separator: Character separating URL from date in filenames (e.g., example_com@2026-01-19.json)
'file_extension' => env('UPLINKR_FILE_EXTENSION', 'json'),

The file extension used for all uplinkr data files. Using json allows for easy inspection and manipulation of stored data.

'pretty_print_probe_results' => (bool)env('UPLINKR_STORAGE_PRETTY_PRINT_PROBE_RESULTS', true),

Controls whether files in <project>/probes/*.json are written in pretty-printed JSON format.

  • true: Easier to read manually, larger files
  • false: Compact JSON, smaller files, and less I/O overhead (recommended for production/high-frequency probes)
'archive_folder' => env('UPLINKR_ARCHIVE_FOLDER', 'archived'),

Name of the subdirectory where archived projects are stored. Archived projects are moved here instead of being deleted, allowing for later retrieval if needed.

'allow_complete_wipe' => env('UPLINKR_ALLOW_COMPLETE_WIPE', false),
'probe_results_grouping' => env('UPLINKR_PROBE_RESULTS_GROUPING', 'daily'),

Controls how probe results are grouped into files:

  • hourly: example_com@2026-01-19-14.json (high-frequency monitoring)
  • daily: example_com@2026-01-19.json (default, balanced)
  • monthly: example_com@2026-01.json (long-term storage)

Settings that control how uplinkr performs HTTP probes to monitor your endpoints.

'execution_mode' => env('UPLINKR_PROBES_EXECUTION_MODE', 'direct'),

Defines how probes are executed:

  • direct: Execute synchronously in the current process (default)
  • job: Dispatch probes as Laravel queue jobs (recommended for high-frequency or large setups)
'queue_connection' => env('UPLINKR_PROBES_QUEUE_CONNECTION', 'sync'),

Queue connection used when execution_mode is set to job (for example: sync, redis, database, sqs).

'probes' => [
'standard_latency' => (int)env('UPLINKR_PROBES_STANDARD_LATENCY', 1500),
]

Maximum acceptable response time in milliseconds. Probes that exceed this threshold are marked as slow/unreachable, even if they return a successful HTTP status code.

Default: 1500ms (1.5 seconds)

'user_agent' => env('UPLINKR_PROBES_USER_AGENT', 'uplinkr-monitor'),

The User-Agent string sent with each probe request. Helps identify uplinkr probes in server logs.

Settings for project management. Projects are used to organize and group related probes together.

'projects' => [
'standard_project' => env('UPLINKR_STANDARD_PROJECT', 'standard_project'),
'standard_project_status' => env('UPLINKR_STANDARD_PROJECT_STATUS', 'enabled'),
]
  • standard_project: Fallback project name when no project is specified
  • standard_project_status: Default status for newly created projects (common values: enabled, disabled, archived)

Define how uplinkr sends alerts when probe results indicate problems. Channels can be enabled/disabled and configured independently.

'notifications' => [
'enabled' => array_filter(explode(',', (string)env('UPLINKR_NOTIFY_CHANNELS', 'log'))),
]

Comma-separated list of enabled notification channels in your .env file:

Terminal window
UPLINKR_NOTIFY_CHANNELS=log,mail,webhook
'channels' => [
'log' => [
'enabled' => (bool)env('UPLINKR_NOTIFY_LOG_ENABLED', true),
'channel' => env('UPLINKR_NOTIFY_LOG_CHANNEL', 'uplinkr'),
'level' => env('UPLINKR_NOTIFY_LOG_LEVEL', 'warning'),
],
]

Logs alerts to your application’s logging system.

  • enabled: Enable/disable log notifications
  • channel: Laravel log channel to use (maps to config/logging.php)
  • level: Log level for alert entries (debug, info, warning, error, etc.)
'mail' => [
'enabled' => (bool)env('UPLINKR_NOTIFY_MAIL_ENABLED', false),
'mailer' => env('UPLINKR_NOTIFY_MAIL_MAILER', null),
'to' => array_filter(explode(',', (string)env('UPLINKR_NOTIFY_MAIL_TO', ''))),
'from' => [
'address' => env('UPLINKR_NOTIFY_MAIL_FROM_ADDRESS', null),
'name' => env('UPLINKR_NOTIFY_MAIL_FROM_NAME', null),
],
'subject_prefix' => env('UPLINKR_NOTIFY_MAIL_SUBJECT_PREFIX', '[Uplinkr]'),
]

Send email notifications when alerts are triggered.

Example .env configuration:

Terminal window
UPLINKR_NOTIFY_MAIL_ENABLED=true
UPLINKR_NOTIFY_MAIL_TO=admin@example.com,ops@example.com
UPLINKR_NOTIFY_MAIL_FROM_ADDRESS=uplinkr@example.com
UPLINKR_NOTIFY_MAIL_FROM_NAME="Uplinkr Monitor"
'webhook' => [
'enabled' => (bool)env('UPLINKR_NOTIFY_WEBHOOK_ENABLED', false),
'url' => env('UPLINKR_NOTIFY_WEBHOOK_URL', null),
'method' => env('UPLINKR_NOTIFY_WEBHOOK_METHOD', 'POST'),
'timeout_seconds' => (int)env('UPLINKR_NOTIFY_WEBHOOK_TIMEOUT', 10),
'connect_timeout_seconds' => (int)env('UPLINKR_NOTIFY_WEBHOOK_CONNECT_TIMEOUT', 5),
'verify_tls' => (bool)env('UPLINKR_NOTIFY_WEBHOOK_VERIFY_TLS', true),
'headers' => [
'Content-Type' => 'application/json',
],
]

Send alert data to any external application or endpoint. This is the “bring your own integration” channel.

Retry Strategy:

'retry' => [
'max_attempts' => (int)env('UPLINKR_NOTIFY_WEBHOOK_RETRY_MAX', 3),
'backoff_ms' => [0, 2000, 10000],
]

Defines retry behavior with configurable backoff delays between attempts.

Optional HMAC Signing:

'signing' => [
'enabled' => (bool)env('UPLINKR_NOTIFY_WEBHOOK_SIGNING', false),
'secret' => env('UPLINKR_NOTIFY_WEBHOOK_SECRET', null),
'header' => env('UPLINKR_NOTIFY_WEBHOOK_SIGNATURE_HEADER', 'X-Uplinkr-Signature'),
'algo' => env('UPLINKR_NOTIFY_WEBHOOK_SIGNATURE_ALGO', 'sha256'),
]

Enable webhook signing so the receiver can verify the request originates from uplinkr.

'payload' => [
'version' => env('UPLINKR_NOTIFY_PAYLOAD_VERSION', 'uplinkr.v1'),
]

Version identifier for the notification payload structure, allowing for stable integrations over time.

Alert payloads include probe_tls_expiration_date (when available), and pass it through Mail, Webhook, and Log channels.

When multiple probes fail in a project, alert notifications are aggregated and contain a probes[] list for compact delivery.

Configure how uplinkr writes log messages. Uplinkr uses its own dedicated log channel to keep probe-related logs separate from your application logs.

'logging' => [
'log_channel' => env('UPLINKR_LOG_CHANNEL', 'uplinkr'),
'log' => [
'driver' => env('UPLINKR_LOG_DRIVER', 'daily'),
'path' => env('UPLINKR_LOG_PATH', storage_path('logs/uplinkr.log')),
'level' => env('UPLINKR_LOG_LEVEL', 'info'),
'days' => (int)env('UPLINKR_LOG_DAYS', 14),
],
]
  • log_channel: Name of the log channel uplinkr should use
  • driver: Log driver (daily, single, stack, syslog, errorlog)
  • path: Full path to the log file
  • level: Minimum log level (debug, info, notice, warning, error, critical, alert, emergency)
  • days: Number of days to retain daily log files

Configure the automatic execution of uplinkr probes. When enabled, uplinkr integrates with Laravel’s task scheduler to run your monitoring probes at the specified interval.

'scheduler' => [
'enabled' => false,
'cron' => '* * * * *',
'alert_cron' => '*/2 * * * *',
]
  • enabled: Enable/disable automatic scheduler integration
  • cron: Cron expression defining when probes should run (default: every minute)
  • alert_cron: Cron expression for uplinkr:project:alert:decision (default: every 2 minutes). Set to null to reuse cron.

Common cron expressions:

  • * * * * * - Every minute
  • */5 * * * * - Every 5 minutes
  • 0 * * * * - Every hour
  • 0 */6 * * * - Every 6 hours