DevOps

๐Ÿ”ญ[Monitoring ํŠน์ง‘] PLG ์Šคํƒ๊ณผ ELK ์Šคํƒ ๋น„๊ต

๋กœ๊ทธ ๋ชจ๋‹ˆํ„ฐ๋ง ํŠน์ง‘์€ ์ด๋ฒˆ์ฃผ๊นŒ์ง€ ๊ณ„์†๋ฉ๋‹ˆ๋‹ค.

2024.02.12 | ์กฐํšŒ 878 |
0
|

DevOps ์—ฌํ–‰์„ ์œ„ํ•œ ์†Œ์‹์ง€

DevOps, ํด๋ผ์šฐ๋“œ, IT ๊ธฐ์ˆ  ๊ด€๋ จ ์ตœ์‹  ์†Œ์‹๊ณผ ์ •๋ณด๋ฅผ ์ •๋ฆฌํ•ด์„œ ์ฃผ 1ํšŒ ์ด๋ฉ”์ผ๋กœ ์ „ํ•ด๋“œ๋ฆฝ๋‹ˆ๋‹ค๐Ÿ˜บ

์•ˆ๋…•ํ•˜์„ธ์š” ๊ตฌ๋…์ž๋‹˜, ์ตœ์‹  DevOps ์†Œ์‹์„ ์ •๋ฆฌํ•ด์„œ ๊ณต์œ ํ•ด๋“œ๋ฆฌ๋Š” DevOps ์—ฌํ–‰์„ ์œ„ํ•œ ์†Œ์‹์ง€์ž…๋‹ˆ๋‹ค.

2024๋…„ ๊ฐ‘์ง„๋…„, ์ฒญ๋ฃก์˜ ํ•ด๊ฐ€ ๋ฐ์•˜์Šต๋‹ˆ๋‹ค. ์˜ฌ ํ•œ ํ•ด๋„ ๊ตฌ๋…์ž๋‹˜์ด ๊ฑด๊ฐ•ํ•˜๊ณ  ํ–‰๋ณตํ•˜๊ธธ ๋ฐ”๋ผ๊ฒ ์Šต๋‹ˆ๋‹ค. DevOps ์—ฌํ–‰์„ ์œ„ํ•œ ์†Œ์‹์ง€๋„ ๊ตฌ๋…์ž๋‹˜๊ป˜ ๊ณ„์†ํ•ด์„œ ์œ ์ตํ•œ DevOps ์ •๋ณด๋ฅผ ๊ณต์œ ๋“œ๋ฆด ํ…Œ๋‹ˆ ์•ž์œผ๋กœ๋„ ์ž˜ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๐Ÿ˜€

์ด๋ฒˆ ์†Œ์‹์ง€๋Š” ์ง€๋‚œ ํšŒ์— ๊ณ„์† ์ด์–ด์„œ Monitoring ํŠน์ง‘์œผ๋กœ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค. ์•ž์„œ ๋กœ๊ทธ ๋ชจ๋‹ˆํ„ฐ๋ง ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ์†Œ๊ฐœ์™€ ELK ์Šคํƒ์— ๋Œ€ํ•ด ์‚ดํŽด๋ดค๋Š”๋ฐ์š”. ์ด๋ฒˆ์—” ์ตœ๊ทผ ์ฃผ๋ชฉ๋ฐ›๋Š” PLG ์Šคํƒ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ , ๋‘ ์Šคํƒ์„ ๋น„๊ตํ•˜๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์ ธ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๐Ÿค“ 

 

๐Ÿ”ŽPLG ์Šคํƒ ์‚ดํŽด๋ณด๊ธฐ

PLG ์Šคํƒ์€ Promtail, Loki, Grafana๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.
PLG ์Šคํƒ์€ Promtail, Loki, Grafana๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

PLG ์Šคํƒ์€ ๊ฐ ๊ตฌ์„ฑ ์š”์†Œ์ธ Promtail, Loki, Grafana์˜ ์•ž๊ธ€์ž๋ฅผ ๋”ด ์ด๋ฆ„์ธ๋ฐ์š”. ์ตœ๊ทผ ๋“ค์–ด ๋กœ๊ทธ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ถ„์•ผ์—์„œ ์ธ๊ธฐ๋ฅผ ์–ป๊ณ ์žˆ๋Š” ํˆด ๋ชจ์Œ์ž…๋‹ˆ๋‹ค.

์ง€๋‚œ ํšŒ์˜ ELK์™€ ๋น„์Šทํ•˜๊ฒŒ, PLG ์Šคํƒ๋„ ๋กœ๊ทธ๋ฅผ ์ˆ˜์ง‘ ๋ฐ ์ „๋‹ฌํ•˜๋Š” ํˆด(Promtail), ๋กœ๊ทธ๋ฅผ ์ €์žฅ ๋ฐ ์กฐํšŒํ•˜๋Š” ํˆด(Loki), ๋กœ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ๊ฐํ™”ํ•˜๋Š” ํˆด(Grafana)๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐฉ๊ธˆ ์„ค๋ช…๋งŒ ๋“ค์–ด์„œ๋Š” ELK ์Šคํƒ๊ณผ ๊ฑฐ์˜ ๋น„์Šทํ•œ๋ฐ, ์ตœ๊ทผ PLG ์Šคํƒ์ด ์ธ๊ธฐ๋ฅผ ์–ป๊ณ ์žˆ๋Š” ์ด์œ ๊ฐ€ ๊ถ๊ธˆํ•˜์‹ค ํ…๋ฐ์š”. ๊ฐ€์žฅ ๋Œ€ํ‘œ์ ์ธ ์ด์œ  ๋‘ ๊ฐ€์ง€๋ฅผ ๊ฐ„๋‹จํžˆ ์ •๋ฆฌํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • Loki๋Š” ๋กœ๊ทธ์˜ ๋ณธ๋ฌธ(Contents)์ด ์•„๋‹Œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ(Label)๋ฅผ ์ธ๋ฑ์‹ฑํ•˜๋Š” ๋ฐฉ์‹์„ ์ฑ„ํƒํ•˜์—ฌ ๋น„์šฉ ํšจ์œจ์ ์ด๋‹ค.
  • Loki๋Š” ๋ฐ์ดํ„ฐ ์กฐํšŒ ์ปดํฌ๋„ŒํŠธ์™€ ๋ฐ์ดํ„ฐ ์ €์žฅ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ณ„๊ฐœ๋กœ ์กฐ์ • ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ™•์žฅ์— ์œ ๋ฆฌํ•˜๋‹ค.

 

์ด๋Ÿฐ PLG ์Šคํƒ์˜ ๊ฐ ํˆด์€ ์•„๋ž˜์™€ ๊ฐ™์ด ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

  • Promtail์˜ ์—ญํ• 
    • ๋กœ์ปฌ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋กœ๊ทธ ์ˆ˜์ง‘
    • ์ˆ˜์ง‘ํ•œ ๋กœ๊ทธ๋ฅผ Loki๋กœ ์ „๋‹ฌ
  • Loki์˜ ์—ญํ• 
    • ๋กœ๊ทธ ์ €์žฅ ์š”์ฒญ์„ ๋ฐ›์œผ๋ฉด ์ฒ˜๋ฆฌ ํ›„ ํ•ด๋‹น ๋กœ๊ทธ ์ €์žฅ
    • ๋กœ๊ทธ ์กฐํšŒ ์š”์ฒญ์„ ๋ฐ›์œผ๋ฉด ์ฟผ๋ฆฌ ์ด์šฉํ•˜์—ฌ ํ•ด๋‹น ๋กœ๊ทธ ์ „๋‹ฌ
  • Grafana์˜ ์—ญํ• 
    • Loki์— ์ €์žฅ๋˜์–ด์žˆ๋Š” ๋กœ๊ทธ ํ™œ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ์‹œ๊ฐํ™” ๊ฐ€๋Šฅ

ELK ์Šคํƒ์ฒ˜๋Ÿผ PLG ์Šคํƒ๋„ ๋กœ๊ทธ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘๋ถ€ํ„ฐ ์ €์žฅ, ์‹œ๊ฐํ™”ํ•˜๋Š” ์‹œ์Šคํ…œ ๊ตฌ์ถ•์ด ๊ฐ€๋Šฅํ•œ๋ฐ์š”. ๊ทธ๋ ‡๋‹ค๋ฉด ๋‘ ์Šคํƒ์€ ์–ด๋–ค ์ฐจ์ด์ ์ด ์žˆ์„๊นŒ์š”?

 

โš–ELK ์Šคํƒ๊ณผ PLG ์Šคํƒ ๋น„๊ต

ELK ์Šคํƒ๊ณผ PLG ์Šคํƒ์€ ๋น„์Šทํ•˜๋ฉด์„œ๋„ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.
ELK ์Šคํƒ๊ณผ PLG ์Šคํƒ์€ ๋น„์Šทํ•˜๋ฉด์„œ๋„ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

ELK ์Šคํƒ๊ณผ PLG ์Šคํƒ์˜ ์ฐจ์ด์ ์„ ํฌ๊ฒŒ 3๊ฐ€์ง€๋กœ ์ •๋ฆฌํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์‚ฌ์šฉํ•˜๋Š” ์ฟผ๋ฆฌ ์–ธ์–ด
    • Elasticsearch: Query DSL, Lucene
      • ์„ฑ์ˆ™ํ•˜๊ณ  ๊ฐ•๋ ฅํ•œ ๊ฒ€์ƒ‰ ์—”์ง„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
      • ๋ณต์žกํ•œ ์ฟผ๋ฆฌ ๋ฐ ํ•„ํ„ฐ๋ง ๊ฐ€๋Šฅ
      • ๋กœ๊ทธ ๋ฐ์ดํ„ฐ์˜ ๋‚ด์šฉ ๊ฒ€์ƒ‰ ๋ฐ ๊ด€๋ จ๋„์— ๋”ฐ๋ฅธ ์ •๋ ฌ๋„ ๊ฐ€๋Šฅ
    • Loki: LogQL
      • Elasticsearch์˜ ์ฟผ๋ฆฌ ์–ธ์–ด๋งŒํผ ์„ฑ์ˆ™ํ•˜์ง€ ์•Š์Œ
      • ๋‹จ์ˆœํ•œ ๊ฒ€์ƒ‰ ์ฟผ๋ฆฌ๋งŒ ์ง€์›
      • ๋กœ๊ทธ ๋ฐ์ดํ„ฐ์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋งŒ์œผ๋กœ ๊ฒ€์ƒ‰
  • ํ™•์žฅ์„ฑ
    • ๋‘ ์Šคํƒ ๋ชจ๋‘ ์ˆ˜ํ‰ ํ™•์žฅ(Scale-out)์ด ๊ฐ€๋Šฅ
    • PLG ์Šคํƒ์˜ ๊ฒฝ์šฐ, ๋ฐ์ดํ„ฐ ์กฐํšŒ ์ปดํฌ๋„ŒํŠธ(Read Path)์™€ ๋ฐ์ดํ„ฐ ์ €์žฅ ์ปดํฌ๋„ŒํŠธ(Write Path)์˜ ๊ทœ๋ชจ๋ฅผ ๋ณ„๊ฐœ ์กฐ์ • ๊ฐ€๋Šฅํ•˜์—ฌ ํ™•์žฅ์— ๋”์šฑ ์œ ๋ฆฌํ•จ
  • ๋น„์šฉ
    • PLG ์Šคํƒ์ด ๋งค์šฐ ์œ ๋ฆฌํ•จ
    • Loki๋Š” Elasticsearch์ฒ˜๋Ÿผ ์‹ค์ œ ๋กœ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ์ธ๋ฑ์‹ฑํ•˜๋Š” ๋ฐฉ์‹์ด ์•„๋‹Œ, ๋กœ๊ทธ์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ธ๋ฑ์‹ฑํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ
    • ์ด๋กœ ์ธํ•ด ์Šคํ† ๋ฆฌ์ง€ ๋ฐ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ๊ฐ์†Œ

 

์ด์ฒ˜๋Ÿผ ELK์™€ PLG ์Šคํƒ์€ ๋น„์Šทํ•˜๋ฉด์„œ๋„ ํ™•์‹คํ•œ ์ฐจ์ด๊ฐ€ ์กด์žฌํ•˜๋Š”๋ฐ์š”.

์ข…ํ•ฉํ•ด๋ณด๋ฉด, ๋ณต์žกํ•œ ์ฟผ๋ฆฌ๋‚˜ ํ•„ํ„ฐ๋ง ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•˜๊ณ  ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ์†Œ์Šค์˜ ๋กœ๊ทธ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•œ๋‹ค๋ฉด ELK ์Šคํƒ์„, ๋ณต์žกํ•˜์ง€ ์•Š์€ ์ฟผ๋ฆฌ๋กœ๋„ ๋กœ๊ทธ ๋ชจ๋‹ˆํ„ฐ๋ง์ด ๊ฐ€๋Šฅํ•œ ์ƒํ™ฉ์ด๋ฉด์„œ ๋น„์šฉ์„ ์ ˆ์•ฝํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด PLG ์Šคํƒ์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ๊ฒ ์Šต๋‹ˆ๋‹ค.๐Ÿ”

 

๐Ÿ”ญ๋งˆ์น˜๋ฉฐ...

์ด๋ฒˆ ์†Œ์‹์ง€์—์„  ๋กœ๊ทธ ๋ชจ๋‹ˆํ„ฐ๋ง ์‹œ์Šคํ…œ์˜ ๋‘ ๋Œ€ํ‘œ ์ฃผ์ž, PLK ์Šคํƒ๊ณผ ELK ์Šคํƒ์„ ๋น„๊ตํ•˜๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์ ธ๋ดค์Šต๋‹ˆ๋‹ค.

ํ˜น์‹œ ์ด๋ฒˆ ๋‚ด์šฉ ๊ด€๋ จํ•ด์„œ ๋” ๊ถ๊ธˆํ•œ ์ ์ด ์žˆ์œผ์‹œ๋‹ค๋ฉด ์•„๋ž˜ ๋ฉ”์ผ๋ฆฌ ๋Œ“๊ธ€ ๋‚จ๊ฒจ์ฃผ์„ธ์š”.๐Ÿ˜€

๊ทธ๋Ÿผ, ๋‹ค์Œ ์†Œ์‹์ง€์—์„œ ๋ณด๋‹ค ์•Œ์ฐจ๊ณ  ํฅ๋ฏธ๋กœ์šด ๋‚ด์šฉ์œผ๋กœ ์ฐพ์•„๋ต™๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ˜บ

 

๐Ÿ”—References

Grafana Loki

Loki architecture

Logging in Kubernetes: EFK vs PLG Stack

ELK VS Loki!

 

๋‹ค๊ฐ€์˜ฌ ๋‰ด์Šค๋ ˆํ„ฐ๊ฐ€ ๊ถ๊ธˆํ•˜์‹ ๊ฐ€์š”?

์ง€๊ธˆ ๊ตฌ๋…ํ•ด์„œ ์ƒˆ๋กœ์šด ๋ ˆํ„ฐ๋ฅผ ๋ฐ›์•„๋ณด์„ธ์š”

์ด๋ฒˆ ๋‰ด์Šค๋ ˆํ„ฐ ์–ด๋– ์…จ๋‚˜์š”?

DevOps ์—ฌํ–‰์„ ์œ„ํ•œ ์†Œ์‹์ง€ ๋‹˜์—๊ฒŒ โ˜•๏ธ ์ปคํ”ผ์™€ โœ‰๏ธ ์ชฝ์ง€๋ฅผ ๋ณด๋‚ด๋ณด์„ธ์š”!

๋Œ“๊ธ€

์˜๊ฒฌ์„ ๋‚จ๊ฒจ์ฃผ์„ธ์š”

ํ™•์ธ
์˜๊ฒฌ์ด ์žˆ์œผ์‹ ๊ฐ€์š”? ์ œ์ผ ๋จผ์ € ๋Œ“๊ธ€์„ ๋‹ฌ์•„๋ณด์„ธ์š” !
ยฉ 2024 DevOps ์—ฌํ–‰์„ ์œ„ํ•œ ์†Œ์‹์ง€

DevOps, ํด๋ผ์šฐ๋“œ, IT ๊ธฐ์ˆ  ๊ด€๋ จ ์ตœ์‹  ์†Œ์‹๊ณผ ์ •๋ณด๋ฅผ ์ •๋ฆฌํ•ด์„œ ์ฃผ 1ํšŒ ์ด๋ฉ”์ผ๋กœ ์ „ํ•ด๋“œ๋ฆฝ๋‹ˆ๋‹ค๐Ÿ˜บ

๋‰ด์Šค๋ ˆํ„ฐ ๋ฌธ์˜eduukulelekim@gmail.com

์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ ์„œ๋น„์Šค ์†Œ๊ฐœ์„œ ์˜ค๋ฅ˜ ๋ฐ ๊ธฐ๋Šฅ ๊ด€๋ จ ์ œ๋ณด

์„œ๋น„์Šค ์ด์šฉ ๋ฌธ์˜admin@team.maily.so

๋ฉ”์ผ๋ฆฌ ์‚ฌ์—…์ž ์ •๋ณด

๋ฉ”์ผ๋ฆฌ (๋Œ€ํ‘œ์ž: ์ดํ•œ๊ฒฐ) | ์‚ฌ์—…์ž๋ฒˆํ˜ธ: 717-47-00705 | ์„œ์šธ ์„œ์ดˆ๊ตฌ ๊ฐ•๋‚จ๋Œ€๋กœ53๊ธธ 8, 8์ธต 11-7ํ˜ธ

์ด์šฉ์•ฝ๊ด€ | ๊ฐœ์ธ์ •๋ณด์ฒ˜๋ฆฌ๋ฐฉ์นจ | ์ •๊ธฐ๊ฒฐ์ œ ์ด์šฉ์•ฝ๊ด€