diff options
| author | doc <doc@filenotfound.org> | 2025-10-01 20:35:47 +0000 |
|---|---|---|
| committer | doc <doc@filenotfound.org> | 2025-10-01 20:35:47 +0000 |
| commit | 772152a5810aa8c4e03cf167381aadc4ec00499f (patch) | |
| tree | ba9418142f88622da878d9a3483c5da2da3e5c83 /alma-weekly.sh | |
| parent | 13eb2d51c7284472efabc278bf9b7ec0b8575e47 (diff) | |
Diffstat (limited to 'alma-weekly.sh')
| -rwxr-xr-x | alma-weekly.sh | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/alma-weekly.sh b/alma-weekly.sh new file mode 100755 index 0000000..a875d13 --- /dev/null +++ b/alma-weekly.sh @@ -0,0 +1,40 @@ +#!/bin/bash +# alma-weekly.sh +# Summarize AlmaLinux client demographics across the past 7 days + +LOGDIR="/var/log/mirrors" +OUTFILE="$LOGDIR/alma-weekly-$(date +%F).log" + +echo "=== AlmaLinux Weekly Summary ($(date)) ===" > "$OUTFILE" + +# Gather the last 7 daily logs +FILES=$(ls -1t $LOGDIR/alma-summary-*.log 2>/dev/null | head -n 7) + +if [ -z "$FILES" ]; then + echo "No alma-summary logs found in $LOGDIR" >> "$OUTFILE" + exit 1 +fi + +# Roll up requests + unique clients per release +awk ' +/requests/ { + reqs[$2]+=$1 + clients[$2]+=$4 +} +END { + for (r in reqs) { + printf "%-6s %10d requests %6d unique clients (7-day total)\n", r, reqs[r], clients[r] + } +}' $FILES | sort -k2 -nr >> "$OUTFILE" + +echo "" >> "$OUTFILE" +echo "=== Top 10 Clients by Requests (7-day total) ===" >> "$OUTFILE" + +# Top talkers (IP + release) across all 7 days +awk ' +$2 ~ /^[0-9]/ { + count[$2" "$3]+=$1 +} +END { + for (k in count) print count[k], k +}' $FILES | sort -nr | head -n 10 >> "$OUTFILE" |
