1. Quick start
ShootAlert watches two things: servers (via a lightweight agent you install on the box) and domains/URLs (probed externally from our infrastructure, no install needed). Get a first signal flowing in five minutes:
- 1 Create an account no card needed. You get the Free plan immediately.
- 2 Add your domain monitor or server from the sidebar. Each generates a copy-paste command or form.
- 3 Add a notification channel (email is on by default Slack, Telegram, SMS, WhatsApp are optional).
- 4 That's it. Default alert rules fire on real problems high CPU, disk filling up, MySQL down, monitor failing and arrive with an AI explanation of the likely cause.
2. Monitor a domain
Use this for websites, APIs, or any HTTP/HTTPS endpoint you want pinged from outside. No agent needed we probe from our servers.
Add a monitor
- Open Monitors → Add monitor.
- Enter a name and the full URL (e.g. https://acme.com/status).
- Pick the check interval Free 5 min, Pro 1 min, Business 30 seconds.
- Set expected status (defaults to 200) and optionally a keyword that must appear in the response body.
- Attach one or more notification channels for this monitor (or rely on org-wide channels).
- Save. The first probe runs within a minute.
What gets checked
- HTTP status response code matches your expected value.
- Response time recorded in milliseconds, charted on the monitor detail page.
- Keyword if set, must appear in the first 4 KB of the response body.
- SSL certificate expiry for https:// URLs, we read the cert and warn 30 / 7 / 0 days before expiry.
The detail page shows a 24-hour response-time chart, uptime % for 24h / 7d, recent probe history, and the SSL countdown. Hit Probe now to trigger an immediate manual check.
3. Servers (Deep Analysis)
Use this when you have a Linux box you want deep metrics from. CPU, memory, disk, network, MySQL, Redis, Nginx, Laravel apps, queue workers.
Step by step
- Open Servers (Deep Analysis) → Add server.
- Give the server a name (any label that helps you recognise it).
- Save. You'll land on the server's detail page with two install tabs.
Install the agent
Requires SSH + root on a Linux box. Works on Ubuntu, Debian, AlmaLinux, Rocky, RHEL, and Amazon Linux. The installer detects your distro and architecture automatically.
- Copy the one-line install command from the server's detail page.
- SSH into your server.
- Paste and run the command.
- Wait ~30 seconds. The server's Last seen badge should turn green.
What the agent collects
- CPU, RAM, disk, swap, load average, uptime
- Network in/out per interface
- MySQL/MariaDB connections, slow queries, query volume (when mysql: block enabled in agent.yml)
- Per-database size and table count (same flag)
- Laravel app status: failed/pending jobs, log size, APP_DEBUG flag (when laravel: block enabled in agent.yml)
- Detected services: Nginx/Apache, MySQL, Redis, Supervisor (refreshed hourly)
4. Track application errors
Catch uncaught exceptions from inside your own application's code — stack trace, breadcrumbs, request context, affected user, and an AI root-cause on every new error. This is separate from servers and monitors: it needs no agent on a box, just a small package installed in your app.
Create an app
- Open Errors → New app and give it a name (e.g. my-site — production).
- The app's detail page shows a unique SDK key and the install snippet.
- Make a separate app per environment (production, staging) so their errors stay in distinct inboxes.
Install the Laravel SDK
On the server where your Laravel app runs:
- Run composer require shootalert/shootalert-laravel.
- Add SHOOTALERT_ERROR_KEY and SHOOTALERT_ERROR_ENDPOINT to your .env (both shown on the app page).
- Add a shootalert channel to your logging stack in config/logging.php — the snippet on the app page has the exact block.
- Run php artisan config:clear.
What you get
- Exceptions grouped by fingerprint (same error from the same line collapses into one group)
- Full stack trace with your app's own frames highlighted
- Breadcrumbs: recent log lines + DB queries before the failure
- Request context (URL, method, route) and affected user count
- An AI root-cause + suggested fix on each new error group
- Notifications through your existing channels on first occurrence, threshold spikes, and reopens
Secrets in your .env and request data (passwords, tokens, auth headers) are stripped before anything leaves your server. Triage each group with Acknowledge, Resolve, or Mute from its detail page.
5. Notification channels
Add channels under Notifications → Add channel. After saving you can hit Test to send a synthetic alert and confirm the wiring works.
Comma-separated recipient list.
Slack
Starter and upIncoming webhook URL (Slack admin → Apps → Incoming Webhooks).
Telegram
Starter and upBot token (from @BotFather) + chat ID (use @userinfobot to find yours).
Webhook
Pro and upPOST endpoint + optional signing secret (we send X-ShootAlert-Signature).
SMS
Pro and upTwilio Account SID, Auth Token, From number (E.164).
Twilio WhatsApp credentials + approved sender.
6. Working with alerts
Default rules fire when something real breaks: server offline, CPU/RAM/disk over threshold, MySQL down, queue workers stalled, log file ballooning, monitor down, SSL expiring. You don't need to configure anything to start receiving them.
Alert lifecycle
- Open the alert fires and notifications go out across attached channels.
- Acknowledged someone on the team is on it. Stops re-notifying for the same fingerprint.
- Resolved issue is fixed. Auto-resolves on its own when the underlying condition clears, or do it manually.
AI diagnosis
Each open alert comes with a probable-cause explanation drawn from the metrics around the failure window. It's a starting point not a substitute for looking at logs. Available on Pro and above (token budget per plan).
7. Team & roles
Invite teammates from Team → Invite. They receive an email with a sign-up link scoped to your organization.
| Role | Can do |
|---|---|
| Owner | Everything: servers, monitors, channels, team, billing. |
| Admin | Everything except billing. |
| Member | Read-only: view dashboards, servers, alerts. Can't change settings. |
8. Plans & billing
Each plan caps servers, monitors, channels, alert volume, and minimum check interval. See live numbers and switch under Billing (owners only).
- Usage vs. limit is displayed at the top of the billing page.
- Going over a cap shows an inline message at the point of action (e.g. "You've hit the monitor limit") and links to billing.
- Plan switches in this build apply immediately; in production they're confirmed by a payment webhook.
9. Two-factor authentication
Open Profile and use the Two-factor authentication card, or jump straight to Profile → Security.
- Authenticator app (recommended) scan a QR with Google Authenticator, 1Password, Authy, Bitwarden, or any RFC 6238 app. Strongest method.
- Email codes a 6-digit code sent to your account email on each sign-in. Convenient backup.
- Recovery codes one-time use, generated when you enable 2FA. Store in a password manager. Each works once and can stand in for any other 2FA method.
10. Troubleshooting
Server stays "offline" after install
- SSH install check the service: systemctl status shootalert-agent. Tail the log: journalctl -u shootalert-agent -f.
- Cron install run the command manually once and check the output. Common cause: PHP not on the cron $PATH.
- Firewall the agent only needs outbound HTTPS (port 443) to ShootAlert. No inbound ports.
Monitor stuck on "unknown"
- First probe runs within a minute of creation. Hit Probe now to force it.
- Confirm the URL is reachable from the public internet internal-only hostnames won't work.
- If you set a keyword, make sure it appears in the first 4 KB of the body. Big SPAs often defer content past that.
Notifications not arriving
- Use the Test button on the channel it sends a synthetic alert and shows the delivery result inline.
- Email: check spam. Slack: confirm the webhook URL still works (re-create if rotated).
- Twilio SMS/WhatsApp: verify the From number is verified/enabled in your Twilio console.
"Plan limit reached" when adding things
- Each plan caps servers / monitors / channels. Check current usage on the Billing page.
- Either delete unused items or upgrade.
Still stuck?
Drop a note to support@shootalert.com with your organization name and the page you're on. We usually reply within a business day.