๋ชฉ์ฐจ
- ๋ก๊ทธ ํ์ผ์ด ์ ์ค์ํ๊ฐ?
- ๋ก๊ทธ ํ์ผ์ด๋ ๋ฌด์์ธ๊ฐ?
- ๋ฆฌ๋ ์ค ์ฃผ์ ๋ก๊ทธ ํ์ผ ์์น
- Nginx ๋ก๊ทธ ์ฝ๋ ๋ฒ
- ๋ก๊ทธ์์ ์๋ฌ ์์ธ ์ฐพ๋ ๋ฐฉ๋ฒ
- ๋ก๊ทธ๊ฐ ๋๋ฌด ๋ง์ด ์์ผ ๋ – ๋ก๊ทธ ๊ด๋ฆฌ
- ์ ๋ฆฌ
1. ๋ก๊ทธ ํ์ผ์ด ์ ์ค์ํ๊ฐ?
์๋ฒ๋ฅผ ์ด์ํ๋ค ๋ณด๋ฉด ๋ฐ๋์ ์ด๋ฐ ์๊ฐ์ด ์ฐพ์์ต๋๋ค. ์ด์ ๊น์ง ์ ๋๋ ์ฌ์ดํธ๊ฐ ๊ฐ์๊ธฐ ์ค๋ฅ ํ์ด์ง๋ฅผ ๋ณด์ฌ์ฃผ๊ฑฐ๋, ํน์ ๊ธฐ๋ฅ์ด ์๋ํ์ง ์๊ฑฐ๋, ์๋ฒ๊ฐ ์์์น ๋ชปํ๊ฒ ์ฌ์์๋๋ ์ํฉ์ ๋๋ค.
์ด๋ฐ ์ํฉ์์ ์์ธ์ ์ฐพ์ผ๋ ค๋ฉด ๊ฐ์ฅ ๋จผ์ ๋ก๊ทธ ํ์ผ์ ํ์ธํด์ผ ํฉ๋๋ค. ๋ก๊ทธ๋ ์๋ฒ๊ฐ ๋ฌด์์ ํ๋์ง ๊ธฐ๋กํ ์ผ์ง์ ๋๋ค. ๋ง์น ๋ธ๋๋ฐ์ค์ฒ๋ผ, ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ธฐ ์ ๊ณผ ํ์ ์ด๋ค ์ผ์ด ์์๋์ง ํ์ธํ ์ ์์ต๋๋ค.
2. ๋ก๊ทธ ํ์ผ์ด๋ ๋ฌด์์ธ๊ฐ?
**๋ก๊ทธ(Log)**๋ ์์คํ ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์คํ๋๋ฉด์ ๋ฐ์ํ๋ ์ด๋ฒคํธ๋ฅผ ์๊ฐ ์์๋๋ก ๊ธฐ๋กํ ํ์ผ์ ๋๋ค. ์๋ฒ ๋ก๊ทธ์๋ ๋ค์๊ณผ ๊ฐ์ ์ ๋ณด๊ฐ ๋ด๊น๋๋ค.
- ๋๊ฐ, ์ธ์ , ์ด๋ค ํ์ด์ง์ ์ ์ํ๋์ง
- ์ด๋ค ์ค๋ฅ๊ฐ ๋ฐ์ํ๋์ง
- ์๋น์ค๊ฐ ์ธ์ ์์๋๊ณ ์ข ๋ฃ๋๋์ง
- ์ฌ์ฉ์ ๋ก๊ทธ์ธ ์๋ ๊ธฐ๋ก
๋ก๊ทธ๋ ๋ฌธ์ ํด๊ฒฐ๋ฟ ์๋๋ผ ๋ณด์ ๊ฐ์ฌ, ์๋น์ค ๋ถ์, ์ฑ๋ฅ ์ต์ ํ ๋ฑ ๋ค์ํ ๋ชฉ์ ์ผ๋ก ํ์ฉ๋ฉ๋๋ค.
3. ๋ฆฌ๋ ์ค ์ฃผ์ ๋ก๊ทธ ํ์ผ ์์น
๋ฆฌ๋ ์ค์์ ๋ก๊ทธ ํ์ผ์ ์ฃผ๋ก /var/log ๋๋ ํ ๋ฆฌ ์๋์ ์ ์ฅ๋ฉ๋๋ค. ์ฃผ์ ๋ก๊ทธ ํ์ผ์ ์ ๋ฆฌํ๋ฉด ์๋์ ๊ฐ์ต๋๋ค.
| /var/log/syslog | ์์คํ ์ ์ฒด ๋ก๊ทธ |
| /var/log/auth.log | ๋ก๊ทธ์ธ, SSH ์ ์ ์๋ ๊ธฐ๋ก |
| /var/log/kern.log | ์ปค๋ ๊ด๋ จ ๋ก๊ทธ |
| /var/log/dpkg.log | ํจํค์ง ์ค์น/์ ๊ฑฐ ๊ธฐ๋ก |
| /var/log/nginx/access.log | Nginx ์ ์ ๋ก๊ทธ |
| /var/log/nginx/error.log | Nginx ์ค๋ฅ ๋ก๊ทธ |
| /var/log/mysql/error.log | MySQL ์ค๋ฅ ๋ก๊ทธ |
์๋ฒ์์ ๋ฌธ์ ๊ฐ ์๊ฒผ์ ๋ ๊ฐ์ฅ ๋จผ์ ํ์ธํ๋ ํ์ผ์ ํด๋น ์๋น์ค์ error.log์ ๋๋ค.
4. Nginx ๋ก๊ทธ ์ฝ๋ ๋ฒ
Nginx๋ ๋ ๊ฐ์ง ๋ก๊ทธ ํ์ผ์ ์์ฑํฉ๋๋ค.
access.log (์ ์ ๋ก๊ทธ) ์๋ฒ์ ๋ค์ด์จ ๋ชจ๋ HTTP ์์ฒญ์ด ๊ธฐ๋ก๋ฉ๋๋ค. ํ ์ค์ ์์๋ฅผ ์ค๋ช ๋๋ฆฌ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
123.45.67.89 - - [25/May/2026:14:30:00 +0900] "GET /index.html HTTP/1.1" 200 1234
๊ฐ ํญ๋ชฉ์ ์๋ฏธ์ ๋๋ค.
- 123.45.67.89 → ์ ์ํ ์ฌ์ฉ์์ IP ์ฃผ์
- [25/May/2026:14:30:00 +0900] → ์ ์ ์๊ฐ
- GET /index.html → ์์ฒญ ๋ฐฉ์๊ณผ ์์ฒญํ ํ์ด์ง
- 200 → HTTP ์๋ต ์ฝ๋ (200์ ์ ์)
- 1234 → ์ ์ก๋ ๋ฐ์ดํฐ ํฌ๊ธฐ(๋ฐ์ดํธ)
error.log (์ค๋ฅ ๋ก๊ทธ) ์๋ฒ์์ ๋ฐ์ํ ์ค๋ฅ๊ฐ ๊ธฐ๋ก๋ฉ๋๋ค. ๋ฌธ์ ํด๊ฒฐ ์ ๊ฐ์ฅ ๋จผ์ ํ์ธํด์ผ ํ ํ์ผ์ ๋๋ค. ์ค๋ฅ ๋ก๊ทธ์ ์ฌ๊ฐ๋๋ debug, info, notice, warn, error, crit, alert, emerg ์์ผ๋ก ๋์์ง๋๋ค.
5. ๋ก๊ทธ์์ ์๋ฌ ์์ธ ์ฐพ๋ ๋ฐฉ๋ฒ
๋ก๊ทธ ํ์ผ์ ์์ด ๋ง์์ ์ฒ์์ ์ด๋์๋ถํฐ ๋ด์ผ ํ ์ง ๋ง๋งํฉ๋๋ค. ์๋ ๋ฐฉ๋ฒ์ ์์๋๋ก ํ์ฉํ๋ฉด ํจ์จ์ ์ผ๋ก ์์ธ์ ์ฐพ์ ์ ์์ต๋๋ค.
๋ฐฉ๋ฒ 1. ์ต๊ทผ ๋ก๊ทธ๋ง ํ์ธํ๊ธฐ ๋ฌธ์ ๊ฐ ๋ฐฉ๊ธ ๋ฐ์ํ๋ค๋ฉด ๋ก๊ทธ ํ์ผ์ ๋ง์ง๋ง ๋ถ๋ถ๋ง ๋ณด๋ฉด ๋ฉ๋๋ค. tail ๋ช ๋ น์ด๋ก ์ต๊ทผ 50์ค์ ํ์ธํฉ๋๋ค.
tail -n 50 /var/log/nginx/error.log
๋ฐฉ๋ฒ 2. ์ค์๊ฐ ๋ก๊ทธ ๋ชจ๋ํฐ๋ง ์๋น์ค๋ฅผ ์ฌ์์ํ๊ฑฐ๋ ํน์ ๋์์ ์ํํ๋ฉด์ ์ด๋ค ๋ก๊ทธ๊ฐ ์ฐํ๋์ง ์ค์๊ฐ์ผ๋ก ํ์ธํฉ๋๋ค.
tail -f /var/log/nginx/error.log
๋ฐฉ๋ฒ 3. ํค์๋๋ก ๊ฒ์ํ๊ธฐ error, fail, denied, refused ๊ฐ์ ํค์๋๋ก ์ค๋ฅ๊ฐ ์๋ ์ค๋ง ํํฐ๋งํฉ๋๋ค.
grep "error" /var/log/nginx/error.log
๋ฐฉ๋ฒ 4. ํน์ ๋ ์ง ๊ธฐ์ค์ผ๋ก ํํฐ๋งํ๊ธฐ ๋ ์ง๋ฅผ ํจ๊ป ๊ฒ์ํด ํน์ ์์ ์ ๋ก๊ทธ๋ง ํ์ธํฉ๋๋ค.
grep "25/May/2026" /var/log/nginx/access.log
6. ๋ก๊ทธ๊ฐ ๋๋ฌด ๋ง์ด ์์ผ ๋ – ๋ก๊ทธ ๊ด๋ฆฌ
์๋ฒ๋ฅผ ์ค๋ ์ด์ํ๋ฉด ๋ก๊ทธ ํ์ผ์ด ์์ฌ ๋์คํฌ ์ฉ๋์ ๊ฐ๋ ์ฑ์ฐ๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ๋ฆฌ๋ ์ค์๋ logrotate๋ผ๋ ๋๊ตฌ๊ฐ ๊ธฐ๋ณธ์ผ๋ก ์ค์น๋์ด ์์ด, ๋ก๊ทธ ํ์ผ์ ์ฃผ๊ธฐ์ ์ผ๋ก ์์ถํ๊ณ ์ค๋๋ ํ์ผ์ ์๋ ์ญ์ ํด ์ค๋๋ค.
logrotate ์ค์ ํ์ผ์ /etc/logrotate.conf์ /etc/logrotate.d/ ํด๋์ ์์ต๋๋ค. ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ ์ค์ ์ผ๋ก๋ ์ ๋์ํ์ง๋ง, ๋ก๊ทธ๊ฐ ๋๋ฌด ๋น ๋ฅด๊ฒ ์์ธ๋ค๋ฉด ์ค์ ์ ์กฐ์ ํ ์ ์์ต๋๋ค.
ํ์ฌ ๋ก๊ทธ ํ์ผ๋ค์ ์ฉ๋์ ํ ๋ฒ์ ํ์ธํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
du -sh /var/log/*
ํน์ ํ์ผ์ด ์ง๋์น๊ฒ ํฌ๋ค๋ฉด ํด๋น ์๋น์ค์ ๋ก๊ทธ ๋ ๋ฒจ์ ์กฐ์ ํ๊ฑฐ๋ logrotate ์ฃผ๊ธฐ๋ฅผ ์งง๊ฒ ์ค์ ํ๋ ๊ฒ์ ๊ณ ๋ คํฉ๋๋ค.
7. ์ ๋ฆฌ
์ค๋ ๋ฐฐ์ด ํต์ฌ์ ์ ๋ฆฌํฉ๋๋ค.
- ๋ก๊ทธ ํ์ผ์ ์๋ฒ์์ ๋ฐ์ํ ๋ชจ๋ ์ด๋ฒคํธ๋ฅผ ์๊ฐ ์์๋๋ก ๊ธฐ๋กํ ํ์ผ์ ๋๋ค.
- ๋ฆฌ๋ ์ค ๋ก๊ทธ๋ /var/log ๋๋ ํ ๋ฆฌ์ ์ ์ฅ๋ฉ๋๋ค.
- ๋ฌธ์ ๊ฐ ์๊ฒผ์ ๋๋ ํด๋น ์๋น์ค์ error.log๋ฅผ ๊ฐ์ฅ ๋จผ์ ํ์ธํฉ๋๋ค.
- tail -f ๋ก ์ค์๊ฐ ๋ชจ๋ํฐ๋ง, grep์ผ๋ก ํค์๋ ํํฐ๋ง์ ํ์ฉํ๋ฉด ์์ธ์ ๋น ๋ฅด๊ฒ ์ฐพ์ ์ ์์ต๋๋ค.
- ๋ก๊ทธ๊ฐ ์์ฌ ๋์คํฌ๋ฅผ ์ฑ์ฐ์ง ์๋๋ก logrotate๋ฅผ ํ์ฉํฉ๋๋ค.