Docs

Monitors & Presets

Configure HTTP, TCP, and Minecraft SRV health checks and monitor groupings.

Vail groups services logically into categories using the groups array in settings.json. Each group contains one or more service items monitored dynamically by Vail.

Service Item Schema

Each service object accepts the following fields:

FieldTypeRequiredDescription
namestringYesDisplay name for the service.
descriptionstringYesSubtitle or short summary of the service.
typestringYesChecker protocol: http, tcp, minecraft, srv, or manual.
targetstringConditionalHostname, IP address, or URL to monitor.
portnumberOptionalTarget port number (defaults to protocol standard if omitted).
srvRecordstringOptionalCustom DNS SRV record name for srv check types.
timeoutMsnumberOptionalMaximum probe timeout in milliseconds (defaults to 5000ms).
statusstringOptionalOverride status when type is set to manual (operational, degraded, outage, maintenance).

Monitoring Types

1. HTTP / HTTPS Endpoints (type: "http")

Sends an HTTP request and measures the response time. The service is marked operational if the HTTP status code is between 200 and 399.

{
  "name": "Public API",
  "description": "Production REST API gateway",
  "type": "http",
  "target": "https://api.example.com/health",
  "timeoutMs": 4000
}

2. TCP Port Checks (type: "tcp")

Establishes a raw TCP socket connection to a host and port. Useful for database servers, VPS instances, SSH daemons, and custom game sockets.

{
  "name": "Database Cluster",
  "description": "PostgreSQL master node TCP 5432",
  "type": "tcp",
  "target": "db.example.internal",
  "port": 5432,
  "timeoutMs": 3000
}

3. Minecraft SRV Resolution (type: "minecraft")

Specifically tailored for Minecraft Java servers. Vail queries DNS for _minecraft._tcp.<target>. If an SRV record exists, it extracts the destination hostname and port and verifies socket connectivity. If no SRV record is found, it falls back to port 25565.

{
  "name": "Survival Realm",
  "description": "Vanilla Minecraft server with SRV record",
  "type": "minecraft",
  "target": "play.example.com",
  "timeoutMs": 5000
}

4. Custom SRV Records (type: "srv")

Performs DNS SRV resolution for any custom protocol service before executing a socket ping.

{
  "name": "SIP Gateway",
  "description": "SIP voice server",
  "type": "srv",
  "target": "sip.example.com",
  "srvRecord": "_sip._udp.sip.example.com",
  "timeoutMs": 3000
}

5. Manual Status (type: "manual")

For external third-party providers or offline scheduled maintenance where automated polling is not desired:

{
  "name": "Third-Party Payment Gateway",
  "description": "External payment processor",
  "type": "manual",
  "status": "operational"
}

Example Grouping

"groups": [
  {
    "name": "Core Services",
    "services": [
      {
        "name": "Main Website",
        "description": "Frontend web application",
        "type": "http",
        "target": "https://example.com"
      },
      {
        "name": "Authentication API",
        "description": "OAuth2 identity provider",
        "type": "http",
        "target": "https://auth.example.com/health"
      }
    ]
  },
  {
    "name": "Game Servers",
    "services": [
      {
        "name": "Factions Network",
        "description": "Minecraft multiplayer network",
        "type": "minecraft",
        "target": "mc.example.com"
      }
    ]
  }
]

On this page