Documentation
Everything you need to set up Mraqib. Can’t find an answer? Contact support.
Getting started
- Create a free account. A workspace is created for you, with an email alert channel for your address.
- Open Monitors → Add monitor, paste your website or API URL and save. The first check runs within seconds.
- Open Alerts to add Telegram, Teams, Slack, Discord or webhook channels and press Send test.
- Optional: install the server agent, and publish a status page.
Monitors
- HTTP(S) — checks the status code (default 200–299), response time and, optionally, a keyword or JSON value. You can set method, headers and body for APIs.
- Keyword — the page must contain (or not contain) a word, e.g. your footer text.
- JSON — e.g. path
statusmust equalokon your/healthendpoint. - TCP port — host and port must accept a connection (databases, SMTP, SSH…).
- Ping — ICMP ping to a server, router or IP; alerts on no reply, warns on packet loss.
- DNS record — an A, AAAA, CNAME, MX, TXT or NS record must resolve, optionally to an expected value (detects hijacked or broken DNS).
- Domain expiry — warns before your domain registration ends (30 days by default), using the registry’s RDAP data.
- Heartbeat — your job calls us; see below.
When a check fails, it is retried quickly. You are alerted only after the number of retries you choose fails too (default 1 retry), which removes false alarms from brief network blips. HTTPS monitors also watch the SSL certificate and warn before it expires.
Monitors can’t target private or internal addresses (like 10.x, 192.168.x or localhost) — for internal services, use the server agent or a heartbeat.
Cron heartbeats
Create a monitor of type Heartbeat and set how often the job runs plus a grace period. Copy its unique URL and call it at the end of your job:
# crontab: nightly backup, ping only on success 0 2 * * * /opt/backup.sh && curl -fsS -m 10 --retry 3 https://mraqib.com/api/hb/YOUR_TOKEN > /dev/null
Works with GET or POST from any language. If no ping arrives within the period + grace, the monitor goes down and you are alerted.
Cron schedule: choose “On a cron schedule” and paste the same expression as your crontab (e.g. 0 2 * * *) and its time zone. We alert if a scheduled run doesn’t ping within the grace period — perfect for jobs that run at irregular times.
Alert channels
- Email — one or more addresses.
- Telegram — start a chat with our bot (or your own bot), then enter your chat ID.
- Microsoft Teams — in the channel choose Workflows → “Post to a channel when a webhook request is received” and paste the URL.
- Slack / Discord — create an incoming webhook and paste the URL.
- WhatsApp (free) — through CallMeBot: send their bot one WhatsApp message to get a free API key, then add your number and key.
- Phone push / ntfy — free push notifications on your phone: turn them on under Account → Notifications, or subscribe to a topic in the ntfy app.
- Webhook — we POST JSON to your URL. Add a signing secret and verify the
X-Uptiq-Signatureheader:
// Node.js
const sig = 'sha256=' + crypto.createHmac('sha256', SECRET).update(rawBody).digest('hex');
if (sig !== req.headers['x-uptiq-signature']) return res.status(401).end();Choosing channels and escalation
By default every channel gets every alert. In a monitor’s settings you can pick specific channels, and turn on escalation: if an outage isn’t acknowledged within N minutes, the channels you choose (e.g. the on-call manager’s SMS) are alerted. Acknowledge from the incident list or the link in the alert.
Maintenance windows
Under Maintenance, schedule planned work (once, daily or weekly). Alerts are muted, the time doesn’t count against uptime, and status pages show the maintenance.
Server agent
Go to Servers → Add server. You’ll get a one-line command with a token that is shown only once. Run it on the server as root:
curl -fsSL https://mraqib.com/agent/install.sh | sudo sh -s -- YOUR_TOKEN
- Supports Linux x86-64 and ARM64 with systemd. The agent runs as the
uptiq-agentservice. - It sends CPU, load, memory, disks and network every minute over HTTPS. No inbound ports are needed.
- If Docker is installed, it also reports every container (state, health, restarts, CPU, memory) using read-only access.
- Check it with
systemctl status uptiq-agentandjournalctl -u uptiq-agent -f.
Uninstall:
curl -fsSL https://mraqib.com/agent/install.sh | sudo sh -s -- --uninstall
Alerts: server offline, high CPU, memory or disk (thresholds per server), and container stopped, restarted or unhealthy.
Windows
Windows 10/11 and Windows Server 2016+ (64-bit). Open PowerShell as Administrator and run the command shown in the dashboard:
& ([scriptblock]::Create((irm https://mraqib.com/agent/install.ps1))) -Token YOUR_TOKEN
The agent runs at startup as a scheduled task (UptiqAgent) and reports CPU, memory, disks, network, processes and logs. Uninstall with -Uninstall instead of -Token ….
Processes and log files
Edit the agent config — /etc/uptiq-agent.conf on Linux, C:\ProgramData\Uptiq\agent.conf on Windows — then restart the agent (systemctl restart uptiq-agent, or restart the UptiqAgent task):
# alert when no process with this name is running PROCESSES=nginx,postgres,java # alert on new lines matching a regular expression (one per LOG_n) LOG_1=/var/log/nginx/error.log|crit|emerg LOG_2=/opt/app/logs/app.log|(?i)outofmemory|fatal # Windows: LOG_1=C:logsapi.log|(?i)exception
Process alerts open an incident and recover automatically. Log alerts are sent at most once every 10 minutes per file and pattern, with the number of matching lines and a sample.
Status pages
Open Status pages → New, choose a name and the monitors to show, and add your logo and colour. The page is live at mraqib.com/s/your-slug and updates automatically.
Post incident updates (investigating → identified → monitoring → resolved) from the status page settings. Visitors can subscribe by email to get your updates and maintenance notices.
Custom domain
- On a paid plan, enter your domain (e.g.
status.yourcompany.com) in the status page settings. - At your DNS provider, add a CNAME record:
status→mraqib.com. - Wait a few minutes. The first visit issues an HTTPS certificate automatically.
Using Cloudflare? Set the record to DNS only (grey cloud) so the certificate can be issued.
Team & workspaces
Invite people under Team. Roles: Owner (everything, including billing), Admin (manage monitors, channels and pages) and Viewer (read only). Agencies can create one workspace per client and switch between them from the top bar.
Plans & billing
Upgrade from Billing in the dashboard (owners only). Plans are prepaid monthly or yearly and do not renew automatically; we email you before your period ends. Renewing early adds the time to your current period. If a plan ends, the workspace moves to Free and monitors above the free limit are paused — resume them after upgrading. Invoices are available under Billing.
Reports
Reports shows the uptime, downtime, incidents and average response time of every monitor for any month, compared with your SLA target (set it in Settings). Print it or save it as PDF for your customers. Planned maintenance is excluded. Owners and admins also get a weekly summary email every Monday (turn it off in your account).
REST API
Create an API key under Settings → API keys (read-only or read & write) and send it as a Bearer token. Limit: 120 requests per minute per key.
curl -H "Authorization: Bearer uq_xxxxxxxx" https://mraqib.com/api/v1/monitors
GET /api/v1/status— summary: monitors up/down, servers down, open incidentsGET /api/v1/monitors— list monitors ·POST /api/v1/monitors— create (write key)GET /api/v1/monitors/:id— details, uptime 24h/7d/30d/90d and recent incidentsPATCH /api/v1/monitors/:id—{"paused": true}or{"name": "…"}·DELETE /api/v1/monitors/:idGET /api/v1/incidents?open=1&limit=50— incidents ·GET /api/v1/servers— servers with CPU, RAM and disk
Create a monitor:
curl -X POST https://mraqib.com/api/v1/monitors \
-H "Authorization: Bearer uq_xxxxxxxx" -H "Content-Type: application/json" \
-d '{"name":"Website","type":"http","url":"https://example.com","interval_sec":60}'Types: http, json (json_path, json_expected), keyword (keyword), tcp (host, port), ping, dns (host, dns_record_type, dns_expected), domain (host), heartbeat (optional cron_expr, cron_tz, grace_min). Errors return {"error": "…"} with status 4xx.
Troubleshooting
My monitor says down but the site works for me
Open the monitor to see the exact error. Common causes: a firewall or WAF blocking our servers, a redirect to a login page, a keyword that changed, or geo-blocking. Allow our user agent Mraqib-Monitor or ask us for our IP addresses.
The server shows “offline”
Run journalctl -u uptiq-agent -n 50. The server must reach mraqib.com on port 443. If you deleted and re-created the server, reinstall with the new token.
I’m not receiving emails
Check spam, and add noreply@uptiq.live to your contacts. Use Send test on the channel to check delivery.