SecuAAS Docs
SecuMon

Checks

The 7 probe types (ping, HTTP, TCP, DNS, SNMP, TLS certificate, content), their configuration, their execution and reading the results.

What it's for

A check is a probe attached to a host. It periodically measures an aspect of your infrastructure and produces a result: a status, a latency and a text output. SecuMon automatically schedules each check according to its interval and keeps the history of its results.

The check model

FieldTypeRequiredDescription
iduuid(generated)Unique identifier.
host_iduuidHost the check is attached to.
namestringHuman-readable name (ping web-prod-01).
check_typestringProbe type: ping, http, tcp, dns, snmp, cert, content.
configobjectType-specific parameters (see below).
interval_secintegerExecution frequency. Default: 60.
timeout_secintegerTimeout. Default: 30.
retriesintegerNumber of retries before failure. Default: 0.
enabledbooleantrue by default. A disabled check is no longer scheduled.
tagsobjectKey/value labels.

Result status

statusMeaning
0OK
1Degraded
2Critical
3Unknown

The 7 check types

ping — ICMP availability

Checks that a host responds and measures latency.

config fieldTypeRequiredDescription
hoststringHost or IP to ping.
{ "host": "10.0.0.12" }

Typical output: pong 1.5ms (status OK) or timeout (status critical).

http — health of a site or an API

Performs an HTTP(S) request and evaluates the response code (and, optionally, the content).

config fieldTypeRequiredDescription
urlstringURL to query.
methodstringHTTP method. Default: GET.
expected_statusintegerExact expected code (strict mode). 0 = permissive mode (2xx/3xx = OK).
expected_bodystringSubstring that must be present in the body.
headersobjectHeaders to send.
follow_redirectsbooleanFollow redirects. Default: true.
{ "url": "https://web-prod-01.example.com/health", "expected_status": 200, "expected_body": "ok" }

In permissive mode, a 5xx code is critical and a 4xx is degraded. In strict mode, only the exact expected code is OK.

tcp — open port

Opens a TCP connection and, optionally, exchanges data.

config fieldTypeRequiredDescription
hoststringHost or IP.
portintegerTCP port.
send_datastringData to send after connecting.
expect_datastringSubstring expected in the response.
{ "host": "10.0.0.12", "port": 5432 }

dns — resolution and propagation

Resolves a DNS record and checks its value, its propagation and the presence of DNSSEC.

config fieldTypeRequiredDescription
hoststringName to resolve.
record_typestringA, AAAA, MX, TXT, CNAME, NS, PTR. Default: A.
expected_valuestringValue expected in the response.
nameserverstringDNS server to query.
check_propagationbooleanCompare the responses of the authoritative NS. Default: false.
check_dnssecbooleanCheck the presence of DNSSEC. Default: false.
{ "host": "web-prod-01.example.com", "record_type": "A", "expected_value": "10.0.0.12" }

A propagation inconsistency or a missing DNSSEC (when requested) produces a degraded status; a missing expected value produces a critical status.

snmp — device metrics

Queries a device via SNMP. See the dedicated SNMP page for the metric templates.

config fieldTypeRequiredDescription
hoststringHost or IP of the device.
portintegerSNMP port. Default: 161.
versionstring2c (default) or 3.
communitystringSNMP community (v2c). Default: public.
templatestringDevice template (linux, cisco, mikrotik, ubiquiti, fortinet, generic).
oidsarrayList of explicit OIDs (takes priority over the template).
security_level, username, auth_protocol, auth_passphrase, priv_protocol, priv_passphrasestringSNMPv3 parameters.
{ "host": "10.0.0.12", "version": "2c", "community": "public", "template": "linux" }

cert — TLS certificate

Inspects a service's TLS certificate: days before expiry, issuer, protocol, chain, weak ciphers.

config fieldTypeRequiredDescription
hoststringHost to inspect.
portintegerTLS port. Default: 443.
warn_daysintegerWarning threshold (days before expiry). Default: 30.
critical_daysintegerCritical threshold. Default: 7.
{ "host": "web-prod-01.example.com", "port": 443, "warn_days": 30, "critical_days": 7 }

The output includes expiry_days, issuer, protocol, cipher, the chain state and any weak ciphers detected.

content — page content

Checks the content of a web page using several strategies.

config fieldTypeRequiredDescription
urlstringURL to fetch.
modestringkeyword, selector, regex, diff. Inferred from the other fields if absent.
containsstringrequired in keyword modeSubstring that must be present.
not_containsstringSubstring that must be absent.
selectorstringCSS selector (selector mode).
regexstringrequired in regex modePattern to extract/validate.
diff_threshold_pctintegerVariation threshold in diff mode. Default: 10.
case_sensitivebooleanCase-sensitive. Default: false.
{ "url": "https://web-prod-01.example.com/", "mode": "keyword", "contains": "Welcome" }

Using it from the portal

The Checks section lists your checks with their latest state. You can Add a check (choose the host, the type and the parameters), edit, disable/delete, run on demand and view the latest result as well as the history graphs.

Listing and viewing: all roles. Create, edit, delete: owner and admin. Run on demand: owner, admin, operator.

Using it through the API

List and filter

GET /api/v2/checks?host_id=<uuid> — the host_id filter is optional.

curl -s "https://api.secumon.secuaas.ovh/api/v2/checks?host_id=8f3b1c2a-2d44-4e1a-9b77-0a1b2c3d4e5f" \
  -H "Authorization: Bearer $SECUMON_TOKEN"
{
  "count": 1,
  "checks": [
    {
      "id": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
      "host_id": "8f3b1c2a-2d44-4e1a-9b77-0a1b2c3d4e5f",
      "name": "ping web-prod-01",
      "check_type": "ping",
      "config": { "host": "10.0.0.12" },
      "interval_sec": 60,
      "timeout_sec": 10,
      "retries": 0,
      "enabled": true
    }
  ]
}

Create a check

POST /api/v2/checkshost_id, name and check_type are required. The host must belong to your organization.

curl -s -X POST https://api.secumon.secuaas.ovh/api/v2/checks \
  -H "Authorization: Bearer $SECUMON_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "host_id": "8f3b1c2a-2d44-4e1a-9b77-0a1b2c3d4e5f",
    "name": "https web-prod-01",
    "check_type": "http",
    "config": { "url": "https://web-prod-01.example.com/health", "expected_status": 200 },
    "interval_sec": 30,
    "timeout_sec": 10
  }'

Response: 201 Created with the full check.

Edit and delete

# Partial edit (e.g. widen the interval, disable)
curl -s -X PUT https://api.secumon.secuaas.ovh/api/v2/checks/1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d \
  -H "Authorization: Bearer $SECUMON_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "interval_sec": 120, "enabled": false }'

# Delete
curl -s -X DELETE https://api.secumon.secuaas.ovh/api/v2/checks/1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d \
  -H "Authorization: Bearer $SECUMON_TOKEN"

Run on demand

POST /api/v2/checks/:id/run forces an immediate run without waiting for the next cycle.

curl -s -X POST https://api.secumon.secuaas.ovh/api/v2/checks/1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d/run \
  -H "Authorization: Bearer $SECUMON_TOKEN"
{ "queued": true, "check_id": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d", "run_id": "c0ffee00-1234-4abc-9def-0123456789ab" }

Read the latest result

GET /api/v2/checks/:id/last-result — see Getting started.

Aggregated history

GET /api/v2/metrics/checks?check_id=<uuid>&from=&to=&granularity= returns the aggregated results of a check over a period.

curl -s "https://api.secumon.secuaas.ovh/api/v2/metrics/checks?check_id=1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d&from=2026-06-23T00:00:00Z&to=2026-06-23T12:00:00Z&granularity=5min" \
  -H "Authorization: Bearer $SECUMON_TOKEN"
{
  "check_id": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
  "from": "2026-06-23T00:00:00Z",
  "to": "2026-06-23T12:00:00Z",
  "granularity": "5min",
  "count": 144,
  "results": [ /* aggregated points (average latency, failure rate...) */ ]
}

granularity accepts raw, 1min, 5min, 1h, 1d (resolved automatically if omitted). Dates are in RFC3339 format.

Use cases

  • API monitoring: an http check with expected_status: 200 and expected_body targeting a health marker.
  • Anticipating a certificate's expiry: a cert check with warn_days: 30 to be alerted a month ahead.
  • Detecting defacement: a content check in diff or keyword mode to spot an unexpected change to a critical page.
  • Validating a DNS migration: a dns check with expected_value and check_propagation: true.

Tips

  • Tune interval_sec to the real need: 30 s for a critical service, 300 s for a low-sensitivity target — this limits load and noise.
  • Use retries to avoid false positives on targets with variable latency.
  • Disable (enabled: false) rather than delete a check you intend to re-enable: the history is preserved.

On this page