Skip to content

Reference

Configuration reference

config/telemetry-insights.php. Publish it with php artisan vendor:publish --tag=telemetry-insights-config.

Master switch

Key Env Default
enabled TELEMETRY_INSIGHTS_ENABLED true Off registers no commands, schedule or pages

Scope

Key Env Default
scope.service TELEMETRY_INSIGHTS_SERVICE all Limit the scheduled work to one service
scope.environment TELEMETRY_INSIGHTS_ENVIRONMENT all Limit it to one environment
scope.window TELEMETRY_INSIGHTS_WINDOW 15m How far back each pass reads

Keep the window comfortably longer than the scan interval, so a slow ingest never drops an error between passes.

Correlation

Key Env Default
correlation.burst_seconds TELEMETRY_INSIGHTS_BURST_SECONDS 120 How close two groups must start to be one event
correlation.min_groups TELEMETRY_INSIGHTS_MIN_GROUPS 3 Below this a burst is not an incident
correlation.shared_ratio TELEMETRY_INSIGHTS_SHARED_RATIO 0.6 Share of the burst that must touch the failing dependency
correlation.max_trace_probes TELEMETRY_INSIGHTS_MAX_PROBES 20 Trace fetches per pass — this bounds the cost
correlation.sample_limit TELEMETRY_INSIGHTS_SAMPLE_LIMIT 500 Occurrences read per pass
correlation.change_window_minutes TELEMETRY_INSIGHTS_CHANGE_WINDOW 120 How far back to look for a deploy to blame
correlation.signal_pad_seconds — 300 Padding around onset when reading host signals

Digest

Key Env Default
digest.limit TELEMETRY_INSIGHTS_DIGEST_LIMIT 5 Findings per kind
digest.slow_route_ms TELEMETRY_INSIGHTS_SLOW_ROUTE_MS 1000 p95 above this is a finding
digest.slow_query_ms TELEMETRY_INSIGHTS_SLOW_QUERY_MS 100 Average above this is a slow query
digest.repeated_query_calls TELEMETRY_INSIGHTS_REPEATED_QUERY_CALLS 100 Calls above this is a repeated query

Notifications

Key Env Default
notify.default — ['log'] Channels used when a rule names none
notify.channels — log, slack, webhook Name → class map
notify.log.level TELEMETRY_INSIGHTS_LOG_LEVEL warning
notify.slack.webhook_url TELEMETRY_INSIGHTS_SLACK_WEBHOOK —
notify.webhook.url TELEMETRY_INSIGHTS_WEBHOOK_URL —

Scheduled tasks

See scheduled tasks.

Key Env Default
scheduled_tasks.enabled TELEMETRY_INSIGHTS_SCHEDULED_TASKS true Read the scheduler's gauges on each scan
scheduled_tasks.scheduler_stopped_after_seconds TELEMETRY_INSIGHTS_SCHEDULER_STOPPED_AFTER 180 schedule:run silent this long is a stopped scheduler
scheduled_tasks.missed_after_seconds TELEMETRY_INSIGHTS_TASK_MISSED_AFTER 300 Due this long before its last run is a miss
scheduled_tasks.listed_within_seconds — 600 Not listed by schedule:run for this long: left the schedule, not missed
scheduled_tasks.overrun_after_seconds TELEMETRY_INSIGHTS_TASK_OVERRUN_AFTER 3600 A run older than this is overrunning
scheduled_tasks.failure_threshold TELEMETRY_INSIGHTS_TASK_FAILURE_THRESHOLD 1 Failures in a row before a failing task is an issue
scheduled_tasks.max_failure_probes — 20 Streak reads per pass — this bounds the cost
scheduled_tasks.tasks — [] Per-task overrides, by name or * pattern

Escalation

See archive until escalating.

Key Env Default
escalation.baseline_days — 7 History learned from at archive time
escalation.spike_factor — 3.0 × the 95th-percentile hour
escalation.burst_factor — 1.5 × the worst hour
escalation.sustained_hours — 2 Hours over the spike limit before it escalates
escalation.min_volume TELEMETRY_INSIGHTS_ESCALATION_MIN 10 Floor for both limits
escalation.sample_limit — 10000 Records read when learning

Stale issues

Key Env Default
stale.enabled TELEMETRY_INSIGHTS_STALE_RESOLVE true
stale.resolve_after_days TELEMETRY_INSIGHTS_STALE_DAYS 14 Quiet this long and an open error group is resolved

Profiling

See profiling.

Key Env Default
profiling.targets — [] Service → url, secret (and optional path) of its signed directive endpoint
profiling.timeout — 5 Seconds per directive request
profiling.rotation.enabled TELEMETRY_INSIGHTS_PROFILING false Schedules the rotation
profiling.rotation.routes TELEMETRY_INSIGHTS_PROFILING_ROUTES 3 Routes per pass
profiling.rotation.minutes TELEMETRY_INSIGHTS_PROFILING_MINUTES 15 How long each directive lasts
profiling.rotation.profile — true CPU-profile as well as keep
profiling.rotation.impact TELEMETRY_INSIGHTS_PROFILING_IMPACT total_time Or p95_rate
profiling.rotation.lookback — 24h Window the impact is measured over
profiling.rotation.cooldown_hours TELEMETRY_INSIGHTS_PROFILING_COOLDOWN 24 A route profiled this recently is skipped
profiling.rotation.failed_cooldown_hours — 1 A route whose directive failed is retried after this

Agent tools

See agent tools.

Key Env Default
mcp.enabled TELEMETRY_INSIGHTS_MCP true Add the ledger tools to the dashboard's MCP server
mcp.writes TELEMETRY_INSIGHTS_MCP_WRITES true Off registers the read tools only

Announcements

Key Env Default
announce.new_issues TELEMETRY_INSIGHTS_ANNOUNCE_NEW true
announce.regressions TELEMETRY_INSIGHTS_ANNOUNCE_REGRESSIONS true
announce.incidents TELEMETRY_INSIGHTS_ANNOUNCE_INCIDENTS true
announce.scheduled_tasks TELEMETRY_INSIGHTS_ANNOUNCE_SCHEDULED_TASKS true
announce.escalations TELEMETRY_INSIGHTS_ANNOUNCE_ESCALATIONS true An archived issue that escalated
announce.recoveries TELEMETRY_INSIGHTS_ANNOUNCE_RECOVERIES true A scheduled-task issue that cleared, when the problem was announced

Off means recorded silently, not ignored.

Schedule

Key Env Default
schedule.scan TELEMETRY_INSIGHTS_SCAN_CRON */5 * * * *
schedule.alerts TELEMETRY_INSIGHTS_ALERTS_CRON */5 * * * *
schedule.digest TELEMETRY_INSIGHTS_DIGEST_CRON 0 8 * * 1
schedule.profiling TELEMETRY_INSIGHTS_PROFILING_CRON 0 */4 * * * Only while the rotation is enabled

Set one to an empty string to schedule that job yourself.

Tables

Key Default
tables.issues telemetry_issues
tables.incidents telemetry_incidents
tables.alert_rules telemetry_alert_rules
tables.alert_events telemetry_alert_events
tables.issue_events telemetry_issue_events
tables.profiling_runs telemetry_profiling_runs

Renaming a table here is enough; the migration reads the same config.