์๋ ํ์ธ์ ๊ตฌ๋ ์๋, ์ต์ DevOps ์์์ ์ ๋ฆฌํด์ ๊ณต์ ํด๋๋ฆฌ๋ DevOps ์ฌํ์ ์ํ ์์์ง์ ๋๋ค.
2024๋ ๊ฐ์ง๋ , ์ฒญ๋ฃก์ ํด๊ฐ ๋ฐ์์ต๋๋ค. ์ฌ ํ ํด๋ ๊ตฌ๋ ์๋์ด ๊ฑด๊ฐํ๊ณ ํ๋ณตํ๊ธธ ๋ฐ๋ผ๊ฒ ์ต๋๋ค. DevOps ์ฌํ์ ์ํ ์์์ง๋ ๊ตฌ๋ ์๋๊ป ๊ณ์ํด์ ์ ์ตํ DevOps ์ ๋ณด๋ฅผ ๊ณต์ ๋๋ฆด ํ ๋ ์์ผ๋ก๋ ์ ๋ถํ๋๋ฆฝ๋๋ค. ๐
์ด๋ฒ ์์์ง๋ ์ง๋ ํ์ ๊ณ์ ์ด์ด์ Monitoring ํน์ง์ผ๋ก ์งํ๋ฉ๋๋ค. ์์ ๋ก๊ทธ ๋ชจ๋ํฐ๋ง ์์คํ ์ ๋ํ ์๊ฐ์ ELK ์คํ์ ๋ํด ์ดํด๋ดค๋๋ฐ์. ์ด๋ฒ์ ์ต๊ทผ ์ฃผ๋ชฉ๋ฐ๋ PLG ์คํ์ ๋ํด ์์๋ณด๊ณ , ๋ ์คํ์ ๋น๊ตํ๋ ์๊ฐ์ ๊ฐ์ ธ๋ณด๊ฒ ์ต๋๋ค. ๐ค
๐PLG ์คํ ์ดํด๋ณด๊ธฐ
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 ์คํ์ ์ฐจ์ด์ ์ ํฌ๊ฒ 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
Logging in Kubernetes: EFK vs PLG Stack
์๊ฒฌ์ ๋จ๊ฒจ์ฃผ์ธ์