Files

21 lines
1.2 KiB
Bash
Executable File

#!/bin/bash
# 운영 서버(EC2) /home/ubuntu/temp/apache-peak.sh 사본 — 평일 12:50 cron 등록
# 10초 간격 780회 = 130분 (12:50~15:00). vmstat 모니터링과 같은 시각에 실행.
LOG="/home/ubuntu/temp/apache_$(date +%Y%m%d-%H%M).log"
echo "time busy idle K W R total_accesses db_conn db_max db_total" > "$LOG"
for i in $(seq 1 780); do
s=$(curl -s http://localhost/server-status?auto)
sb=$(echo "$s" | awk -F': ' '/^Scoreboard/{print $2}')
db=$(sudo -n /usr/bin/mariadb -N -B -e "SHOW GLOBAL STATUS WHERE Variable_name IN ('Connections','Max_used_connections','Threads_connected')" 2>/dev/null \
| awk '{v[$1]=$2} END{printf "%s %s %s", (v["Threads_connected"]?v["Threads_connected"]:"NA"), (v["Max_used_connections"]?v["Max_used_connections"]:"NA"), (v["Connections"]?v["Connections"]:"NA")}')
echo "$(date +%H:%M:%S) \
$(echo "$s" | awk -F': ' '/^BusyWorkers/{print $2}') \
$(echo "$s" | awk -F': ' '/^IdleWorkers/{print $2}') \
$(echo "$sb" | tr -cd 'K' | wc -c) \
$(echo "$sb" | tr -cd 'W' | wc -c) \
$(echo "$sb" | tr -cd 'R' | wc -c) \
$(echo "$s" | awk -F': ' '/^Total Accesses/{print $2}') \
${db:-NA NA NA}" >> "$LOG"
sleep $(( 10 - $(date +%s) % 10 ))
done