← 블로그 목록
작성일: 2026-06-05 실시간tailmonitoring

실시간 로그 모니터링: tail -f와 grep을 활용한 현장 대응

서비스 장애나 공격이 발생할 때, 과거 로그 분석보다 실시간 모니터링이 더 중요합니다. tail, grep, awk를 조합하여 실시간으로 이상 징후를 포착하는 방법을 알아봅니다.


tail -f 기본

``bash tail -f /var/log/nginx/access.log `

새 라인이 추가될 때마다 실시간 출력

여러 파일 동시 모니터링

`bash tail -f /var/log/nginx/access.log /var/log/nginx/error.log `


실시간 필터링

특정 IP만 추적

`bash tail -f /var/log/nginx/access.log | grep '192.0.2.100' `

5xx 에러만 표시

`bash tail -f /var/log/nginx/access.log | grep ' 5[0-9][0-9] ' `

POST 요청만 추적

`bash tail -f /var/log/nginx/access.log | grep 'POST' `


awk로 실시간 변환

IP와 요청 경로만 출력

`bash tail -f /var/log/nginx/access.log | awk '{print $1, $7}' `

응답시간 1초 이상만 표시

`bash tail -f /var/log/nginx/access.log | awk '$NF > 1 {print}' `


실시간 통계

초당 요청 수(RPS)

`bash tail -f /var/log/nginx/access.log | awk '{count++; if(NR % 100 == 0) print count " requests in last few seconds"; count=0}' `

실시간 상태 코드 집계

`bash tail -f /var/log/nginx/access.log | awk '{codes[$9]++; for(c in codes) print c, codes[c]}' `


공격 패턴 실시간 탐지

SQLi 시도 알림

`bash tail -f /var/log/nginx/access.log | grep -iE '(union|select|insert|drop)' --color `

--color: 매칭 부분 하이라이트

브루트포스 탐지

`bash tail -f /var/log/nginx/access.log | grep -E '(wp-login|xmlrpc)' --line-buffered | awk '{print $1}' | sort | uniq -c | sort -rn `


stdbuf: 버퍼링 제거

기본적으로 파이프는 버퍼링되어 실시간성이 떨어집니다.

`bash tail -f /var/log/nginx/access.log | stdbuf -oL grep '192.0.2.100' `

stdbuf -oL: 라인 버퍼링으로 즉시 출력


multitail: 고급 모니터링 도구

여러 로그를 분할 화면으로:

`bash sudo apt install multitail multitail /var/log/nginx/access.log /var/log/nginx/error.log `


watch: 주기적 갱신

5초마다 에러 수 집계

`bash watch -n 5 "grep -c ' 5[0-9][0-9] ' /var/log/nginx/access.log" `

최근 10초간 요청 수

`bash watch -n 1 "tail -100 /var/log/nginx/access.log | wc -l" `


알림 자동화

5xx 에러 발생 시 Slack 알림

`bash 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 `

특정 IP 접속 시 메일 발송

`bash 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 `


GoAccess: 실시간 웹 대시보드

`bash sudo apt install goaccess `

실시간 HTML 대시보드

`bash goaccess /var/log/nginx/access.log -o /var/www/html/report.html --log-format=COMBINED --real-time-html `

브라우저에서 http://yourserver/report.html 접속 → 실시간 통계


tmux: 여러 모니터링 세션

`bash tmux new -s monitoring `

Ctrl+B, % : 세로 분할 Ctrl+B, " : 가로 분할

분할된 패널마다:

`bash

패널 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: systemd 로그 실시간

`bash journalctl -u nginx -f `

-f: tail -f와 동일


정리

실시간 로그 모니터링은 tail -f + grep + awk` 조합이 기본입니다. 공격 패턴을 실시간으로 필터링하고, stdbuf로 버퍼링을 제거하며, GoAccess로 웹 대시보드를 만들 수 있습니다. 중요한 이벤트는 Slack/메일로 자동 알림하세요.