Skip to main content

Probes

Probes run checks and report results back to the Wacht server. For meaningful distributed monitoring, run at least three probes.

Static Probes

Static probes are configured in server.yaml:

probes:
- id: probe-1
secret: replace-with-a-strong-secret-1
- id: probe-2
secret: replace-with-a-strong-secret-2
- id: probe-3
secret: replace-with-a-strong-secret-3

Each probe process needs a matching config:

secret: replace-with-a-strong-secret-1
server: http://server:8080
probe_id: probe-1
heartbeat_interval: 30s

Static provisioning is useful for Docker Compose and simple self-host setups.

Dashboard-Created Probes

Admins can create probe credentials from the dashboard.

The server returns the raw secret once. After that, only a hash is stored, so copy the generated config before leaving the page.

Example generated config:

server: https://wacht.example.com
probe_id: probe-api-1
secret: generated-secret
heartbeat_interval: 30s

Use the public web origin as server when the web container or reverse proxy forwards /api to the Wacht server.

Running A Probe Elsewhere

A remote probe only needs network access to the Wacht server URL and its own config file. Use the same image tag as the server.

docker run --rm \
-v "$PWD/config/probe-remote.yaml:/etc/wacht/probe.yaml:ro" \
ghcr.io/tmater/wacht-probe:0.1 --config=/etc/wacht/probe.yaml

For production, run probes with a process manager or container restart policy.

Private Target Policy

The server and each probe have independent allow_private_targets settings.

  • The server validates check definitions before saving them.
  • The probe validates destinations again before it dials.

Private monitoring only works when both sides allow private targets.

Current Limitations

  • Dashboard-created probe credentials cannot be revoked or rotated from the UI yet.
  • Static probe secrets can be rotated by changing server.yaml, changing the matching probe config, and restarting the affected services.
  • All active probes receive the active check set. Per-probe assignment rules are not supported yet.