SSL Monitor
Monitor TLS certificate expiry with degraded/down thresholds
SSL monitors open a TLS connection, read the peer certificate expiry date, and map remaining time to monitor status. The recorded latency is the TLS handshake time in milliseconds.
Minimum setup
Set:
host(domain or IP)port(default443)degradedRemainingHours(default168)downRemainingHours(default24)
degradedRemainingHours must be greater than downRemainingHours.
Status logic
Let hours = hours until certificate expiry:
hours > degradedRemainingHours→ UPdownRemainingHours < hours <= degradedRemainingHours→ DEGRADEDhours <= downRemainingHours→ DOWN
These cases also return DOWN:
- The certificate fails verification (self-signed, unknown CA, expired, or host name mismatch) →
ERROR. Turn onallowSelfSignedCertto judge such a certificate by expiry only. - The connection fails →
ERROR. - The handshake takes longer than
timeout→TIMEOUT.
DEGRADED and DOWN messages include the expiry date and the issuer, for example Issued by CN=R3, O=Let's Encrypt.
Status page
For an SSL monitor, the status page shows the certificate state from the latest check:
| State | Meaning |
|---|---|
| SECURED | The certificate is valid and has not expired |
| INSECURE | The certificate has expired or failed verification |
| UNKNOWN | The latest check read no certificate (connection error, timeout) |
It also shows the time remaining, the expiry date, and the issuer. These values come from the cache of the latest check. After a cache flush they show again after the next check.
Configuration fields
| Field | Type | Default | Notes |
|---|---|---|---|
host |
string |
— | Required (domain or IP) |
port |
string |
443 |
Numeric string accepted |
degradedRemainingHours |
number |
168 |
Must be > downRemainingHours |
downRemainingHours |
number |
24 |
|
timeout |
number |
10000 |
TLS handshake timeout in milliseconds |
tlsServername |
string |
— | SNI name. Defaults to host when it is a name. Not sent for an IP |
allowSelfSignedCert |
boolean |
false |
Judge an untrusted certificate by expiry. The page still shows INSECURE |
Example
{
"monitor_type": "SSL",
"type_data": {
"host": "example.com",
"port": "443",
"degradedRemainingHours": 168,
"downRemainingHours": 24,
"timeout": 10000,
"allowSelfSignedCert": false
}
}
Troubleshooting
- Immediate DOWN: wrong host/port or TLS unavailable
- DOWN with "is not trusted": the certificate fails verification. Fix the certificate, set
tlsServernamewhenhostis an IP, or turn onallowSelfSignedCert - TIMEOUT: host unreachable or handshake slower than
timeout - Validation fails: ensure degraded threshold is strictly greater than down threshold