IT๊ธฐ์ดˆ

์„œ๋ฒ„ ๋กœ๊ทธ ํŒŒ์ผ์ด๋ž€? – ์—๋Ÿฌ ๋‚ฌ์„ ๋•Œ ์›์ธ ์ฐพ๋Š” ๋ฒ•

๐Ÿฅ„ํ…Œํฌ ํ•œ ์Šคํ‘ผ 2026. 5. 25. 17:52

๋ชฉ์ฐจ

  1. ๋กœ๊ทธ ํŒŒ์ผ์ด ์™œ ์ค‘์š”ํ•œ๊ฐ€?
  2. ๋กœ๊ทธ ํŒŒ์ผ์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€?
  3. ๋ฆฌ๋ˆ…์Šค ์ฃผ์š” ๋กœ๊ทธ ํŒŒ์ผ ์œ„์น˜
  4. Nginx ๋กœ๊ทธ ์ฝ๋Š” ๋ฒ•
  5. ๋กœ๊ทธ์—์„œ ์—๋Ÿฌ ์›์ธ ์ฐพ๋Š” ๋ฐฉ๋ฒ•
  6. ๋กœ๊ทธ๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์ด ์Œ“์ผ ๋•Œ – ๋กœ๊ทธ ๊ด€๋ฆฌ
  7. ์ •๋ฆฌ

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๋ฅผ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค.