서비스 장애나 공격이 발생할 때, 과거 로그 분석보다 실시간 모니터링이 더 중요합니다. tail, grep, awk를 조합하여 실시간으로 이상 징후를 포착하는 방법을 알아봅니다.
tail -f /var/log/nginx/access.log
새 라인이 추가될 때마다 실시간 출력
tail -f /var/log/nginx/access.log /var/log/nginx/error.log
tail -f /var/log/nginx/access.log | grep '192.0.2.100'
tail -f /var/log/nginx/access.log | grep ' 5[0-9][0-9] '
tail -f /var/log/nginx/access.log | grep 'POST'
tail -f /var/log/nginx/access.log | awk '{print $1, $7}'
tail -f /var/log/nginx/access.log | awk '$NF > 1 {print}'
tail -f /var/log/nginx/access.log | awk '{count++; if(NR % 100 == 0) print count " requests in last few seconds"; count=0}'
tail -f /var/log/nginx/access.log | awk '{codes[$9]++; for(c in codes) print c, codes[c]}'
tail -f /var/log/nginx/access.log | grep -iE '(union|select|insert|drop)' --color
--color: 매칭 부분 하이라이트
tail -f /var/log/nginx/access.log | grep -E '(wp-login|xmlrpc)' --line-buffered | awk '{print $1}' | sort | uniq -c | sort -rn
기본적으로 파이프는 버퍼링되어 실시간성이 떨어집니다.
tail -f /var/log/nginx/access.log | stdbuf -oL grep '192.0.2.100'
stdbuf -oL: 라인 버퍼링으로 즉시 출력
여러 로그를 분할 화면으로:
sudo apt install multitail
multitail /var/log/nginx/access.log /var/log/nginx/error.log
watch -n 5 "grep -c ' 5[0-9][0-9] ' /var/log/nginx/access.log"
watch -n 1 "tail -100 /var/log/nginx/access.log | wc -l"
tail -f /var/log/nginx/error.log | while read line; do
if echo "$line" | grep -q '\[error\]'; then
curl -X POST https://hooks.slack.com/services/YOUR/WEBHOOK/URL \
-d "{\"text\":\"Nginx Error: $line\"}"
fi
done
tail -f /var/log/nginx/access.log | grep '192.0.2.100' | while read line; do
echo "$line" | mail -s "Suspicious IP detected" [email protected]
done
sudo apt install goaccess
goaccess /var/log/nginx/access.log -o /var/www/html/report.html --log-format=COMBINED --real-time-html
브라우저에서 http://yourserver/report.html 접속 → 실시간 통계
tmux new -s monitoring
Ctrl+B, % : 세로 분할 Ctrl+B, " : 가로 분할
분할된 패널마다:
# 패널 1
tail -f /var/log/nginx/access.log
# 패널 2 tail -f /var/log/nginx/error.log | grep '\[error\]'
# 패널 3 watch -n 5 "netstat -an | grep :80 | wc -l"
journalctl -u nginx -f
-f: tail -f와 동일
실시간 로그 모니터링은 tail -f + grep + awk 조합이 기본입니다. 공격 패턴을 실시간으로 필터링하고, stdbuf로 버퍼링을 제거하며, GoAccess로 웹 대시보드를 만들 수 있습니다. 중요한 이벤트는 Slack/메일로 자동 알림하세요.