Uptime Monitor
Complete guide to VistoShield Uptime Monitor — HTTP/HTTPS, TCP, DNS, and ping monitoring with incident tracking, response time graphs, and SMS notifications.
Overview
Uptime Monitor continuously checks your WordPress site’s availability from the VistoShield cloud infrastructure. Unlike agent-based monitors that run on your server, cloud-based monitoring detects downtime even when your server is completely unreachable.
The module supports four check types:
- HTTP/HTTPS — Full HTTP requests with status code validation, keyword verification, and response time tracking.
- TCP — Socket-based port connectivity checks for any TCP service (SSH, MySQL, Redis, SMTP, etc.).
- DNS — A record resolution verification to catch DNS propagation issues and hijack attempts.
- Ping — DNS-based reachability checks to verify your domain resolves correctly.
When downtime is detected (after 2 consecutive failures to prevent false positives), an incident is automatically created and notifications are sent via email, Slack, webhook, and optionally SMS. When the check passes again, the incident is resolved automatically and a recovery notification is sent.
Setup
- Navigate to Uptime Monitor — In your VistoShield dashboard, select your site and click Uptime Monitor in the sidebar.
- Add your first check — Click Add Check and configure:
- Check Type — HTTP, HTTPS, TCP, Ping, or DNS
- Target URL / Host — The URL or hostname to monitor
- Port — For TCP checks, the port number to connect to
- Check Interval — How often to check (1 min to 1 hour)
- Expected Status — For HTTP checks, the expected response code (default: 200)
- Keyword — Optional text that must appear in the HTTP response body
- Run your first check — Click Check Now on the Overview tab to trigger an immediate check of all configured monitors.
- Configure notifications — Go to the Settings tab to add SMS providers for phone notifications.
Check Types
HTTP / HTTPS
Sends a full HTTP request to the target URL and validates the response. This is the most comprehensive check type.
| Validation | Description |
|---|---|
| Status Code | Compares the HTTP response code against the expected value (default: 200) |
| Keyword | Optionally searches for a specific string in the response body (case-insensitive) |
| Response Time | Marks the check as “degraded” if response time exceeds 5000ms |
| SSL Certificate | Verifies SSL certificate validity (HTTPS only) |
Status Results
| Status | Condition |
|---|---|
| Up | Expected status code, keyword found (if configured), response < 5000ms |
| Degraded | Response > 5000ms, or unexpected status code (not 5xx) |
| Down | Connection timeout, 5xx error, keyword not found, or SSL error |
TCP Port
Opens a TCP socket connection to the specified host and port. Useful for monitoring non-HTTP services.
Common ports to monitor:
- 22 — SSH
- 3306 — MySQL / MariaDB
- 6379 — Redis
- 25 / 587 — SMTP
- 443 — HTTPS
DNS
Queries DNS A records for the specified domain and verifies at least one record resolves. Catches DNS propagation failures and unauthorized changes.
Ping (DNS-based)
Performs a DNS resolution check (A and AAAA records) to verify the domain is resolvable. Note: PHP cannot perform real ICMP ping without root privileges, so this uses DNS resolution as a proxy for reachability.
Incident Management
Incidents are automatically created and resolved based on check results:
Incident Creation
- A check returns “down” status
- The consecutive failure counter increments
- After 2 consecutive failures, an incident is created
- Notifications are sent via all configured channels (email, Slack, webhook, SMS)
The 2-failure threshold prevents false alarms from transient network issues or brief server restarts.
Incident Resolution
- A check returns “up” status while an incident is ongoing
- The incident is automatically marked as “resolved”
- Duration is calculated and stored
- A recovery notification is sent
Incident Timeline
The Incidents tab shows a chronological timeline of all incidents with:
- Status (ongoing / resolved)
- Check type and target
- Start and resolution time
- Total duration
- Root cause (error message from the failed check)
SMS Integration
Uptime Monitor supports Bring Your Own Provider (BYOP) SMS notifications. You configure your own SMS provider credentials, which are encrypted at rest using AES-256-GCM.
Supported Providers
| Provider | Required Credentials |
|---|---|
| Twilio | Account SID, Auth Token, From Number |
| Vonage (Nexmo) | API Key, API Secret, From Name |
| Custom Webhook | Webhook URL, optional Authorization header |
Setting Up SMS
- Go to Uptime Monitor → Settings
- Click Add Provider
- Select your provider type and enter credentials
- Add the phone numbers to receive SMS alerts (comma-separated, E.164 format)
- Click Test to verify the configuration works
Custom Webhook Format
For custom webhook providers, VistoShield sends a POST request with JSON body:
{
"to": "+1234567890",
"message": "VistoShield ALERT: https://mysite.com is DOWN. Connection timed out",
"source": "vistoshield"
}
Plan Limits
| Feature | Free | Pro | Max |
|---|---|---|---|
| Checks per site | 1 | 10 | 50 |
| Min interval | 5 min | 1 min | 1 min |
| Check types | All (view only) | All | All |
| SMS notifications | No | Yes | Yes |
| History retention | 3 days | 14 days | 30 days |
API Reference
All endpoints require JWT authentication. Site-specific endpoints require ownership of the site.
Endpoints
| Method | Endpoint | Description |
|---|---|---|
GET | /api/dashboard/sites/{id}/uptime | Overview with uptime percentages, checks, incidents |
GET | /api/dashboard/sites/{id}/uptime/checks | List all checks for the site |
POST | /api/dashboard/sites/{id}/uptime/checks | Create a new check |
PUT | /api/dashboard/sites/{id}/uptime/checks/{checkId} | Update a check |
DELETE | /api/dashboard/sites/{id}/uptime/checks/{checkId} | Delete a check and its log |
GET | /api/dashboard/sites/{id}/uptime/log | Paginated check log entries |
GET | /api/dashboard/sites/{id}/uptime/incidents | List incidents |
GET | /api/dashboard/sites/{id}/uptime/stats | Aggregated stats by day |
POST | /api/dashboard/sites/{id}/uptime/check-now | Trigger manual check (rate limited) |
SMS Provider Endpoints (User-Level)
| Method | Endpoint | Description |
|---|---|---|
GET | /api/dashboard/sms-providers | List SMS providers |
POST | /api/dashboard/sms-providers | Create/update provider |
DELETE | /api/dashboard/sms-providers/{id} | Delete provider |
POST | /api/dashboard/sms-providers/test | Send test SMS |
Troubleshooting
Check always shows “down”
- Verify the target URL is correct and accessible from the internet
- Check if your hosting firewall blocks requests from external IPs
- For HTTPS checks, ensure your SSL certificate is valid
- For TCP checks, verify the port is open and the service is running
SMS not sending
- Use the Test button to verify your provider credentials
- Ensure phone numbers are in E.164 format (e.g., +1234567890)
- Check your SMS provider’s dashboard for delivery logs
- Verify your APP_KEY environment variable is set (required for credential encryption)
Too many false alerts
- Increase the check interval (e.g., from 1 min to 5 min)
- Increase the timeout value for slow-responding servers
- The 2-consecutive-failure threshold already filters most false positives