DevOps

[DevOps] AWS CloudWatch๋ฅผ ์‚ฌ์šฉํ•œ ๋กœ๊ทธ ํ™•์ธ ๋ฐฉ๋ฒ•

๋ฐ๋ณด ๐Ÿ˜Ž 2024. 12. 6. 15:23
728x90
๋ฐ˜์‘ํ˜•

 


AWS CloudWatch๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ๊ทธ์™€ Nginx access ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๐ŸŒ

AWS CloudWatch๋Š” ํด๋ผ์šฐ๋“œ์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์„œ๋ฒ„ ์ƒํƒœ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ , ๋กœ๊ทธ๋ฅผ ๋ถ„์„ํ•˜๋Š” ๋ฐ ์œ ์šฉํ•œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

ํŠนํžˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์˜ค๋ฅ˜ ์ถ”์ ์ด๋‚˜ Nginx ๋กœ๊ทธ์—์„œ ํŠธ๋ž˜ํ”ฝ์„ ๋ถ„์„ํ•  ๋•Œ ๋„ˆ๋ฌด๋‚˜ ์ค‘์š”ํ•œ ๋„๊ตฌ์ฃ ! ๐Ÿ™Œ


1๏ธโƒฃ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ๊ทธ ํ™•์ธํ•˜๊ธฐ ๐Ÿ’ป

์™œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ๊ทธ๊ฐ€ ์ค‘์š”ํ•œ๊ฐ€์š”? ๐Ÿค”

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ๊ทธ๋Š” ์ฝ”๋“œ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€, ๋ฌธ์ œ๋Š” ์–ด๋””์„œ ๋ฐœ์ƒํ–ˆ๋Š”์ง€ ์ถ”์ ํ•  ์ˆ˜ ์žˆ๋Š” ์†Œ์ค‘ํ•œ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ์–ด์š”.

์˜ค๋ฅ˜๋‚˜ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋กœ๊ทธ์—์„œ ๋ฐ”๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋น ๋ฅด๊ฒŒ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

์ฃผ์š” ๋ชฉ์ :

  • ๐Ÿ’ฅ ์˜ค๋ฅ˜ ์ถ”์ : ์ฝ”๋“œ์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ, ๋กœ๊ทธ์—์„œ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋‚˜ ์˜ˆ์™ธ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”.
  • โšก ์„ฑ๋Šฅ ๋ถ„์„: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์–ผ๋งˆ๋‚˜ ์ž˜ ๋™์ž‘ํ•˜๋Š”์ง€, ์„ฑ๋Šฅ ์ด์Šˆ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋Š”์ง€๋„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์ฃ .
  • ๐Ÿ‘ฅ ์‚ฌ์šฉ์ž ํ™œ๋™ ์ถ”์ : ์–ด๋–ค ํŽ˜์ด์ง€๋‚˜ ๊ธฐ๋Šฅ์ด ์ž˜ ์‚ฌ์šฉ๋˜๋Š”์ง€, ์–ด๋–ค ์š”์ฒญ์ด ์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”.

 

AWS CloudWatch์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ๊ทธ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ• ๐Ÿ“Š

  1. AWS Management Console์— ๋กœ๊ทธ์ธํ•˜๊ณ , ์ƒ๋‹จ ๊ฒ€์ƒ‰์ฐฝ์—์„œ CloudWatch๋ฅผ ๊ฒ€์ƒ‰ํ•œ ํ›„ ํด๋ฆญ! ๐Ÿ‘‡
  2. ์™ผ์ชฝ ๋ฉ”๋‰ด์—์„œ Logs๋ฅผ ํด๋ฆญํ•˜์—ฌ ๋กœ๊ทธ ๊ทธ๋ฃน์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ด๊ณณ์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ๊ทธ ๊ทธ๋ฃน์„ ์ฐพ์•„ ํด๋ฆญ!
  3. ๋กœ๊ทธ ๊ทธ๋ฃน์„ ํด๋ฆญํ•˜๋ฉด ๋กœ๊ทธ ์ŠคํŠธ๋ฆผ์ด ๋‚˜ํƒ€๋‚˜์š”. ์—ฌ๊ธฐ์— ๋“ค์–ด๊ฐ€์„œ ๋กœ๊ทธ ๋‚ด์šฉ์„ ์‚ดํŽด๋ณผ ์ˆ˜ ์žˆ๋‹ต๋‹ˆ๋‹ค. ๐Ÿ’ก
  4. ๋กœ๊ทธ ๋‚ด์šฉ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‹œ๊ฐ„์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜๋Š”๋ฐ์š”, ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋‚˜ ์ค‘์š”ํ•œ ๋กœ๊ทธ๋งŒ ๋ณด๋ ค๋ฉด ํ•„ํ„ฐ๋ง ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜์„ธ์š”! ์˜ˆ๋ฅผ ๋“ค์–ด, ERROR๋‚˜ Exception์„ ๊ฒ€์ƒ‰ํ•˜๋ฉด ์˜ค๋ฅ˜ ๋กœ๊ทธ๋งŒ ์™์™ ๋ฝ‘์„ ์ˆ˜ ์žˆ์–ด์š”! ๐Ÿ”

 

๐Ÿ“Œ ํŒ!

CloudWatch Logs Insights์—์„œ ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋กœ๊ทธ ๋ถ„์„์ด ๋”์šฑ ๊ฐ„ํŽธํ•ด์ ธ์š”!

์˜ˆ๋ฅผ ๋“ค์–ด, ์ตœ๊ทผ ๋ฐœ์ƒํ•œ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ํ™•์ธํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ์ฟผ๋ฆฌ๋ฅผ ์ž…๋ ฅํ•ด๋ณด์„ธ์š”!

fields @timestamp, @message
| filter @message like /ERROR/
| sort @timestamp desc

2๏ธโƒฃ Nginx Access ๋กœ๊ทธ ํ™•์ธํ•˜๊ธฐ ๐ŸŒ

Nginx Access ๋กœ๊ทธ, ์™œ ์ค‘์š”ํ• ๊นŒ์š”? ๐Ÿง

Nginx Access ๋กœ๊ทธ๋Š” ์›น ์„œ๋ฒ„๊ฐ€ ๋ฐ›์€ ์š”์ฒญ๊ณผ ์‘๋‹ต ์ •๋ณด๋ฅผ ๊ธฐ๋กํ•œ ๋กœ๊ทธ์ธ๋ฐ์š”,

์ด๋ฅผ ํ†ตํ•ด ํŠธ๋ž˜ํ”ฝ ๋ถ„์„, ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง, ๋ณด์•ˆ ๊ฒ€์‚ฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ์–ด์š”.

์˜ˆ๋ฅผ ๋“ค์–ด, ์›น์‚ฌ์ดํŠธ์— ๋น„์ •์ƒ์ ์ธ ํŠธ๋ž˜ํ”ฝ์ด ๋“ค์–ด์˜จ๋‹ค๋ฉด ๋ฐ”๋กœ ์•Œ ์ˆ˜ ์žˆ๊ฒ ์ฃ ? ๐Ÿ˜

 

์ฃผ์š” ๋ชฉ์ :

  • ๐Ÿ“ˆ ํŠธ๋ž˜ํ”ฝ ๋ถ„์„: ์›น์‚ฌ์ดํŠธ์—์„œ ์–ด๋–ค ํŽ˜์ด์ง€๊ฐ€ ์ธ๊ธฐ๊ฐ€ ์žˆ๋Š”์ง€, ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ์š”์ฒญ์ด ๋“ค์–ด์™”๋Š”์ง€ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์–ด์š”.
  • โฑ๏ธ ์„ฑ๋Šฅ ๋ชจ๋‹ˆํ„ฐ๋ง: ์‘๋‹ต ์‹œ๊ฐ„์ด ๋А๋ฆฌ๋‹ค๋ฉด ๊ทธ ์›์ธ์„ ๋กœ๊ทธ์—์„œ ์ฐพ์•„๋‚ผ ์ˆ˜ ์žˆ์–ด์š”.
  • ๐Ÿ›ก๏ธ ๋ณด์•ˆ: ๋น„์ •์ƒ์ ์ธ ์š”์ฒญ์ด๋‚˜ ์•…์˜์ ์ธ ๊ณต๊ฒฉ์„ ๋ฏธ๋ฆฌ ํƒ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ต๋‹ˆ๋‹ค.

Nginx Access ๋กœ๊ทธ๋ฅผ CloudWatch์—์„œ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ• ๐Ÿง

  1. ๋จผ์ €, Nginx ๋กœ๊ทธ ํŒŒ์ผ ์œ„์น˜๋ฅผ ํ™•์ธํ•ด๋ด์š”! ๊ธฐ๋ณธ์ ์œผ๋กœ Nginx์˜ Access ๋กœ๊ทธ๋Š” /var/log/nginx/access.log์— ์ €์žฅ๋ผ์š”. (์„ค์ •์— ๋”ฐ๋ผ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์–ด์š”!) ๐Ÿ”ง
  2. Nginx ๋กœ๊ทธ๋ฅผ CloudWatch์— ๋ณด๋‚ด๋ ค๋ฉด, CloudWatch Logs ์—์ด์ „ํŠธ๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค!

 

CloudWatch Logs ์—์ด์ „ํŠธ ์„ค์น˜ ๋ฐ ์„ค์ •

  1. AWS CloudWatch Logs ์—์ด์ „ํŠธ๋ฅผ ์„ค์น˜ํ•ด๋ณด์„ธ์š”. (EC2 ์„œ๋ฒ„์—์„œ ์‹คํ–‰)
  2. sudo yum install awslogs
  3. ๊ทธ๋‹ค์Œ, /etc/awslogs/awslogs.conf ํŒŒ์ผ์„ ์—ด์–ด Nginx ๋กœ๊ทธ ํŒŒ์ผ ๊ฒฝ๋กœ๋ฅผ ์„ค์ •
  4. [/var/log/nginx/access.log] log_group_name = nginx-access-logs log_stream_name = {instance_id} file = /var/log/nginx/access.log
  5. ์ด์ œ CloudWatch Logs ์—์ด์ „ํŠธ๋ฅผ ์‹œ์ž‘
  6. sudo service awslogs start

 

CloudWatch์—์„œ Nginx Access ๋กœ๊ทธ ํ™•์ธํ•˜๊ธฐ

  1. CloudWatch Console์— ๊ฐ€์„œ Logs ๋ฉ”๋‰ด๋ฅผ ํด๋ฆญํ•œ ๋’ค, nginx-access-logs ๋กœ๊ทธ ๊ทธ๋ฃน์„ ์ฐพ๊ณ  ํด๋ฆญ
  2. ๋กœ๊ทธ ์ŠคํŠธ๋ฆผ์„ ์„ ํƒํ•˜๋ฉด, ๋ฐ”๋กœ Nginx Access ๋กœ๊ทธ๋ฅผ ํ™•์ธ



3๏ธโƒฃ CloudWatch Logs์—์„œ ํšจ์œจ์ ์œผ๋กœ ๋กœ๊ทธ ๋ถ„์„ํ•˜๊ธฐ ๐Ÿ”

 

๋กœ๊ทธ ํ•„ํ„ฐ๋ง์„ ํ™œ์šฉํ•ด๋ณด์„ธ์š”! ๐Ÿ”ฅ

CloudWatch์—์„œ ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•  ๋•Œ, ํ•„ํ„ฐ๋ฅผ ์ž˜ ํ™œ์šฉํ•˜๋ฉด ๋” ๋น ๋ฅด๊ฒŒ ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์–ด์š”!

์˜ˆ๋ฅผ ๋“ค์–ด, ํŠน์ • ์ƒํƒœ ์ฝ”๋“œ๋กœ ์š”์ฒญ์„ ํ•„ํ„ฐ๋งํ•˜๊ฑฐ๋‚˜, ์˜ค๋ฅ˜ ๋กœ๊ทธ๋งŒ ์ฐพ์•„๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

fields @timestamp, @message
| filter status = 500
| sort @timestamp desc

 

CloudWatch Dashboards๋กœ ์‹ค์‹œ๊ฐ„ ๋ชจ๋‹ˆํ„ฐ๋ง ๐Ÿ“Š

์‹ค์‹œ๊ฐ„์œผ๋กœ ๋กœ๊ทธ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, CloudWatch Dashboards๋ฅผ ์„ค์ •ํ•ด๋ณด์„ธ์š”! ๋Œ€์‹œ๋ณด๋“œ์— ๋ฉ”ํŠธ๋ฆญ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์ค‘์š”ํ•œ ๋กœ๊ทธ๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ์ถ”์ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 


 

 

728x90
๋ฐ˜์‘ํ˜•
loading