Skip to Content
πŸŽ‰ EZMON v0.1.3 is released. Visit ezmon.web.id β†’
Features

Features

Heartbeat Monitoring

The agent pushes a heartbeat to the hub every 30 seconds (configurable). The hub records the last heartbeat time and calculates an offline_deadline_at.

ParameterDefaultDescription
heartbeat_interval_sec30How often the agent pushes
grace_multiplier3Tolerance multiplier
Effective grace period90s30s Γ— 3 = 90 seconds before marked offline

Offline Detection

EZMON uses a deadline-based approach β€” far more accurate than simple polling:

offline_deadline_at = last_seen_at + (heartbeat_interval_sec Γ— grace_multiplier)

The Cloudflare Worker Cron checks every minute for agents past their deadline. A single global evaluator handles all agents β€” not one scheduler per agent.

Host Metrics

MetricLibraryData Collected
CPUcpu.Percent()Total usage %
Memorymem.VirtualMemory()Used, total, %
Diskdisk.Usage("/")Used, total, % (root partition)
Loadload.Avg()1m, 5m, 15m averages
Networknet.IOCounters()Bytes sent/received
Dockerdocker ps -qRunning container count

Metrics are stored as:

  • Latest snapshot (agent_state) β€” for real-time display
  • 5-minute buckets (metric_buckets) β€” for historical charts, retained 7 days

Incidents

Every time an agent transitions from online to offline, EZMON automatically creates an incident. It resolves when the agent recovers.

Only one open incident per agent is allowed at a time. No spam incidents even if the evaluator runs multiple times while an agent is offline.

Cloud Monitors

Monitor external endpoints without running an agent:

TypeHow It WorksUse Case
HTTPHEAD request, verify status codeCheck if a website/API is up
TLSHEAD + crt.sh TLS expiry lookupMonitor SSL certificate expiry
KeywordGET request, search body for keywordVerify page content
  • Maximum 20 monitors per project
  • Checks run in parallel on Cloudflare Workers
  • Results retained for 30 days

Notification Channels

Notifications are sent only on state transitions (online β†’ offline or offline β†’ online):

ChannelConfigurationNotes
TelegramBot token + Chat IDVia Telegram Bot API
DiscordWebhook URLEmbed messages
WebhookCustom URLPOST JSON payload

Each channel supports targetType: agent, monitor, or all to isolate alerts by source.

Public Status Page

Each project can enable a public status page accessible without login:

  • Real-time status of selected agents
  • Active incidents
  • Uptime summary

URL format: https://your-hub.vercel.app/status/YOUR_PROJECT_SLUG

Last updated on