๐ŸŒ DevOps์˜ ํ•ต์‹ฌ, Linux ๋ฐฐ์šฐ๊ธฐ! - ์ž…๋ฌธ์ž, ์ดˆ/์ค‘๊ธ‰ ์—”์ง€๋‹ˆ์–ด์˜ ํ•„์ˆ˜ ์‹ค๋ฌด ์ •๋ณด

โ€œDevOps Engineer๊ฐ€ ๋˜๋ ค๋ฉด, ๋ฆฌ๋ˆ…์Šค์˜ ํ˜„์žฅ ์‹ค๋ฌด๋ฅผ ๋ฐฐ์›Œ๋ผโ€ - :globe_with_meridians: ๊ทธ๊ฒŒ ์ง„์งœ ๋ฌด์Šจ ๋œป์ผ๊นŒ?


:pushpin: ์ฃผ์š” ๋‚ด์šฉ

  • ์™œ ๋ฆฌ๋ˆ…์Šค๊ฐ€ DevOps ์›Œํฌํ”Œ๋กœ์šฐ์—์„œ ์ค‘์š”ํ•œ๊ฐ€?

  • ๋ฆฌ๋ˆ…์Šค๊ฐ€ ์ผ์ƒ ์—…๋ฌด์—์„œ ์–ด๋””์— ๋“ฑ์žฅํ•˜๋Š”๊ฐ€

  • ์‹ค์ œ ๋ฉด์ ‘ ์Šคํƒ€์ผ ์งˆ๋ฌธ๊ณผ ์‹œ๋‚˜๋ฆฌ์˜ค ์˜ˆ์‹œ

  • ์‹œ์ž‘ํ•˜๊ธฐ: ํ”„๋กœ์ ํŠธ ์•„์ด๋””์–ด์™€ ํ•™์Šต ๋ฆฌ์†Œ์Šค

  • Linux ์ปค๋งจ๋“œ ์น˜ํŠธ ์‹œํŠธ (์ฐธ๊ณ )

:backhand_index_pointing_right: ์™œ Linux ๊ธฐ์ˆ ์ด DevOps์—์„œ ์ค‘์š”ํ•œ๊ฐ€

๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ƒํ™ฉ์„ ๋– ์˜ฌ๋ ค๋ณด์„ธ์š”:

  • Kubernetes ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋ฐฐํฌํ•  ๋•Œ
  • Terraform์ด๋‚˜ Pulumi๋กœ ํด๋ผ์šฐ๋“œ ์ธํ”„๋ผ๋ฅผ ์ž๋™ํ™”ํ•  ๋•Œ
  • ์‹คํŒจํ•œ ๋นŒ๋“œ ํŒŒ์ดํ”„๋ผ์ธ์„ ๋””๋ฒ„๊น…ํ•  ๋•Œ

์ด ๋ชจ๋“  ๊ณผ์ •์€ ๋Œ€๋ถ€๋ถ„ ๋ฆฌ๋ˆ…์Šค ํ™˜๊ฒฝ์—์„œ, ํ„ฐ๋ฏธ๋„์„ ์—ด๊ณ  ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค. ์ปจํ…Œ์ด๋„ˆ, ํด๋ผ์šฐ๋“œ ์„œ๋ฒ„, CI/CD ๋Ÿฌ๋„ˆ, ๋ชจ๋‹ˆํ„ฐ๋ง ์—์ด์ „ํŠธ ๋“ฑ ์‹คํ–‰ ๊ณ„์ธต์„ ์ง€ํƒฑํ•˜๋Š” ๊ฒƒ์€ ๋ฆฌ๋ˆ…์Šค์ž…๋‹ˆ๋‹ค.

๋ฉด์ ‘์—์„œ ๋ฆฌ๋ˆ…์Šค๋ฅผ ๋ฌป๋Š” ์ด์œ ๋„ ๋ชจ๋“  ๋ช…๋ น์–ด์˜ ํ”Œ๋ž˜๊ทธ๋ฅผ ์™ธ์šฐ๊ณ  ์žˆ๋Š”์ง€๋ฅผ ๋ณด๋ ค๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ, ํ˜„์‹ค์ ์ธ ๋ฌธ์ œ๋ฅผ ์–ผ๋งˆ๋‚˜ ์ž์‹  ์žˆ๊ณ  ํšจ์œจ์ ์œผ๋กœ ๋””๋ฒ„๊น…ํ•  ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•จ์ž…๋‹ˆ๋‹ค.


:backhand_index_pointing_right: DevOps๋ฅผ ์œ„ํ•œ ๋ฆฌ๋ˆ…์Šค - ์‹ค์ œ ์‹œ๋‚˜๋ฆฌ์˜ค์™€ ์ ‘๊ทผ ๋ฐฉ๋ฒ•

1. ๋ฐฐํฌ๊ฐ€ ์‹คํŒจํ–ˆ๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋‹ค์‹œ ์˜ฌ๋ผ์˜ค์ง€ ์•Š๋Š”๋‹ค. ๋ฆฌ๋ˆ…์Šค ์„œ๋ฒ„์—์„œ ์–ด๋–ป๊ฒŒ ๋””๋ฒ„๊น…ํ•  ๊ฒƒ์ธ๊ฐ€?

  • ํ‰๊ฐ€ ํฌ์ธํŠธ: ์„œ๋น„์Šค, ๋กœ๊ทธ, ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ์ ๊ฒ€ํ•˜๋Š” ๋””๋ฒ„๊น… ์ ˆ์ฐจ

  • ์ ‘๊ทผ ๋ฐฉ๋ฒ•: ์ธ์Šคํ„ด์Šค์— SSH ์ ‘์†, ์„œ๋น„์Šค ์ƒํƒœ ํ™•์ธ:

systemctl status <service>
  • ์ตœ๊ทผ ๋กœ๊ทธ ํ™•์ธ:
journalctl -xe
  • ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค ํ™•์ธ:
ps aux | grep <app>
  • ๋””์Šคํฌ ์‚ฌ์šฉ๋Ÿ‰ ์ ๊ฒ€:
df -h
  • ํŒŒ์ผ ๊ถŒํ•œ ํ™•์ธ:
ls -lah <config-path>

ํŠนํžˆ ๊ถŒํ•œ ์„ค์ • ๋ฌธ์ œ(chmod, ์‹คํ–‰ ๊ถŒํ•œ ๋ˆ„๋ฝ ๋“ฑ) ๋•Œ๋ฌธ์— ์„œ๋น„์Šค๊ฐ€ ์กฐ์šฉํžˆ ์‹คํŒจํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.


2. CPU๋ฅผ 80% ์ด์ƒ ์ ์œ ํ•˜๋Š” ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฐพ์•„์„œ ์ข…๋ฃŒํ•˜๋ผ.

  • ํ‰๊ฐ€ ํฌ์ธํŠธ: ๋ฆฌ์†Œ์Šค๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋Šฅ๋ ฅ

  • ์ ‘๊ทผ ๋ฐฉ๋ฒ•: ์šฐ์„  top์œผ๋กœ ์‹œ๊ฐ์ ์œผ๋กœ ํ™•์ธ ๊ทธ๋ฆฌ๊ณ  ์ž๋™ํ™”:

ps aux | awk '$3 > 80 {print $2}' | xargs kill -9
  • $3 = CPU ์‚ฌ์šฉ๋ฅ  , awk๋กœ 80% ์ดˆ๊ณผ ํ”„๋กœ์„ธ์Šค ํ•„ํ„ฐ๋ง, xargs kill -9๋กœ ๊ฐ•์ œ ์ข…๋ฃŒ
  • ์ดํ›„ uptime์ด๋‚˜ top์œผ๋กœ CPU ์‚ฌ์šฉ๋ฅ  ์ •์ƒํ™” ํ™•์ธ

3. ๋กœ๊ทธ๊ฐ€ ํšŒ์ „(rotate)๋˜์ง€ ์•Š์•„ ๋””์Šคํฌ๊ฐ€ ๊ฐ€๋“ ์ฐจ๊ณ  ์žˆ๋‹ค. ๋ฌด์—‡์„ ํ™•์ธํ•  ๊ฒƒ์ธ๊ฐ€?

  • ํ‰๊ฐ€ ํฌ์ธํŠธ: ๋กœ๊น… ์‹œ์Šคํ…œ๊ณผ ๋””์Šคํฌ ์ ๊ฒ€ ๋Šฅ๋ ฅ

  • ์ ‘๊ทผ ๋ฐฉ๋ฒ•: ๋””์Šคํฌ ์‚ฌ์šฉ๋Ÿ‰ ํ™•์ธ:

df -h
  • ๋กœ๊ทธ ํŒŒ์ผ ํฌ๊ธฐ๋ณ„ ํ™•์ธ:
ls -lhS /var/log
  • logrotate ์‹œ๋ฎฌ๋ ˆ์ด์…˜:
logrotate -d /etc/logrotate.conf
  • ํฌ๋ก  ์žก ์‹คํ–‰ ํ™•์ธ:
crontab -l
grep CRON /var/log/syslog

4. 2GB ํฌ๊ธฐ์˜ ๋กœ๊ทธ ํŒŒ์ผ์—์„œ ๋งˆ์ง€๋ง‰ 100์ค„๋งŒ ์ •๊ธฐ์ ์œผ๋กœ ๊ฐ€์ ธ์™€์•ผ ํ•œ๋‹ค.

ํ‰๊ฐ€ ํฌ์ธํŠธ: ๋Œ€์šฉ๋Ÿ‰ ๋กœ๊ทธ ํŒŒ์ผ์„ ํšจ์œจ์ ์œผ๋กœ ๋‹ค๋ฃจ๊ณ  ์ž๋™ํ™”ํ•˜๋Š” ๋Šฅ๋ ฅ

์ ‘๊ทผ ๋ฐฉ๋ฒ•:

  • ๋น ๋ฅธ ์ ‘๊ทผ: tail์€ ํŒŒ์ผ ๋๋ถ€๋ถ„๋งŒ ์ฝ๊ธฐ ๋•Œ๋ฌธ์— ๋Œ€์šฉ๋Ÿ‰ ๋กœ๊ทธ์— ์ ํ•ฉ
tail -n 100 /path/to/large.log
  • ์Šคํฌ๋ฆฝํŠธํ™” & ์ž๋™ํ™”:
#!/bin/bash
tail -n 100 /path/to/large.log >> /var/log/summary.log
  • ํฌ๋ก ์œผ๋กœ ๋“ฑ๋ก (crontab -e): 30๋ถ„๋งˆ๋‹ค ์‹คํ–‰ (00:00, 00:30, 01:00 โ€ฆ)
*/30 * * * * /path/to/script.sh

5. CPU, ๋ฉ”๋ชจ๋ฆฌ, ๋””์Šคํฌ ์‚ฌ์šฉ๋Ÿ‰์„ 30๋ถ„๋งˆ๋‹ค ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ์‹ถ๋‹ค.

ํ‰๊ฐ€ ํฌ์ธํŠธ: ๊ฒฝ๋Ÿ‰ ๋ชจ๋‹ˆํ„ฐ๋ง ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•ด ์‹œ์Šคํ…œ ์ƒํƒœ๋ฅผ ์žฅ๊ธฐ๊ฐ„ ๊ธฐ๋กํ•˜๋Š” ๋Šฅ๋ ฅ

์ ‘๊ทผ ๋ฐฉ๋ฒ•:

  • ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ
#!/bin/bash
echo "=== $(date) ===" >> /var/log/resource.log

# top ์š”์•ฝ
top -b -n1 | head -5 >> /var/log/resource.log

# ๋””์Šคํฌ ์‚ฌ์šฉ๋Ÿ‰
df -h >> /var/log/resource.log

# ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰
free -m >> /var/log/resource.log
  • ํฌ๋ก  ๋“ฑ๋ก:
*/30 * * * * /path/to/resource.sh

์ด๋ ‡๊ฒŒ ์Œ“์ธ ๋กœ๊ทธ๋Š” ์žฅ๊ธฐ ํŒจํ„ด ๋ถ„์„์ด๋‚˜ ์„ฑ๋Šฅ ์ €ํ•˜ ์›์ธ ์ถ”์ ์— ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๊ณ , ๋ฉด์ ‘์—์„œ ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ ๋Šฅ๋ ฅ์„ ์–ดํ•„ํ•˜๊ธฐ์—๋„ ์ข‹์Šต๋‹ˆ๋‹ค.


:backhand_index_pointing_right: ํ”„๋กœ์ ํŠธ์™€ ํ•™์Šต ๋ฆฌ์†Œ์Šค

:backhand_index_pointing_right: GitHub์— ํ•™์Šต ๊ณผ์ •์„ ๊ธฐ๋กํ•˜๊ธฐ:

  • ์‹ค์Šต + ๋…ธํŠธ ์ •๋ฆฌ : ์ฃผ์ œ๋ณ„ ํด๋”๋ฅผ ๋งŒ๋“ค์–ด ์Šคํฌ๋ฆฝํŠธ์™€ ๋…ธํŠธ๋ฅผ ์ปค๋ฐ‹ํ•˜๊ณ , ์„ค๋ช…์ด ๋‹ด๊ธด README ํŒŒ์ผ ์ž‘์„ฑํ•˜๊ณ , ํ•™์Šต ๋‚ด์šฉ์„ ๊ณต์œ ํ•˜๋ฉด ๊ธฐ์–ต์—๋„ ์˜ค๋ž˜ ๋‚จ๊ณ  ๊ฐ€์‹œ์„ฑ๋„ ๋†’์•„์ง‘๋‹ˆ๋‹ค.

:backhand_index_pointing_right: Linux ํ•™์Šต์„ ์œ„ํ•œ ์ถ”์ฒœ GitHub ์ €์žฅ์†Œ

[์ถœ์ฒ˜] Linux for DevOps

5 Likes