summaryrefslogtreecommitdiff
path: root/alma-weekly.sh
blob: a875d139e167fcfbfa2632cb784d0a213fadfd2d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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"