A simple uptime tracker with Discord notifications written in go
Find a file
2026-02-26 07:27:40 +00:00
.gitignore fix: update .gitignore (#1) 2026-02-26 07:27:40 +00:00
config.json.example fix: update .gitignore (#1) 2026-02-26 07:27:40 +00:00
go.mod First commit 2026-02-25 21:45:21 +02:00
main.go First commit 2026-02-25 21:45:21 +02:00
README.md fix: update .gitignore (#1) 2026-02-26 07:27:40 +00:00
uptimetracker.service First commit 2026-02-25 21:45:21 +02:00

uptimetracker

A lightweight HTTP uptime monitor written in Go. Checks a list of URLs at a configurable interval, logs results, and sends Discord alerts on state changes.

Features

  • Checks multiple targets concurrently
  • Alerts on DOWN and recovery via Discord webhook (fires once per state change, no spam)
  • Logs to file and stdout simultaneously

Configuration

Copy config.json.example as config.json and edit it:

{
  "interval_seconds": 30,
  "discord_webhook": "https://discord.com/api/webhooks/...",
  "log_file": "uptimetracker.log",
  "targets": [
    { "name": "My Site", "url": "https://example.com" }
  ]
}
Field Required Description
targets yes List of sites to monitor
interval_seconds no Check frequency, defaults to 60
discord_webhook no Discord webhook URL for alerts
log_file no Log file path, defaults to uptimetracker.log

Usage

go build -o uptimetracker .
./uptimetracker             # uses config.json in current directory
./uptimetracker /path/to/config.json

Output:

2026-02-25 18:00:00  started monitoring 1 target(s) every 30s
2026-02-25 18:00:00  My Site  UP    200  45ms
2026-02-25 18:00:30  My Site  DOWN  503  120ms
2026-02-25 18:00:30  alert sent: My Site is DOWN

Deploy with systemd

Build a Linux binary:

GOOS=linux GOARCH=amd64 go build -o uptimetracker .

Copy to your server:

scp uptimetracker config.json uptimetracker.service user@your-vps:~/uptimetracker/

Install and start the service:

# Update User= and paths in the service file to match your username
sudo cp ~/uptimetracker/uptimetracker.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now uptimetracker

View logs:

sudo journalctl -fu uptimetracker