Cover Image

Overvåke diskplass med UptimeKuma

 Fri 2024-11-08    

UptimeKuma kan overvåke ledig diskplass via et bash-script og Push overvåkningsmetoden.

Logg inn i UptimeKuma og legg til en monitor. Gi den et passende navn og sett type til "Push". Kopier push-URLen, vi trenger denne senere. Sett heartbeat interval til 600 sekunder (10 minutter) eller hva du ønsker/trenger.

Opprett et bash-script på serveren med følgende innhold:

#!/bin/bash

disk="<drive_path>" # fyll inn disken du overvåker, f.eks. /dev/vdb1 eller /var

percentage=$(df -h --total ${disk} | tail -1 | awk '{printf "%s", $5}')

threshold="80"  # 80% seems reasonable, but YMMV

number=${percentage%\%*}

message="Used space on ${disk} is ${number}%"

push_url="<pushurl>"

if [ $number -lt $threshold ]; then
    service_status="up"
else
    service_status="down"
fi

curl \
    --get \
    --data-urlencode "status=${service_status}" \
    --data-urlencode "msg=${message}" \
    --data-urlencode "ping=${number}" \
    --silent \
    ${push_url} \
    > /dev/null

Endre disken som skal overvåkes, varslingsnivå (threshold) og push-URLen.

VIKTIG: Når du skriver/limer inn URLen er det viktig at all tekst etter spørsmålstegnet fjernes for å unngå problemer. Push-URLen skal se slik ut: "https://uptime-kuma.example.com/api/push/b5FXiItsw0?"

Når scriptet er lagret, gjør det kjørbart og legg scriptet til i crontab for å kjøre det regelmessig. 5 minutter er et bra utgangspunkt, men igjen, sett det til hva du selv ønsker og trenger. Bare pass på at scriptet kjører innenfor tidsintervallet du spesifiserte for heartbeat interval i UK-monitoren.

# chmod +x /path/to/script.sh

# crontab -e

*/5 * * * * /path/to/script.sh

Når dette er satt opp skal du begynne å få varslinger for monitoren, der meldingen indikerer hvor mye diskplass som er brukt, og "Ping" vil være lik mengden brukt disk på den overvåkede disken.

For testing, sett UK-heartbeat til 20 sekunder og kjør scriptet manuelt for å sende data. Endre på ting som ikke er som de skal. Når ferdig, sett heartbeat til korrekt verdi og vent på timeout. Husk på at alt dette tar for gitt at det allerede er satt opp en varslingsmetode (webhook, ntfy, Telegram bot, etc).