This commit is contained in:
Jeffrey Serio 2026-01-01 18:37:03 +01:00
parent 1374551a76
commit 9e5a78a331
5 changed files with 108 additions and 0 deletions

1
.gitignore vendored
View file

@ -1 +1,2 @@
config/atuin/atuin.db*
rrdtool/*.rrd

35
rrdtool/cpu_load.sh Executable file
View file

@ -0,0 +1,35 @@
#!/usr/bin/env sh
USER=$(head -n 1 "${HOME}/.env")
AUTHPASS=$(tail -n 1 "${HOME}/.env")
RRDFILES="${HOME}/rrdtool"
IMAGES="${HOME}/rrdimages"
WATERMARK="moonshadow.dev"
RRDTOOL="/usr/local/bin/rrdtool"
UPTIME=$(cat /tmp/uptime.txt)
NOW=$(date "+%Y-%m-%d %H:%M:%S %Z" | sed 's/:/\\:/g')
if ! test -f "${RRDFILES}/cpu.rrd"; then
echo "Creating ${RRDFILES}/cpu.rrd"
${RRDTOOL} create "${RRDFILES}"/cpu.rrd --step 300 DS:ds0:GAUGE:600:U:U RRA:MAX:0.5:1:20000
fi
CPU_LOAD=$(snmp walk -l authPriv -u "$USER" -A "$AUTHPASS" -X "$AUTHPASS" -a SHA-256 localhost hrProcessorLoad.1 | awk '{print $4}')
${RRDTOOL} update "${RRDFILES}"/cpu.rrd N:"${CPU_LOAD}"
${RRDTOOL} graph "${IMAGES}"/cpu.png \
--start -43200 \
--title "moonshadow.dev - CPU" \
--vertical-label "% CPU Used" \
--watermark "${WATERMARK}" \
DEF:CPU="${RRDFILES}"/cpu.rrd:ds0:AVERAGE \
AREA:CPU#FFCC00 \
LINE2:CPU#CC0033:"CPU" \
GPRINT:CPU:MAX:"Max\:%2.2lf %s" \
GPRINT:CPU:AVERAGE:"Average\:%2.2lf %s" \
GPRINT:CPU:LAST:" Current\:%2.2lf %s\n" \
COMMENT:"\\n" \
COMMENT:" SUM CPU Load / Active Cores = % CPU Used\n" \
COMMENT:" Up for ${UPTIME} at ${NOW}"

53
rrdtool/interface.sh Executable file
View file

@ -0,0 +1,53 @@
#!/usr/bin/env sh
USER=$(head -n 1 "${HOME}/.env")
AUTHPASS=$(tail -n 1 "${HOME}/.env")
INTERFACE="1"
RRDFILES="${HOME}/rrdtool"
IMAGES="${HOME}/rrdimages"
WATERMARK="moonshadow.dev"
RRDTOOL="/usr/local/bin/rrdtool"
UPTIME=$(cat /tmp/uptime.txt)
NOW=$(date "+%Y-%m-%d %H:%M:%S %Z" | sed 's/:/\\:/g')
if ! test -f "${RRDFILES}/${INTERFACE}.rrd"; then
echo "Creating ${RRDFILES}/${INTERFACE}.rrd"
${RRDTOOL} create "${RRDFILES}/${INTERFACE}.rrd" \
--step 300 \
DS:ds0:COUNTER:600:0:1250000000 \
DS:ds1:COUNTER:600:0:1250000000 \
RRA:AVERAGE:0.5:1:600 \
RRA:AVERAGE:0.5:6:700 \
RRA:AVERAGE:0.5:24:775 \
RRA:AVERAGE:0.5:288:797 \
RRA:MAX:0.5:1:600 \
RRA:MAX:0.5:6:700 \
RRA:MAX:0.5:24:775 \
RRA:MAX:0.5:288:797
fi
IN=$(snmp get -l authPriv -u "$USER" -A "$AUTHPASS" -X "$AUTHPASS" -a SHA-256 localhost ifInOctets.${INTERFACE} | awk '{print $4}')
OUT=$(snmp get -l authPriv -u "$USER" -A "$AUTHPASS" -X "$AUTHPASS" -a SHA-256 localhost ifOutOctets.${INTERFACE} | awk '{print $4}')
DESCR=$(snmp get -l authPriv -u "$USER" -A "$AUTHPASS" -X "$AUTHPASS" -a SHA-256 localhost ifDescr.${INTERFACE} | awk '{print $4}')
${RRDTOOL} update "${RRDFILES}/${INTERFACE}.rrd" N:"${IN}":"${OUT}"
${RRDTOOL} graph "${IMAGES}/${INTERFACE}.png" \
--start -43200 \
--title "moonshadow.dev - ${DESCR}" \
--vertical-label "Bits per Second" \
--watermark "${WATERMARK}" \
DEF:IN="${RRDFILES}/${INTERFACE}.rrd":ds0:AVERAGE \
DEF:OUT="${RRDFILES}/${INTERFACE}.rrd":ds1:AVERAGE \
CDEF:IN_CDEF="IN,8,*" \
CDEF:OUT_CDEF="OUT,8,*" \
AREA:IN_CDEF#00FF00:"In " \
GPRINT:IN_CDEF:MAX:"Max\:%5.2lf %s" \
GPRINT:IN_CDEF:AVERAGE:"Average\:%5.2lf %s" \
GPRINT:IN_CDEF:LAST:" Current\:%5.2lf %s\n" \
LINE2:OUT_CDEF#0000FF:"Out" \
GPRINT:OUT_CDEF:MAX:"Max\:%5.2lf %s" \
GPRINT:OUT_CDEF:AVERAGE:"Average\:%5.2lf %s" \
GPRINT:OUT_CDEF:LAST:" Current\:%5.2lf %s\n" \
COMMENT:"\\n" \
COMMENT:" Up for ${UPTIME} at ${NOW}"

12
rrdtool/uptime.sh Executable file
View file

@ -0,0 +1,12 @@
#!/usr/bin/env sh
USER=$(head -n 1 "${HOME}/.env")
AUTHPASS=$(tail -n 1 "${HOME}/.env")
UPTIMEINFO="/tmp/uptime.txt"
TICKS=$(snmp get -l authPriv -u "$USER" -A "$AUTHPASS" -X "$AUTHPASS" -a SHA-256 localhost hrSystemUptime.0 | cut -d"(" -f2 | cut -d")" -f1)
DAYS=$(echo "${TICKS}/8640000" | bc -l)
HOURS=$(echo "0.${DAYS##*.} * 24" | bc -l)
MINUTES=$(echo "0.${HOURS##*.} * 60" | bc -l)
SECS=$(echo "0.${MINUTES##*.} * 60" | bc -l)
test -n "$DAYS" && printf '%s days, ' "${DAYS%.*}" > ${UPTIMEINFO}
printf '%02d\\:%02d\\:%02d\n' "${HOURS%.*}" "${MINUTES%.*}" "${SECS%.*}" >> ${UPTIMEINFO}

7
rrdtool/wrapper.sh Executable file
View file

@ -0,0 +1,7 @@
#!/usr/bin/env sh
SCRIPTS="${HOME}/rrdtool"
"${SCRIPTS}"/uptime.sh
"${SCRIPTS}"/cpu_load.sh
"${SCRIPTS}"/interface.sh