The exhub-health-check module provides URL monitoring with scheduled health checks and webhook notifications.
The health check feature is built into the Exhub application. No additional Emacs configuration is required.
Configure health checks in config/config.exs:
config :exhub, Exhub.HealthCheck,
targets: [
[name: "Example API", url: "https://api.example.com/health"],
[name: "Main Site", url: "https://example.com", expected_status: 200, timeout: 30_000]
],
webhook_url: "https://open.feishu.cn/open-apis/bot/v2/hook/your-webhook-token",
webhook_provider: :feishu, # or :default for generic webhooks
jobs: [
{"*/5 * * * *", {Exhub.HealthCheck, :run_health_checks, []}}
]targets: List of targets to monitor, each with:name: Display name for the targeturl: URL to checkexpected_status: Expected HTTP status code (default: 200)timeout: Request timeout in milliseconds (default: 30_000)method: HTTP method (:getor:head, default::get)
webhook_url: URL to send notifications on failureswebhook_provider::feishufor Feishu/Lark or:defaultfor generic JSON webhooksjobs: Quantum scheduler jobs (cron syntax)
For Feishu bot webhooks, use webhook_provider: :feishu. The message format follows Feishu's text message specification.
For generic webhooks, use webhook_provider: :default. The payload includes:
{
"event": "health_check_failure",
"timestamp": "2026-02-10T10:00:00Z",
"failures": [
{"name": "Example API", "url": "https://api.example.com/health", "reason": "timeout"}
]
}