initial commit
This commit is contained in:
parent
c9c2131266
commit
1fb6893b11
26
README.md
26
README.md
@ -1,2 +1,24 @@
|
|||||||
# lab-monitor
|
# 🔍 Lab Monitor (Pushover + GitHub Actions)
|
||||||
External monitoring for my lab
|
|
||||||
|
This repository monitors external URLs (e.g. your homelab services) and sends alerts via [Pushover](https://pushover.net) if any of them go down.
|
||||||
|
|
||||||
|
## ✅ How It Works
|
||||||
|
|
||||||
|
- Every 5 minutes, GitHub Actions runs a workflow that:
|
||||||
|
- Checks a list of URLs (e.g. https://woodpecker.dvirlabs.com)
|
||||||
|
- If the status code is 502 or 404, sends an alert via Pushover
|
||||||
|
|
||||||
|
## 🔐 Setup
|
||||||
|
|
||||||
|
1. Create a free [Pushover](https://pushover.net) account.
|
||||||
|
2. Get your **User Key** and **App Token**.
|
||||||
|
3. Go to your repo → Settings → Secrets → Actions → Add these:
|
||||||
|
- `PUSHOVER_USER` = your user key
|
||||||
|
- `PUSHOVER_TOKEN` = your app token
|
||||||
|
|
||||||
|
## 🧪 Test
|
||||||
|
|
||||||
|
Temporarily change the URL to something invalid and watch for a Pushover alert.
|
||||||
|
|
||||||
|
---
|
||||||
|
Powered by GitHub Actions 🌀
|
||||||
|
|||||||
29
workflows/monitor.yml
Normal file
29
workflows/monitor.yml
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
name: Monitor Lab URLs
|
||||||
|
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: "*/5 * * * *" # Run every 5 minutes
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
monitor:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Check Woodpecker URL
|
||||||
|
run: |
|
||||||
|
STATUS=$(curl -s -o /dev/null -w "%{http_code}" https://woodpecker.dvirlabs.com)
|
||||||
|
|
||||||
|
if [[ "$STATUS" == "502" ]]; then
|
||||||
|
curl -s \
|
||||||
|
--form-string "token=${{ secrets.PUSHOVER_TOKEN }}" \
|
||||||
|
--form-string "user=${{ secrets.PUSHOVER_USER }}" \
|
||||||
|
--form-string "message=⚠️ Woodpecker is down (502)" \
|
||||||
|
https://api.pushover.net/1/messages.json
|
||||||
|
elif [[ "$STATUS" == "404" ]]; then
|
||||||
|
curl -s \
|
||||||
|
--form-string "token=${{ secrets.PUSHOVER_TOKEN }}" \
|
||||||
|
--form-string "user=${{ secrets.PUSHOVER_USER }}" \
|
||||||
|
--form-string "message=❌ Woodpecker not found (404)" \
|
||||||
|
https://api.pushover.net/1/messages.json
|
||||||
|
else
|
||||||
|
echo "✅ All good: $STATUS"
|
||||||
Loading…
x
Reference in New Issue
Block a user